Skip to content

Instantly share code, notes, and snippets.

@aligkts
Last active November 18, 2020 12:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aligkts/16cc9f489bf94309e3d2cfd11908e412 to your computer and use it in GitHub Desktop.
Save aligkts/16cc9f489bf94309e3d2cfd11908e412 to your computer and use it in GitHub Desktop.
BaseActivity
package com.borusan.eta.base
import android.content.IntentFilter
import android.net.ConnectivityManager
import android.os.Bundle
import android.view.View
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.ViewModelProviders
import com.borusan.eta.R
import com.borusan.eta.internal.util.functional.lazyThreadSafetyNone
import com.google.android.material.snackbar.Snackbar
import dagger.android.support.DaggerAppCompatActivity
import java.lang.reflect.ParameterizedType
import javax.inject.Inject
abstract class BaseActivity<VM : BaseAndroidViewModel> : DaggerAppCompatActivity(), ConnectivityReceiver.ConnectivityReceiverListener {
var snackBar: Snackbar? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
registerReceiver(ConnectivityReceiver(),
IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)
)
}
private fun showSnackBar(view: View, message: String) {
snackBar = Snackbar.make(view, message, Snackbar.LENGTH_LONG)
snackBar?.duration = Snackbar.LENGTH_INDEFINITE
snackBar?.show()
}
override fun onResume() {
super.onResume()
ConnectivityReceiver.connectivityReceiverListener = this
}
override fun onNetworkConnectionChanged(isConnected: Boolean) {
if (!isConnected) {
showSnackBar(findViewById(R.id.drawer_layout), "İnternet erişimin yok. Lütfen bağlantını kontrol et.")
} else {
snackBar?.dismiss()
}
}
@Inject
lateinit var viewModelFactory: ViewModelProvider.Factory
@Suppress("UNCHECKED_CAST")
protected val viewModel by lazyThreadSafetyNone {
val persistentViewModelClass = (javaClass.genericSuperclass as ParameterizedType)
.actualTypeArguments[0] as Class<VM>
return@lazyThreadSafetyNone ViewModelProviders.of(this, viewModelFactory)
.get(persistentViewModelClass)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment