From 33b398cb3b909b06d5e2b6c7f3be28d57abc9989 Mon Sep 17 00:00:00 2001 From: Rahul Patel Date: Sun, 11 Aug 2024 00:19:24 +0530 Subject: [PATCH] Fix file exporter worker on devices running android < 12 --- .../com/aurora/store/data/work/DownloadWorker.kt | 5 +++-- .../java/com/aurora/store/data/work/ExportWorker.kt | 13 ++++++++++--- .../java/com/aurora/store/util/NotificationUtil.kt | 11 ++++++++++- app/src/main/res/values/strings.xml | 2 ++ 4 files changed, 25 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/aurora/store/data/work/DownloadWorker.kt b/app/src/main/java/com/aurora/store/data/work/DownloadWorker.kt index ebcc33c46..d6188979b 100644 --- a/app/src/main/java/com/aurora/store/data/work/DownloadWorker.kt +++ b/app/src/main/java/com/aurora/store/data/work/DownloadWorker.kt @@ -304,7 +304,7 @@ class DownloadWorker @AssistedInject constructor( Log.e(TAG, "Incorrect hash for ${request.file}") throw Exception("Incorrect hash") } - + } catch (exception: Exception) { Log.e(TAG, "Failed to download ${request.file}!", exception) notifyStatus(DownloadStatus.FAILED) @@ -357,6 +357,7 @@ class DownloadWorker @AssistedInject constructor( } else { NotificationUtil.getDownloadNotification(appContext) } + return if (isQAndAbove()) { ForegroundInfo(NOTIFICATION_ID, notification, FOREGROUND_SERVICE_TYPE_DATA_SYNC) } else { @@ -441,7 +442,7 @@ class DownloadWorker @AssistedInject constructor( } return proxy } else { - Log.i(TAG,"Proxy is disabled") + Log.i(TAG, "Proxy is disabled") return null } } diff --git a/app/src/main/java/com/aurora/store/data/work/ExportWorker.kt b/app/src/main/java/com/aurora/store/data/work/ExportWorker.kt index 43ce4be46..3760dfd3b 100644 --- a/app/src/main/java/com/aurora/store/data/work/ExportWorker.kt +++ b/app/src/main/java/com/aurora/store/data/work/ExportWorker.kt @@ -9,11 +9,11 @@ import android.util.Log import androidx.hilt.work.HiltWorker import androidx.work.CoroutineWorker import androidx.work.Data +import androidx.work.ForegroundInfo import androidx.work.OneTimeWorkRequestBuilder import androidx.work.OutOfQuotaPolicy import androidx.work.WorkManager import androidx.work.WorkerParameters -import com.aurora.gplayapi.data.models.App import com.aurora.store.data.model.MinimalApp import com.aurora.store.data.room.download.Download import com.aurora.store.util.NotificationUtil @@ -104,7 +104,7 @@ class ExportWorker @AssistedInject constructor( if (packageName.isNullOrEmpty() || isDownload && versionCode == -1) { Log.e(TAG, "Input data is corrupt, bailing out!") - notifyStatus(displayName?: String(), uri, false) + notifyStatus(displayName ?: String(), uri, false) return Result.failure() } @@ -117,13 +117,20 @@ class ExportWorker @AssistedInject constructor( notifyStatus(displayName ?: packageName, uri) } catch (exception: Exception) { Log.e(TAG, "Failed to export $packageName", exception) - notifyStatus(displayName?: packageName, uri, false) + notifyStatus(displayName ?: packageName, uri, false) return Result.failure() } return Result.success() } + override suspend fun getForegroundInfo(): ForegroundInfo { + return ForegroundInfo( + NOTIFICATION_ID, + NotificationUtil.getExportNotification(appContext) + ) + } + private fun notifyStatus(packageName: String, uri: Uri, success: Boolean = true) { notificationManager.notify( NOTIFICATION_ID, diff --git a/app/src/main/java/com/aurora/store/util/NotificationUtil.kt b/app/src/main/java/com/aurora/store/util/NotificationUtil.kt index 984fbe80e..65148dc69 100644 --- a/app/src/main/java/com/aurora/store/util/NotificationUtil.kt +++ b/app/src/main/java/com/aurora/store/util/NotificationUtil.kt @@ -19,7 +19,6 @@ import androidx.navigation.NavDeepLinkBuilder import androidx.work.WorkManager import com.aurora.Constants import com.aurora.extensions.getStyledAttributeColor -import com.aurora.gplayapi.data.models.App import com.aurora.store.MainActivity import com.aurora.store.R import com.aurora.store.data.activity.InstallActivity @@ -252,6 +251,16 @@ object NotificationUtil { .build() } + fun getExportNotification(context: Context): Notification { + return NotificationCompat.Builder(context, Constants.NOTIFICATION_CHANNEL_ALERT) + .setSmallIcon(R.drawable.ic_file_copy) + .setColor(context.getStyledAttributeColor(R.color.colorAccent)) + .setContentTitle(context.getString(R.string.export_app_title)) + .setContentText(context.getString(R.string.export_app_summary)) + .setOngoing(false) + .build() + } + fun getExportStatusNotification( context: Context, displayName: String, diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e9479b2d2..431d40f3a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -470,6 +470,8 @@ Favourites exported! + File Exporter + Hold on, exporting your file Successfully exported app bundle Failed to exported app bundle