Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e8661973 authored by Austin Wang's avatar Austin Wang
Browse files

Add dispatcher module for Hilt injection (2/3)

Make Injector injectable so the existing dependencies can be access by the new classes via injecting Injector, and the existing classes can use the new class via Injector by injecting new classes into Injector.
Inject dispatchers for both world.

Bug: 288128417
Test: launch picker

Change-Id: I05d7db38891fd5320d3efc857499e3774d8da7db
parent b981d4c7
Loading
Loading
Loading
Loading
+25 −13
Original line number Diff line number Diff line
@@ -68,6 +68,8 @@ import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQui
import com.android.systemui.shared.clocks.ClockRegistry
import com.android.systemui.shared.customization.data.content.CustomizationProviderClient
import com.android.systemui.shared.customization.data.content.CustomizationProviderClientImpl
import com.android.wallpaper.dispatchers.BackgroundDispatcher
import com.android.wallpaper.dispatchers.MainDispatcher
import com.android.wallpaper.model.LiveWallpaperInfo
import com.android.wallpaper.model.WallpaperColorsViewModel
import com.android.wallpaper.model.WallpaperInfo
@@ -85,9 +87,19 @@ import com.android.wallpaper.picker.customization.data.repository.WallpaperRepos
import com.android.wallpaper.picker.customization.domain.interactor.WallpaperInteractor
import com.android.wallpaper.picker.undo.domain.interactor.SnapshotRestorer
import com.android.wallpaper.util.ScreenSizeCalculator
import kotlinx.coroutines.Dispatchers

open class ThemePickerInjector : WallpaperPicker2Injector(), CustomizationInjector {
import javax.inject.Inject
import javax.inject.Singleton
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope

@Singleton
open class ThemePickerInjector
@Inject
internal constructor(
    @MainDispatcher private val mainScope: CoroutineScope,
    @MainDispatcher private val mainDispatcher: CoroutineDispatcher,
    @BackgroundDispatcher private val bgDispatcher: CoroutineDispatcher,
) : WallpaperPicker2Injector(mainScope, bgDispatcher), CustomizationInjector {
    private var customizationSections: CustomizationSections? = null
    private var userEventLogger: UserEventLogger? = null
    private var prefs: WallpaperPreferences? = null
@@ -250,7 +262,7 @@ open class ThemePickerInjector : WallpaperPicker2Injector(), CustomizationInject
                                    wallpaperManager = WallpaperManager.getInstance(appContext)
                                ),
                            wallpaperPreferences = getPreferences(context = appContext),
                            backgroundDispatcher = Dispatchers.IO,
                            backgroundDispatcher = bgDispatcher,
                        ),
                    shouldHandleReload = {
                        TextUtils.equals(
@@ -290,7 +302,7 @@ open class ThemePickerInjector : WallpaperPicker2Injector(), CustomizationInject
        val client = getKeyguardQuickAffordancePickerProviderClient(context)
        val appContext = context.applicationContext
        return KeyguardQuickAffordancePickerInteractor(
            KeyguardQuickAffordancePickerRepository(client, Dispatchers.IO),
            KeyguardQuickAffordancePickerRepository(client, bgDispatcher),
            client
        ) {
            getKeyguardQuickAffordanceSnapshotRestorer(appContext)
@@ -301,7 +313,7 @@ open class ThemePickerInjector : WallpaperPicker2Injector(), CustomizationInject
        context: Context
    ): CustomizationProviderClient {
        return customizationProviderClient
            ?: CustomizationProviderClientImpl(context.applicationContext, Dispatchers.IO).also {
            ?: CustomizationProviderClientImpl(context.applicationContext, bgDispatcher).also {
                customizationProviderClient = it
            }
    }
@@ -336,7 +348,7 @@ open class ThemePickerInjector : WallpaperPicker2Injector(), CustomizationInject
                    repository =
                        NotificationsRepository(
                            scope = getApplicationCoroutineScope(),
                            backgroundDispatcher = Dispatchers.IO,
                            backgroundDispatcher = bgDispatcher,
                            secureSettingsRepository = getSecureSettingsRepository(context),
                        ),
                    snapshotRestorer = { getNotificationsSnapshotRestorer(appContext) },
@@ -360,8 +372,8 @@ open class ThemePickerInjector : WallpaperPicker2Injector(), CustomizationInject
                ?: ClockRegistryProvider(
                        context = context.applicationContext,
                        coroutineScope = getApplicationCoroutineScope(),
                        mainDispatcher = Dispatchers.Main,
                        backgroundDispatcher = Dispatchers.IO,
                        mainDispatcher = mainDispatcher,
                        backgroundDispatcher = bgDispatcher,
                    )
                    .also { clockRegistryProvider = it })
            .get()
@@ -378,7 +390,7 @@ open class ThemePickerInjector : WallpaperPicker2Injector(), CustomizationInject
                            secureSettingsRepository = getSecureSettingsRepository(appContext),
                            registry = getClockRegistry(appContext),
                            scope = getApplicationCoroutineScope(),
                            mainDispatcher = Dispatchers.Main,
                            mainDispatcher = mainDispatcher,
                        ),
                    snapshotRestorer = { getClockPickerSnapshotRestorer(appContext) },
                )
@@ -400,7 +412,7 @@ open class ThemePickerInjector : WallpaperPicker2Injector(), CustomizationInject
        interactor: ClockPickerInteractor,
    ): ClockCarouselViewModel.Factory {
        return clockCarouselViewModelFactory
            ?: ClockCarouselViewModel.Factory(interactor, Dispatchers.IO).also {
            ?: ClockCarouselViewModel.Factory(interactor, bgDispatcher).also {
                clockCarouselViewModelFactory = it
            }
    }
@@ -495,7 +507,7 @@ open class ThemePickerInjector : WallpaperPicker2Injector(), CustomizationInject
            ?: DarkModeSnapshotRestorer(
                    context = appContext,
                    manager = appContext.getSystemService(Context.UI_MODE_SERVICE) as UiModeManager,
                    backgroundDispatcher = Dispatchers.IO,
                    backgroundDispatcher = bgDispatcher,
                )
                .also { darkModeSnapshotRestorer = it }
    }
@@ -570,7 +582,7 @@ open class ThemePickerInjector : WallpaperPicker2Injector(), CustomizationInject
                        GridRepositoryImpl(
                            applicationScope = getApplicationCoroutineScope(),
                            manager = GridOptionsManager.getInstance(context),
                            backgroundDispatcher = Dispatchers.IO,
                            backgroundDispatcher = bgDispatcher,
                        ),
                    snapshotRestorer = { getGridSnapshotRestorer(appContext) },
                )
+6 −1
Original line number Diff line number Diff line
@@ -22,16 +22,21 @@ import com.android.wallpaper.module.InjectorProvider;

import dagger.hilt.android.HiltAndroidApp;

import javax.inject.Inject;

/**
 * Application subclass that initializes the injector.
 */
@HiltAndroidApp(Application.class)
public class CustomizationPickerApplication extends Hilt_CustomizationPickerApplication {

    @Inject ThemePickerInjector mInjector;

    @Override
    public void onCreate() {
        super.onCreate();

        // Initialize the injector.
        InjectorProvider.setInjector(new ThemePickerInjector());
        InjectorProvider.setInjector(mInjector);
    }
}