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

Commit 84227dc1 authored by Abhishek Aggarwal's avatar Abhishek Aggarwal
Browse files

Applounge: Introduce domain and data modules and move preferences to it

parent 4838c38c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -8,3 +8,4 @@
.externalNativeBuild
.cxx
local.properties
**/build/
+2 −0
Original line number Diff line number Diff line
@@ -195,6 +195,8 @@ dependencies {
    // Project dependencies
    implementation(project(":auth-data-lib"))
    implementation(project(":parental-control-data"))
    implementation(project(":domain"))
    implementation(project(":data"))

    // eFoundation libraries
    implementation(libs.telemetry)
+11 −12
Original line number Diff line number Diff line
@@ -34,10 +34,9 @@ import foundation.e.apps.data.install.AppInstallDAO
import foundation.e.apps.data.install.pkg.AppLoungePackageManager
import foundation.e.apps.data.install.pkg.PkgManagerBR
import foundation.e.apps.data.install.updates.UpdatesWorkManager
import foundation.e.apps.data.install.workmanager.InstallWorkManager
import foundation.e.apps.data.preference.AppLoungeDataStore
import foundation.e.apps.data.preference.AppLoungePreference
import foundation.e.apps.data.system.CustomUncaughtExceptionHandler
import foundation.e.apps.domain.preferences.AppPreferencesRepository
import foundation.e.apps.domain.preferences.SessionRepository
import foundation.e.apps.ui.setup.tos.TOS_VERSION
import foundation.e.lib.telemetry.Telemetry
import kotlinx.coroutines.CoroutineScope
@@ -62,10 +61,7 @@ class AppLoungeApplication : Application(), Configuration.Provider {
    lateinit var workerFactory: HiltWorkerFactory

    @Inject
    lateinit var appLoungeDataStore: AppLoungeDataStore

    @Inject
    lateinit var appLoungePreference: AppLoungePreference
    lateinit var appPreferencesRepository: AppPreferencesRepository

    @Inject
    lateinit var appInstallDao: AppInstallDAO
@@ -77,6 +73,9 @@ class AppLoungeApplication : Application(), Configuration.Provider {
    @IoCoroutineScope
    lateinit var coroutineScope: CoroutineScope

    @Inject
    lateinit var sessionRepository: SessionRepository

    @RequiresApi(Build.VERSION_CODES.TIRAMISU)
    override fun onCreate() {
        super.onCreate()
@@ -88,10 +87,10 @@ class AppLoungeApplication : Application(), Configuration.Provider {
        val pkgManagerBR = object : PkgManagerBR() {}
        registerReceiver(pkgManagerBR, appLoungePackageManager.getFilter(), RECEIVER_EXPORTED)

        val currentVersion = runBlocking { appLoungeDataStore.tosVersion.first() }
        val currentVersion = runBlocking { sessionRepository.tosVersion.first() }
        if (!currentVersion.contentEquals(TOS_VERSION)) {
            MainScope().launch {
                appLoungeDataStore.saveTOCStatus(false, "")
            coroutineScope.launch {
                sessionRepository.saveTocStatus(false, "")
            }
        }

@@ -114,10 +113,10 @@ class AppLoungeApplication : Application(), Configuration.Provider {
            })
        }

        appLoungePreference.migrateAnonymousUserUpdateInterval()
        appPreferencesRepository.migrateAnonymousUserUpdateInterval()
        UpdatesWorkManager.enqueueWork(
            this,
            appLoungePreference.getUpdateInterval(),
            appPreferencesRepository.getUpdateInterval(),
            ExistingPeriodicWorkPolicy.KEEP
        )

+3 −3
Original line number Diff line number Diff line
@@ -25,7 +25,7 @@ import androidx.core.net.toUri
import dagger.hilt.android.qualifiers.ApplicationContext
import foundation.e.apps.OpenForTesting
import foundation.e.apps.R
import foundation.e.apps.data.preference.AppLoungePreference
import foundation.e.apps.domain.preferences.AppPreferencesRepository
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
@@ -48,7 +48,7 @@ class DownloadManager @Inject constructor(
    private val downloadManager: DownloadManager,
    @Named("cacheDir") private val cacheDir: String,
    private val downloadManagerQuery: DownloadManager.Query,
    private val appLoungePreference: AppLoungePreference,
    private val appPreferencesRepository: AppPreferencesRepository,
) {
    private val downloadsMaps = HashMap<Long, Boolean>()

@@ -82,7 +82,7 @@ class DownloadManager @Inject constructor(
            val request = DownloadManager.Request(url.toUri())
                .setTitle(context.getString(R.string.downloading))
                .setDestinationUri(Uri.fromFile(downloadFile))
            if (appLoungePreference.isOnlyUnmeteredNetworkEnabled()) {
            if (appPreferencesRepository.isOnlyUnmeteredNetworkEnabled()) {
                // Set to true by default for Download requests
                request.setAllowedOverMetered(false)
            }
+13 −13
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ import foundation.e.apps.data.enums.Source.OPEN_SOURCE
import foundation.e.apps.data.enums.Source.PLAY_STORE
import foundation.e.apps.data.enums.Source.PWA
import foundation.e.apps.data.playstore.PlayStoreRepository
import foundation.e.apps.data.preference.AppLoungePreference
import foundation.e.apps.domain.preferences.AppPreferencesRepository
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
@@ -39,14 +39,14 @@ class Stores @Inject constructor(
    playStoreRepository: PlayStoreRepository,
    cleanApkAppsRepository: CleanApkAppsRepository,
    cleanApkPwaRepository: CleanApkPwaRepository,
    appLoungePreference: AppLoungePreference
    appPreferencesRepository: AppPreferencesRepository
) {

    private val storeConfigs: Map<Source, StoreConfig> = buildStoreConfigs(
        playStoreRepository,
        cleanApkAppsRepository,
        cleanApkPwaRepository,
        appLoungePreference
        appPreferencesRepository
    )

    private val searchEligibleSources = storeConfigs.keys
@@ -107,24 +107,24 @@ internal fun buildStoreConfigs(
    playStoreRepository: PlayStoreRepository,
    cleanApkAppsRepository: CleanApkAppsRepository,
    cleanApkPwaRepository: CleanApkPwaRepository,
    appLoungePreference: AppLoungePreference
    appPreferencesRepository: AppPreferencesRepository
): Map<Source, StoreConfig> = mapOf(
    PLAY_STORE to StoreConfig(
        repository = playStoreRepository,
        isEnabled = { appLoungePreference.isPlayStoreSelected() },
        enable = { appLoungePreference.enablePlayStore() },
        disable = { appLoungePreference.disablePlayStore() },
        isEnabled = { appPreferencesRepository.isPlayStoreSelected() },
        enable = { appPreferencesRepository.enablePlayStore() },
        disable = { appPreferencesRepository.disablePlayStore() },
    ),
    OPEN_SOURCE to StoreConfig(
        repository = cleanApkAppsRepository,
        isEnabled = { appLoungePreference.isOpenSourceSelected() },
        enable = { appLoungePreference.enableOpenSource() },
        disable = { appLoungePreference.disableOpenSource() },
        isEnabled = { appPreferencesRepository.isOpenSourceSelected() },
        enable = { appPreferencesRepository.enableOpenSource() },
        disable = { appPreferencesRepository.disableOpenSource() },
    ),
    PWA to StoreConfig(
        repository = cleanApkPwaRepository,
        isEnabled = { appLoungePreference.isPWASelected() },
        enable = { appLoungePreference.enablePwa() },
        disable = { appLoungePreference.disablePwa() },
        isEnabled = { appPreferencesRepository.isPWASelected() },
        enable = { appPreferencesRepository.enablePwa() },
        disable = { appPreferencesRepository.disablePwa() },
    ),
)
Loading