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

Commit 58e96ad7 authored by Hasib Prince's avatar Hasib Prince
Browse files

App Lounge: run install worker as foreground

handle exception during installation
parent 9c424dd6
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@
            </intent-filter>
            <nav-graph android:value="@navigation/navigation_resource" />
        </activity>
        <service android:name=".manager.pkg.InstallerService" />

        <receiver
            android:name="foundation.e.apps.manager.download.DownloadManagerBR"
+2 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import dagger.hilt.android.HiltAndroidApp
import foundation.e.apps.manager.pkg.PkgManagerBR
import foundation.e.apps.manager.pkg.PkgManagerModule
import kotlinx.coroutines.DelicateCoroutinesApi
import java.util.concurrent.Executors
import javax.inject.Inject

@HiltAndroidApp
@@ -47,5 +48,6 @@ class AppLoungeApplication : Application(), Configuration.Provider {
    override fun getWorkManagerConfiguration() =
        Configuration.Builder()
            .setWorkerFactory(workerFactory)
            .setExecutor(Executors.newSingleThreadExecutor())
            .build()
}
+2 −1
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ import java.util.UUID
class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding
    private val TAG = MainActivity::class.java.simpleName
    private lateinit var viewModel: MainActivityViewModel

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
@@ -68,7 +69,7 @@ class MainActivity : AppCompatActivity() {

        var hasInternet = true

        val viewModel = ViewModelProvider(this)[MainActivityViewModel::class.java]
        viewModel = ViewModelProvider(this)[MainActivityViewModel::class.java]
        val signInViewModel = ViewModelProvider(this)[SignInViewModel::class.java]

        // navOptions and activityNavController for TOS and SignIn Fragments
+0 −2
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@

package foundation.e.apps.applicationlist

import android.util.Log
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
@@ -40,7 +39,6 @@ class ApplicationListViewModel @Inject constructor(

    fun getList(category: String, browseUrl: String, authData: AuthData, source: String) {
        if (appListLiveData.value?.isNotEmpty() == true) {
            Log.d("ApplicationListViewModel", "getList: ")
            return
        }
        viewModelScope.launch(Dispatchers.IO) {
+18 −6
Original line number Diff line number Diff line
@@ -21,11 +21,15 @@ import foundation.e.apps.utils.enums.Type
import foundation.e.apps.utils.modules.PWAManagerModule
import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.delay
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import java.io.File
import javax.inject.Inject
import javax.inject.Named
import javax.inject.Singleton
import com.aurora.gplayapi.data.models.File as AuroraFile

@Singleton
class FusedManagerImpl @Inject constructor(
    @Named("cacheDir") private val cacheDir: String,
    private val downloadManager: DownloadManager,
@@ -86,12 +90,16 @@ class FusedManagerImpl @Inject constructor(
        }
    }

    private val mutex = Mutex()

    suspend fun downloadApp(fusedDownload: FusedDownload) {
        mutex.withLock {
            when (fusedDownload.type) {
                Type.NATIVE -> downloadNativeApp(fusedDownload)
                Type.PWA -> pwaManagerModule.installPWAApp(fusedDownload)
            }
        }
    }

    suspend fun installApp(fusedDownload: FusedDownload) {
        val list = mutableListOf<File>()
@@ -101,9 +109,13 @@ class FusedManagerImpl @Inject constructor(
                parentPathFile.listFiles()?.let { list.addAll(it) }
                list.sort()
                if (list.size != 0) {
                    try {
                        Log.d(TAG, "installApp: STARTED ${fusedDownload.name} ${list.size}")
                        pkgManagerModule.installApplication(list, fusedDownload.packageName)
                        Log.d(TAG, "installApp: ENDED ${fusedDownload.name} ${list.size}")
                    } catch (e: Exception) {
                        installationIssue(fusedDownload)
                    }
                }
            }
            else -> {
Loading