Loading app/src/main/AndroidManifest.xml +3 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,9 @@ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/> <uses-permission android:name="android.permission.WRITE_SETTINGS" tools:ignore="ProtectedPermissions" /> <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" /> Loading app/src/main/java/foundation/e/apps/api/DownloadManager.kt +23 −0 Original line number Diff line number Diff line Loading @@ -159,4 +159,27 @@ class DownloadManager @Inject constructor( } return DownloadManager.STATUS_FAILED } suspend fun checkDownloadProcess(downloadingIds: LongArray, handleFailed: suspend () -> Unit) { try { downloadManager.query(downloadManagerQuery.setFilterById(*downloadingIds)) .use { cursor -> if (!cursor.moveToFirst()) { return@use } while (!cursor.isAfterLast) { val status = cursor.getInt(cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_STATUS)) if (status == DownloadManager.STATUS_FAILED) { handleFailed() } cursor.moveToNext() } } } catch (e: Exception) { Timber.e(e) } } } app/src/main/java/foundation/e/apps/home/HomeFragment.kt +0 −7 Original line number Diff line number Diff line Loading @@ -43,7 +43,6 @@ import foundation.e.apps.home.model.HomeChildRVAdapter import foundation.e.apps.home.model.HomeParentRVAdapter import foundation.e.apps.login.AuthObject import foundation.e.apps.manager.download.data.DownloadProgress import foundation.e.apps.manager.pkg.PkgManagerModule import foundation.e.apps.utils.enums.Status import foundation.e.apps.utils.exceptions.GPlayException import foundation.e.apps.utils.exceptions.GPlayLoginException Loading @@ -69,9 +68,6 @@ class HomeFragment : TimeoutFragment(R.layout.fragment_home), FusedAPIInterface private val appProgressViewModel: AppProgressViewModel by viewModels() private val appInfoFetchViewModel: AppInfoFetchViewModel by viewModels() @Inject lateinit var pkgManagerModule: PkgManagerModule @Inject lateinit var pwaManagerModule: PWAManagerModule Loading Loading @@ -108,9 +104,6 @@ class HomeFragment : TimeoutFragment(R.layout.fragment_home), FusedAPIInterface private fun initHomeParentRVAdapter() = HomeParentRVAdapter( this, pkgManagerModule, pwaManagerModule, mainActivityViewModel.getUser(), mainActivityViewModel, appInfoFetchViewModel, viewLifecycleOwner ) { fusedApp -> if (!mainActivityViewModel.shouldShowPaidAppsSnackBar(fusedApp)) { Loading app/src/main/java/foundation/e/apps/home/model/HomeParentRVAdapter.kt +0 −6 Original line number Diff line number Diff line Loading @@ -30,15 +30,9 @@ import foundation.e.apps.api.fused.FusedAPIInterface import foundation.e.apps.api.fused.data.FusedApp import foundation.e.apps.api.fused.data.FusedHome import foundation.e.apps.databinding.HomeParentListItemBinding import foundation.e.apps.manager.pkg.PkgManagerModule import foundation.e.apps.utils.enums.User import foundation.e.apps.utils.modules.PWAManagerModule class HomeParentRVAdapter( private val fusedAPIInterface: FusedAPIInterface, private val pkgManagerModule: PkgManagerModule, private val pwaManagerModule: PWAManagerModule, private val user: User, private val mainActivityViewModel: MainActivityViewModel, private val appInfoFetchViewModel: AppInfoFetchViewModel, private var lifecycleOwner: LifecycleOwner?, Loading app/src/main/java/foundation/e/apps/manager/database/fusedDownload/FusedDownload.kt +5 −3 Original line number Diff line number Diff line Loading @@ -25,8 +25,10 @@ data class FusedDownload( val appSize: Long = 0, var files: List<File> = mutableListOf(), var signature: String = String() ) ) { fun isAppInstalling() = listOf<Status>(Status.AWAITING, Status.DOWNLOADING, Status.DOWNLOADED, Status.INSTALLING).contains(status) fun FusedDownload.isAppInstalling() = listOf<Status>(Status.AWAITING, Status.DOWNLOADING, Status.DOWNLOADED, Status.INSTALLING).contains(status) fun isAwaiting() = status == Status.AWAITING fun FusedDownload.isAwaiting() = status == Status.AWAITING fun areFilesDownloaded() = downloadIdMap.isNotEmpty() && !downloadIdMap.values.contains(false) } Loading
app/src/main/AndroidManifest.xml +3 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,9 @@ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.UPDATE_PACKAGES_WITHOUT_USER_ACTION" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/> <uses-permission android:name="android.permission.WRITE_SETTINGS" tools:ignore="ProtectedPermissions" /> <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" /> Loading
app/src/main/java/foundation/e/apps/api/DownloadManager.kt +23 −0 Original line number Diff line number Diff line Loading @@ -159,4 +159,27 @@ class DownloadManager @Inject constructor( } return DownloadManager.STATUS_FAILED } suspend fun checkDownloadProcess(downloadingIds: LongArray, handleFailed: suspend () -> Unit) { try { downloadManager.query(downloadManagerQuery.setFilterById(*downloadingIds)) .use { cursor -> if (!cursor.moveToFirst()) { return@use } while (!cursor.isAfterLast) { val status = cursor.getInt(cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_STATUS)) if (status == DownloadManager.STATUS_FAILED) { handleFailed() } cursor.moveToNext() } } } catch (e: Exception) { Timber.e(e) } } }
app/src/main/java/foundation/e/apps/home/HomeFragment.kt +0 −7 Original line number Diff line number Diff line Loading @@ -43,7 +43,6 @@ import foundation.e.apps.home.model.HomeChildRVAdapter import foundation.e.apps.home.model.HomeParentRVAdapter import foundation.e.apps.login.AuthObject import foundation.e.apps.manager.download.data.DownloadProgress import foundation.e.apps.manager.pkg.PkgManagerModule import foundation.e.apps.utils.enums.Status import foundation.e.apps.utils.exceptions.GPlayException import foundation.e.apps.utils.exceptions.GPlayLoginException Loading @@ -69,9 +68,6 @@ class HomeFragment : TimeoutFragment(R.layout.fragment_home), FusedAPIInterface private val appProgressViewModel: AppProgressViewModel by viewModels() private val appInfoFetchViewModel: AppInfoFetchViewModel by viewModels() @Inject lateinit var pkgManagerModule: PkgManagerModule @Inject lateinit var pwaManagerModule: PWAManagerModule Loading Loading @@ -108,9 +104,6 @@ class HomeFragment : TimeoutFragment(R.layout.fragment_home), FusedAPIInterface private fun initHomeParentRVAdapter() = HomeParentRVAdapter( this, pkgManagerModule, pwaManagerModule, mainActivityViewModel.getUser(), mainActivityViewModel, appInfoFetchViewModel, viewLifecycleOwner ) { fusedApp -> if (!mainActivityViewModel.shouldShowPaidAppsSnackBar(fusedApp)) { Loading
app/src/main/java/foundation/e/apps/home/model/HomeParentRVAdapter.kt +0 −6 Original line number Diff line number Diff line Loading @@ -30,15 +30,9 @@ import foundation.e.apps.api.fused.FusedAPIInterface import foundation.e.apps.api.fused.data.FusedApp import foundation.e.apps.api.fused.data.FusedHome import foundation.e.apps.databinding.HomeParentListItemBinding import foundation.e.apps.manager.pkg.PkgManagerModule import foundation.e.apps.utils.enums.User import foundation.e.apps.utils.modules.PWAManagerModule class HomeParentRVAdapter( private val fusedAPIInterface: FusedAPIInterface, private val pkgManagerModule: PkgManagerModule, private val pwaManagerModule: PWAManagerModule, private val user: User, private val mainActivityViewModel: MainActivityViewModel, private val appInfoFetchViewModel: AppInfoFetchViewModel, private var lifecycleOwner: LifecycleOwner?, Loading
app/src/main/java/foundation/e/apps/manager/database/fusedDownload/FusedDownload.kt +5 −3 Original line number Diff line number Diff line Loading @@ -25,8 +25,10 @@ data class FusedDownload( val appSize: Long = 0, var files: List<File> = mutableListOf(), var signature: String = String() ) ) { fun isAppInstalling() = listOf<Status>(Status.AWAITING, Status.DOWNLOADING, Status.DOWNLOADED, Status.INSTALLING).contains(status) fun FusedDownload.isAppInstalling() = listOf<Status>(Status.AWAITING, Status.DOWNLOADING, Status.DOWNLOADED, Status.INSTALLING).contains(status) fun isAwaiting() = status == Status.AWAITING fun FusedDownload.isAwaiting() = status == Status.AWAITING fun areFilesDownloaded() = downloadIdMap.isNotEmpty() && !downloadIdMap.values.contains(false) }