Skip to content

Instantly share code, notes, and snippets.

View Morteza-QN's full-sized avatar

Morteza Qorbani Nezhad Morteza-QN

  • Adorateb
  • Tehran, Iran
View GitHub Profile
@Morteza-QN
Morteza-QN / one
Created June 14, 2024 15:56
Package Hierarchy Guide
com.yourappname
├── data
│ ├── model
│ ├── repository
│ ├── network
│ └── database
├── ui
│ ├── activities
@Suppress("DSL_SCOPE_VIOLATION")
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.kapt)
alias(libs.plugins.hilt.gradle)
alias(libs.plugins.ksp)
}
android {
fun hasNetwork(context: Context): Boolean {
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val nw = connectivityManager.activeNetwork ?: return false
val actNw = connectivityManager.getNetworkCapabilities(nw) ?: return false
return when {
actNw.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true
actNw.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true
actNw.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> true
actNw.hasTransport(NetworkCapabilities.TRANSPORT_BLUETOOTH) -> true
else -> false
import android.content.*
import android.net.Uri
import android.provider.Settings
class ActivityHelper {
companion object {
@JvmStatic
@Morteza-QN
Morteza-QN / Logger.kt
Created April 21, 2024 12:11
logger on file
import org.jetbrains.annotations.NonNls
import timber.log.Timber
import java.io.File
class Logger {
private lateinit var cacheDir: File
companion object {
@Morteza-QN
Morteza-QN / .editorconfig
Last active February 13, 2024 09:25
Code style for editor Config
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = false
indent_style = space
indent_size = 4
max_line_length = 120
@Morteza-QN
Morteza-QN / build.gradle.kts
Created December 16, 2023 06:53
config ktlint
// ktlint = { id = "org.jlleitschuh.gradle.ktlint", version.ref = "ktlint" } catalog ktlint = "12.0.3"
ktlint {
version.set("1.0.1")
android.set(true)
debug.set(true)
verbose.set(true)
outputToConsole.set(true)
outputColorName.set("RED")
ignoreFailures.set(false)
enableExperimentalRules.set(true)
@Morteza-QN
Morteza-QN / Permissions.kt
Created March 19, 2023 06:11
permission runtime management
import android.Manifest
object Permissions {
const val CAMERA = Manifest.permission.CAMERA
const val READ_EXTERNAL_STORAGE = Manifest.permission.READ_EXTERNAL_STORAGE
const val WRITE_EXTERNAL_STORAGE = Manifest.permission.WRITE_EXTERNAL_STORAGE
}
@Morteza-QN
Morteza-QN / BaseActivity.kt
Last active May 9, 2023 08:32
custom abstract class
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.viewbinding.ViewBinding
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.*
import javax.inject.Inject
@AndroidEntryPoint
abstract class BaseActivity<T : ViewBinding> : AppCompatActivity(), BaseView {
@Morteza-QN
Morteza-QN / connectivity.kt
Created March 18, 2023 17:05
check for internet connectivity when the network state changes
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val networkInfo = connectivityManager.activeNetworkInfo
return networkInfo != null && networkInfo.isConnected
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val network = connectivityManager.activeNetwork
val capabilities = connectivityManager.getNetworkCapabilities(network)
return capabilities?.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) == true
fun isInternetAvailable(): Boolean {