diff --git a/Core b/Core index 1fdec34c91..aff6ec8a7e 160000 --- a/Core +++ b/Core @@ -1 +1 @@ -Subproject commit 1fdec34c916bf4dddae093df8fe8e154bd96905d +Subproject commit aff6ec8a7e8d04a93e8fa911c0e969e42508e257 diff --git a/app/src/main/java/com/infomaniak/drive/MainApplication.kt b/app/src/main/java/com/infomaniak/drive/MainApplication.kt index 8cbb5d798b..9d4fbecb28 100644 --- a/app/src/main/java/com/infomaniak/drive/MainApplication.kt +++ b/app/src/main/java/com/infomaniak/drive/MainApplication.kt @@ -39,6 +39,7 @@ import com.infomaniak.drive.ui.LaunchActivity import com.infomaniak.drive.utils.AccountUtils import com.infomaniak.drive.utils.NotificationUtils.buildGeneralNotification import com.infomaniak.drive.utils.NotificationUtils.initNotificationChannel +import com.infomaniak.drive.utils.NotificationUtils.notifyCompat import com.infomaniak.lib.core.InfomaniakCore import com.infomaniak.lib.core.auth.TokenInterceptorListener import com.infomaniak.lib.core.models.user.User @@ -152,7 +153,7 @@ class MainApplication : Application(), ImageLoaderFactory { val notificationManagerCompat = NotificationManagerCompat.from(this) buildGeneralNotification(getString(R.string.refreshTokenError)).apply { setContentIntent(pendingIntent) - notificationManagerCompat.notify(hashCode, build()) + notificationManagerCompat.notifyCompat(this@MainApplication, hashCode, build()) } Sentry.withScope { scope -> scope.level = SentryLevel.ERROR diff --git a/app/src/main/java/com/infomaniak/drive/data/api/UploadTask.kt b/app/src/main/java/com/infomaniak/drive/data/api/UploadTask.kt index 35b035d134..01b467cb93 100644 --- a/app/src/main/java/com/infomaniak/drive/data/api/UploadTask.kt +++ b/app/src/main/java/com/infomaniak/drive/data/api/UploadTask.kt @@ -17,7 +17,6 @@ */ package com.infomaniak.drive.data.api -import android.annotation.SuppressLint import android.content.Context import android.net.Uri import android.util.Log @@ -34,6 +33,7 @@ import com.infomaniak.drive.data.services.UploadWorker import com.infomaniak.drive.data.sync.UploadNotifications.progressPendingIntent import com.infomaniak.drive.utils.NotificationUtils.CURRENT_UPLOAD_ID import com.infomaniak.drive.utils.NotificationUtils.ELAPSED_TIME +import com.infomaniak.drive.utils.NotificationUtils.notifyCompat import com.infomaniak.drive.utils.NotificationUtils.uploadProgressNotification import com.infomaniak.drive.utils.getAvailableMemory import com.infomaniak.lib.core.api.ApiController @@ -74,14 +74,13 @@ class UploadTask( private var uploadNotificationElapsedTime = ELAPSED_TIME private var uploadNotificationStartTime = 0L - @SuppressLint("MissingPermission") suspend fun start() = withContext(Dispatchers.IO) { notificationManagerCompat = NotificationManagerCompat.from(context) uploadNotification = context.uploadProgressNotification() uploadNotification.apply { setContentTitle(uploadFile.fileName) - notificationManagerCompat.notify(CURRENT_UPLOAD_ID, build()) + notificationManagerCompat.notifyCompat(context, CURRENT_UPLOAD_ID, build()) } try { @@ -187,7 +186,6 @@ class UploadTask( onFinish(uri) } - @SuppressLint("MissingPermission") private suspend fun onFinish(uri: Uri) = with(uploadFile) { with(ApiRepository.finishSession(driveId, uploadToken!!, okHttpClient)) { if (!isSuccess()) manageUploadErrors() @@ -197,7 +195,7 @@ class UploadTask( setContentText("100%") setSmallIcon(android.R.drawable.stat_sys_upload_done) setProgress(0, 0, false) - notificationManagerCompat.notify(CURRENT_UPLOAD_ID, build()) + notificationManagerCompat.notifyCompat(context, CURRENT_UPLOAD_ID, build()) } shareProgress(100, true) UploadFile.uploadFinished(uri) @@ -283,7 +281,6 @@ class UploadTask( } } - @SuppressLint("MissingPermission") private fun CoroutineScope.updateProgress(currentBytes: Int, bytesWritten: Long, contentLength: Long) { val totalBytesWritten = currentBytes + previousChunkBytesWritten val progress = ((totalBytesWritten.toDouble() / uploadFile.fileSize.toDouble()) * 100).toInt() @@ -318,7 +315,7 @@ class UploadTask( setContentIntent(uploadFile.progressPendingIntent(context)) setContentText("${currentProgress}%") setProgress(100, currentProgress, false) - notificationManagerCompat.notify(CURRENT_UPLOAD_ID, build()) + notificationManagerCompat.notifyCompat(context, CURRENT_UPLOAD_ID, build()) uploadNotificationStartTime = System.currentTimeMillis() uploadNotificationElapsedTime = 0L } diff --git a/app/src/main/java/com/infomaniak/drive/data/services/BulkOperationWorker.kt b/app/src/main/java/com/infomaniak/drive/data/services/BulkOperationWorker.kt index 49dffeb762..64a0cce0c7 100644 --- a/app/src/main/java/com/infomaniak/drive/data/services/BulkOperationWorker.kt +++ b/app/src/main/java/com/infomaniak/drive/data/services/BulkOperationWorker.kt @@ -29,6 +29,7 @@ import androidx.work.WorkerParameters import com.google.common.util.concurrent.ListenableFuture import com.infomaniak.drive.data.models.BulkOperationType import com.infomaniak.drive.data.models.MqttNotification +import com.infomaniak.drive.utils.NotificationUtils.notifyCompat import com.infomaniak.lib.core.utils.Utils.createRefreshTimer import java.util.Date @@ -76,7 +77,7 @@ class BulkOperationWorker(context: Context, workerParams: WorkerParameters) : Li } private fun launchObserver(onOperationFinished: () -> Unit) { - mqttNotificationsObserver = Observer { notification -> + mqttNotificationsObserver = Observer { notification -> if (notification.isProgressNotification() && notification.actionUuid == actionUuid) { lastReception = Date() if (notification.progress!!.todo == 0) { @@ -88,7 +89,7 @@ class BulkOperationWorker(context: Context, workerParams: WorkerParameters) : Li setContentTitle(string) setContentText("${notification.progress.percent}%") setProgress(100, notification.progress.percent, false) - notificationManagerCompat.notify(notificationId, build()) + notificationManagerCompat.notifyCompat(applicationContext, notificationId, build()) } } } diff --git a/app/src/main/java/com/infomaniak/drive/data/services/DownloadWorker.kt b/app/src/main/java/com/infomaniak/drive/data/services/DownloadWorker.kt index f9cb445e57..237bb40e6a 100644 --- a/app/src/main/java/com/infomaniak/drive/data/services/DownloadWorker.kt +++ b/app/src/main/java/com/infomaniak/drive/data/services/DownloadWorker.kt @@ -38,6 +38,7 @@ import com.infomaniak.drive.utils.AccountUtils import com.infomaniak.drive.utils.MediaUtils import com.infomaniak.drive.utils.MediaUtils.isMedia import com.infomaniak.drive.utils.NotificationUtils.downloadProgressNotification +import com.infomaniak.drive.utils.NotificationUtils.notifyCompat import com.infomaniak.lib.core.api.ApiController import com.infomaniak.lib.core.models.ApiResponse import com.infomaniak.lib.core.networking.HttpClient @@ -138,7 +139,7 @@ class DownloadWorker(context: Context, workerParams: WorkerParameters) : Corouti downloadNotification.apply { setContentText("$progress%") setProgress(100, progress, false) - notificationManagerCompat.notify(file.id, build()) + notificationManagerCompat.notifyCompat(applicationContext, file.id, build()) } } @@ -153,7 +154,7 @@ class DownloadWorker(context: Context, workerParams: WorkerParameters) : Corouti downloadNotification.apply { setContentText("100%") setProgress(100, 100, false) - notificationManagerCompat.notify(file.id, build()) + notificationManagerCompat.notifyCompat(applicationContext, file.id, build()) } Result.success() } else Result.failure() diff --git a/app/src/main/java/com/infomaniak/drive/data/services/UploadWorker.kt b/app/src/main/java/com/infomaniak/drive/data/services/UploadWorker.kt index bb2cd66d06..83719206df 100644 --- a/app/src/main/java/com/infomaniak/drive/data/services/UploadWorker.kt +++ b/app/src/main/java/com/infomaniak/drive/data/services/UploadWorker.kt @@ -17,7 +17,6 @@ */ package com.infomaniak.drive.data.services -import android.annotation.SuppressLint import android.content.ContentResolver import android.content.Context import android.database.Cursor @@ -46,14 +45,18 @@ import com.infomaniak.drive.utils.MediaFoldersProvider.IMAGES_BUCKET_ID import com.infomaniak.drive.utils.MediaFoldersProvider.VIDEO_BUCKET_ID import com.infomaniak.drive.utils.NotificationUtils.buildGeneralNotification import com.infomaniak.drive.utils.NotificationUtils.cancelNotification +import com.infomaniak.drive.utils.NotificationUtils.notifyCompat import com.infomaniak.drive.utils.SyncUtils.syncImmediately import com.infomaniak.lib.core.api.ApiController -import com.infomaniak.lib.core.utils.* +import com.infomaniak.lib.core.utils.calculateFileSize +import com.infomaniak.lib.core.utils.getFileName +import com.infomaniak.lib.core.utils.getFileSize +import com.infomaniak.lib.core.utils.hasPermissions import io.sentry.Breadcrumb import io.sentry.Sentry import io.sentry.SentryLevel import kotlinx.coroutines.* -import java.util.* +import java.util.Date class UploadWorker(appContext: Context, params: WorkerParameters) : CoroutineWorker(appContext, params) { private lateinit var contentResolver: ContentResolver @@ -463,14 +466,13 @@ class UploadWorker(appContext: Context, params: WorkerParameters) : CoroutineWor .build() } - @SuppressLint("MissingPermission") fun Context.showSyncConfigNotification() { val pendingIntent = syncSettingsActivityPendingIntent() val notificationManagerCompat = NotificationManagerCompat.from(this) buildGeneralNotification(getString(R.string.noSyncFolderNotificationTitle)).apply { setContentText(getString(R.string.noSyncFolderNotificationDescription)) setContentIntent(pendingIntent) - notificationManagerCompat.notify(NotificationUtils.SYNC_CONFIG_ID, this.build()) + notificationManagerCompat.notifyCompat(applicationContext, NotificationUtils.SYNC_CONFIG_ID, this.build()) } } diff --git a/app/src/main/java/com/infomaniak/drive/data/sync/UploadNotifications.kt b/app/src/main/java/com/infomaniak/drive/data/sync/UploadNotifications.kt index 62aba820d6..304190a6b7 100644 --- a/app/src/main/java/com/infomaniak/drive/data/sync/UploadNotifications.kt +++ b/app/src/main/java/com/infomaniak/drive/data/sync/UploadNotifications.kt @@ -32,6 +32,7 @@ import com.infomaniak.drive.ui.MainActivity import com.infomaniak.drive.ui.menu.settings.SyncSettingsActivity import com.infomaniak.drive.utils.NotificationUtils import com.infomaniak.drive.utils.NotificationUtils.UPLOAD_SERVICE_ID +import com.infomaniak.drive.utils.NotificationUtils.notifyCompat import com.infomaniak.drive.utils.NotificationUtils.uploadNotification import com.infomaniak.drive.utils.SyncUtils.disableAutoSync import com.infomaniak.lib.core.utils.NotificationUtilsCore.Companion.pendingIntentFlags @@ -209,7 +210,7 @@ object UploadNotifications { ) { val notificationManagerCompat = NotificationManagerCompat.from(context) val notificationBuilder = getNotificationBuilder(context, title, description, contentIntent, locateButton) - notificationManagerCompat.notify(notificationId, notificationBuilder.build()) + notificationManagerCompat.notifyCompat(context, notificationId, notificationBuilder.build()) } private fun getNotificationBuilder( diff --git a/app/src/main/java/com/infomaniak/drive/utils/RebootReceiver.kt b/app/src/main/java/com/infomaniak/drive/utils/RebootReceiver.kt index 1962aa5c0e..3909fbad5d 100644 --- a/app/src/main/java/com/infomaniak/drive/utils/RebootReceiver.kt +++ b/app/src/main/java/com/infomaniak/drive/utils/RebootReceiver.kt @@ -28,6 +28,7 @@ import com.infomaniak.drive.data.models.MediaFolder import com.infomaniak.drive.ui.LaunchActivity import com.infomaniak.drive.ui.login.MigrationActivity.Companion.getOldkDriveUser import com.infomaniak.drive.utils.NotificationUtils.buildGeneralNotification +import com.infomaniak.drive.utils.NotificationUtils.notifyCompat import com.infomaniak.drive.utils.SyncUtils.activateSyncIfNeeded import com.infomaniak.drive.utils.SyncUtils.startContentObserverService import com.infomaniak.drive.utils.SyncUtils.syncImmediately @@ -58,7 +59,7 @@ class RebootReceiver : BroadcastReceiver() { buildGeneralNotification(getString(R.string.migrateNotificationTitle)).apply { setContentText(getString(R.string.migrateNotificationDescription)) setContentIntent(pendingIntent) - notificationManagerCompat.notify(hashCode, build()) + notificationManagerCompat.notifyCompat(context, hashCode, build()) } }