Skip to content

Instantly share code, notes, and snippets.

View DHosseiny's full-sized avatar
🏠
Working from home

Seyyed davud hosseiny DHosseiny

🏠
Working from home
View GitHub Profile
@DHosseiny
DHosseiny / MainActivity.kt
Created June 22, 2020 09:32
Adding a view to UI from Background Thread
import android.content.Context
import android.os.Bundle
import android.os.Handler
import android.os.HandlerThread
import android.os.Message
import android.view.WindowManager
import android.widget.ImageView
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
@DHosseiny
DHosseiny / DataStoreExts.kt
Last active November 9, 2021 07:57
DataStore Delegation
import androidx.datastore.core.DataStore
import androidx.datastore.preferences.core.Preferences
import androidx.datastore.preferences.core.edit
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
@DHosseiny
DHosseiny / build.gradle
Last active May 18, 2023 10:56
Periodically migrate multi-module app from dagger to hilt
implementation "com.google.dagger:hilt-android:$hilt-latest-version"
kapt "com.google.dagger:hilt-android-compiler:$hilt-latest-version"
@DHosseiny
DHosseiny / MyApplication.kt
Last active May 18, 2023 10:59
Periodically migrate multi-module app from dagger to hilt
@HiltAndroidApp
class MyApplication : Application() {
// ...
}
@DHosseiny
DHosseiny / build.gradle
Created May 26, 2023 11:46
Migrate to hilt
implementation "androidx.hilt:hilt-work:$hilt-work-latest-version"
kapt "androidx.hilt:hilt-compiler:$hilt-work-latest-version"
@DHosseiny
DHosseiny / build.gradle
Last active May 26, 2023 13:52
plugins
plugins {
// ...
id 'dagger.hilt.android.plugin'
}
@DHosseiny
DHosseiny / DaggerWorkerFactory.kt
Created May 26, 2023 13:13
DaggerWorkerFactory
class DaggerWorkerFactory(private val workerFactories: WorkerProviders) : WorkerFactory() {
override fun createWorker(
context: Context,
workerClassName: String,
workerParameters: WorkerParameters
): ListenableWorker? {
return try {
val factoryEntry = workerFactories.entries
.find { Class.forName(workerClassName).isAssignableFrom(it.key) }
@DHosseiny
DHosseiny / AggregatorWorkerFactory.kt
Last active May 26, 2023 13:37
AggregatorWorkerFactory
/**
* This class aggregates hilt and dagger worker providers.
* TODO: This class can get removed when fully migrated to hilt
*/
class AggregatorWorkerFactory(
private val hiltWorkerFactory: HiltWorkerFactory,
private val daggerWorkerFactory: DaggerWorkerFactory
) : WorkerFactory() {
override fun createWorker(
@DHosseiny
DHosseiny / MyApplication2.kt
Created May 26, 2023 13:29
MyApplication2
@HiltAndroidApp
class MyApplication : Application(), Configuration.Provider {
@Inject
lateinit var hiltWorkerFactory: HiltWorkerFactory
override fun getWorkManagerConfiguration(): Configuration {
return Configuration.Builder()
.setWorkerFactory(hiltWorkerFactory)
@DHosseiny
DHosseiny / MyApplication3.kt
Created May 26, 2023 13:35
MyApplication3
@HiltAndroidApp
class MyApplication : Application(), Configuration.Provider {
@Inject
lateinit var hiltWorkerFactory: HiltWorkerFactory
private val workerProviders =
HashMap<Class<out ListenableWorker>, Provider<AssistedWorkerFactory>>()