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 01b467cb93..764eb0a791 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 @@ -19,7 +19,6 @@ package com.infomaniak.drive.data.api import android.content.Context import android.net.Uri -import android.util.Log import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat import androidx.work.workDataOf @@ -41,6 +40,7 @@ import com.infomaniak.lib.core.api.ApiController.gson import com.infomaniak.lib.core.models.ApiError import com.infomaniak.lib.core.models.ApiResponse import com.infomaniak.lib.core.networking.HttpUtils +import com.infomaniak.lib.core.utils.SentryLog import io.sentry.Breadcrumb import io.sentry.Sentry import io.sentry.SentryLevel @@ -147,7 +147,7 @@ class UploadTask( level = SentryLevel.INFO }) - Log.d("kDrive", " upload task started with total chunk: $totalChunks, valid: $uploadedChunks") + SentryLog.d("kDrive", " upload task started with total chunk: $totalChunks, valid: $uploadedChunks") val validChunksIds = uploadedChunks?.validChunksIds previousChunkBytesWritten = uploadedChunks?.uploadedSize ?: 0 @@ -155,13 +155,13 @@ class UploadTask( for (chunkNumber in 1..totalChunks) { requestSemaphore.acquire() if (validChunksIds?.contains(chunkNumber) == true && !isNewUploadSession) { - Log.d("kDrive", "chunk:$chunkNumber ignored") + SentryLog.d("kDrive", "chunk:$chunkNumber ignored") input.skip(chunkSize.toLong()) requestSemaphore.release() continue } - Log.i("kDrive", "Upload > ${uploadFile.fileName} chunk:$chunkNumber has permission") + SentryLog.i("kDrive", "Upload > ${uploadFile.fileName} chunk:$chunkNumber has permission") var data = ByteArray(chunkSize) val count = input.read(data, 0, chunkSize) if (count == -1) { @@ -172,7 +172,7 @@ class UploadTask( data = if (count == chunkSize) data else data.copyOf(count) val url = uploadFile.uploadUrl(chunkNumber = chunkNumber, currentChunkSize = count) - Log.d("kDrive", "Upload > Start upload ${uploadFile.fileName} to $url data size:${data.size}") + SentryLog.d("kDrive", "Upload > Start upload ${uploadFile.fileName} to $url data size:${data.size}") waitingCoroutines.add( coroutineScope.uploadChunkRequest(requestSemaphore, data.toRequestBody(), url) @@ -268,7 +268,7 @@ class UploadTask( private fun manageApiResponse(response: Response) { response.use { val bodyResponse = it.body?.string() - Log.i("UploadTask", "response successful ${it.isSuccessful}") + SentryLog.i("UploadTask", "response successful ${it.isSuccessful}") if (!it.isSuccessful) { notificationManagerCompat.cancel(CURRENT_UPLOAD_ID) val apiResponse = try { @@ -298,7 +298,7 @@ class UploadTask( scope.setExtra("chunk size", "$chunkSize") Sentry.captureMessage("Chunk total size exceed fileSize 😢") } - Log.d( + SentryLog.d( "UploadWorker", "progress >> ${uploadFile.fileName} exceed with ${uploadFile.fileSize}/${previousChunkBytesWritten}" ) @@ -325,7 +325,7 @@ class UploadTask( launch { shareProgress(currentProgress) } } - Log.i( + SentryLog.i( "kDrive", " upload >> ${currentProgress}%, totalBytesWritten:$totalBytesWritten, fileSize:${uploadFile.fileSize}" ) diff --git a/app/src/main/java/com/infomaniak/drive/data/cache/FileMigration.kt b/app/src/main/java/com/infomaniak/drive/data/cache/FileMigration.kt index 75298cf604..25a028268e 100644 --- a/app/src/main/java/com/infomaniak/drive/data/cache/FileMigration.kt +++ b/app/src/main/java/com/infomaniak/drive/data/cache/FileMigration.kt @@ -316,8 +316,7 @@ class FileMigration : RealmMigration { override fun equals(other: Any?): Boolean { if (this === other) return true - if (javaClass != other?.javaClass) return false - return true + return javaClass == other?.javaClass } override fun hashCode(): Int { diff --git a/app/src/main/java/com/infomaniak/drive/data/documentprovider/CloudStorageProvider.kt b/app/src/main/java/com/infomaniak/drive/data/documentprovider/CloudStorageProvider.kt index c95dae29b0..dc68692942 100644 --- a/app/src/main/java/com/infomaniak/drive/data/documentprovider/CloudStorageProvider.kt +++ b/app/src/main/java/com/infomaniak/drive/data/documentprovider/CloudStorageProvider.kt @@ -30,7 +30,6 @@ import android.os.* import android.provider.DocumentsContract import android.provider.DocumentsProvider import android.provider.Settings -import android.util.Log import androidx.core.app.NotificationManagerCompat import androidx.core.net.toUri import androidx.core.os.bundleOf @@ -53,6 +52,7 @@ import com.infomaniak.drive.utils.isPositive import com.infomaniak.lib.core.api.ApiController import com.infomaniak.lib.core.models.ApiResponse import com.infomaniak.lib.core.utils.NotificationUtilsCore +import com.infomaniak.lib.core.utils.SentryLog import io.realm.Realm import io.sentry.Sentry import io.sentry.SentryLevel @@ -71,7 +71,7 @@ class CloudStorageProvider : DocumentsProvider() { private lateinit var cacheDir: java.io.File override fun onCreate(): Boolean { - Log.d(TAG, "onCreate") + SentryLog.d(TAG, "onCreate") var result = false runBlocking { @@ -85,7 +85,7 @@ class CloudStorageProvider : DocumentsProvider() { } override fun queryRoots(projection: Array?): Cursor { - Log.d(TAG, "queryRoots") + SentryLog.d(TAG, "queryRoots") val cursor = MatrixCursor(projection ?: DEFAULT_ROOT_PROJECTION) AccountUtils.getAllUsersSync().forEach { user -> @@ -102,7 +102,7 @@ class CloudStorageProvider : DocumentsProvider() { } override fun queryDocument(documentId: String, projection: Array?): Cursor { - Log.d(TAG, "queryDocument(), documentId=$documentId") + SentryLog.d(TAG, "queryDocument(), documentId=$documentId") return MatrixCursor(projection ?: DEFAULT_DOCUMENT_PROJECTION).apply { val userId = getUserId(documentId) @@ -139,7 +139,7 @@ class CloudStorageProvider : DocumentsProvider() { } override fun queryChildDocuments(parentDocumentId: String, projection: Array?, sortOrder: String?): Cursor { - Log.d(TAG, "queryChildDocuments(), parentDocumentId=$parentDocumentId, sort=$sortOrder") + SentryLog.d(TAG, "queryChildDocuments(), parentDocumentId=$parentDocumentId, sort=$sortOrder") val cursor = DocumentCursor(projection ?: DEFAULT_DOCUMENT_PROJECTION) @@ -147,7 +147,7 @@ class CloudStorageProvider : DocumentsProvider() { val isNewJob = uri != oldQueryChildUri || needRefresh val isLoading = uri == oldQueryChildUri && oldQueryChildCursor?.job?.isCompleted == false || isNewJob - Log.i(TAG, "queryChildDocuments(), isLoading=$isLoading, isNew=$isNewJob") + SentryLog.i(TAG, "queryChildDocuments(), isLoading=$isLoading, isNew=$isNewJob") cursor.extras = bundleOf(DocumentsContract.EXTRA_LOADING to isLoading) cursor.setNotificationUri(context?.contentResolver, uri) @@ -230,7 +230,7 @@ class CloudStorageProvider : DocumentsProvider() { } override fun openDocument(documentId: String, mode: String, signal: CancellationSignal?): ParcelFileDescriptor? { - Log.d(TAG, "openDocument(), id=$documentId, mode=$mode, signalIsCancelled: ${signal?.isCanceled}") + SentryLog.d(TAG, "openDocument(), id=$documentId, mode=$mode, signalIsCancelled: ${signal?.isCanceled}") val context = context ?: return null val isWrite = mode.indexOf('w') != -1 @@ -249,7 +249,7 @@ class CloudStorageProvider : DocumentsProvider() { } override fun querySearchDocuments(rootId: String, query: String, projection: Array?): Cursor { - Log.d(TAG, "querySearchDocuments(), rootId=$rootId, query=$query, projection=$projection, $currentParentDocumentId") + SentryLog.d(TAG, "querySearchDocuments(), rootId=$rootId, query=$query, projection=$projection, $currentParentDocumentId") val cursor = DocumentCursor(projection ?: DEFAULT_DOCUMENT_PROJECTION) @@ -296,7 +296,7 @@ class CloudStorageProvider : DocumentsProvider() { } override fun openDocumentThumbnail(documentId: String, sizeHint: Point?, signal: CancellationSignal?): AssetFileDescriptor { - Log.d(TAG, "openDocumentThumbnail(), id=$documentId, signalIsCancelled: ${signal?.isCanceled}") + SentryLog.d(TAG, "openDocumentThumbnail(), id=$documentId, signalIsCancelled: ${signal?.isCanceled}") val fileId = getFileIdFromDocumentId(documentId) val userId = getUserId(documentId) @@ -344,7 +344,7 @@ class CloudStorageProvider : DocumentsProvider() { } override fun createDocument(parentDocumentId: String, mimeType: String, displayName: String): String { - Log.d(TAG, "createDocument(), parentId=$parentDocumentId, mimeType=$mimeType, name=$displayName") + SentryLog.d(TAG, "createDocument(), parentId=$parentDocumentId, mimeType=$mimeType, name=$displayName") return if (mimeType.equals(DocumentsContract.Document.MIME_TYPE_DIR, true)) { createNewFolder(parentDocumentId, displayName) // If we want to create a new folder @@ -354,7 +354,7 @@ class CloudStorageProvider : DocumentsProvider() { } override fun deleteDocument(documentId: String) { - Log.d(TAG, "deleteDocument(), id=$documentId") + SentryLog.d(TAG, "deleteDocument(), id=$documentId") val context = context ?: throw IllegalStateException("Delete document failed: missing Android Context") @@ -380,7 +380,7 @@ class CloudStorageProvider : DocumentsProvider() { } override fun renameDocument(documentId: String, displayName: String): String? { - Log.d(TAG, "renameDocument(), id=$documentId, name=$displayName") + SentryLog.d(TAG, "renameDocument(), id=$documentId, name=$displayName") FileController.getRealmInstance(createUserDrive(documentId)).use { realm -> FileController.getFileProxyById(getFileIdFromDocumentId(documentId), customRealm = realm)?.let { file -> @@ -402,7 +402,7 @@ class CloudStorageProvider : DocumentsProvider() { } override fun copyDocument(sourceDocumentId: String, targetParentDocumentId: String): String { - Log.d(TAG, "copyDocument(), sourceId=$sourceDocumentId, targetParentId=$targetParentDocumentId") + SentryLog.d(TAG, "copyDocument(), sourceId=$sourceDocumentId, targetParentId=$targetParentDocumentId") return FileController.getRealmInstance(createUserDrive(sourceDocumentId)).use { realm -> @@ -427,7 +427,7 @@ class CloudStorageProvider : DocumentsProvider() { } override fun moveDocument(sourceDocumentId: String, sourceParentDocumentId: String, targetParentDocumentId: String): String { - Log.d( + SentryLog.d( TAG, "moveDocument(), " + "sourceId=$sourceDocumentId, " + "sourceParentId=$sourceParentDocumentId, " + @@ -572,7 +572,7 @@ class CloudStorageProvider : DocumentsProvider() { fileUrl = ApiRoutes.downloadFile(file), okHttpClient = okHttpClient ) { progress -> - Log.i(TAG, "open currentProgress: $progress") + SentryLog.i(TAG, "open currentProgress: $progress") } if (response.isSuccessful) { 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 237bb40e6a..72e47b5e92 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 @@ -20,7 +20,6 @@ package com.infomaniak.drive.data.services import android.content.Context import android.content.Intent import android.os.ParcelFileDescriptor.AutoCloseOutputStream -import android.util.Log import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat import androidx.localbroadcastmanager.content.LocalBroadcastManager @@ -43,6 +42,7 @@ import com.infomaniak.lib.core.api.ApiController import com.infomaniak.lib.core.models.ApiResponse import com.infomaniak.lib.core.networking.HttpClient import com.infomaniak.lib.core.networking.HttpUtils +import com.infomaniak.lib.core.utils.SentryLog import io.sentry.Sentry import kotlinx.coroutines.* import okhttp3.Interceptor @@ -135,7 +135,7 @@ class DownloadWorker(context: Context, workerParams: WorkerParameters) : Corouti launch(Dispatchers.Main) { setProgress(workDataOf(PROGRESS to progress, FILE_ID to file.id)) } - Log.d(TAG, "download $progress%") + SentryLog.d(TAG, "download $progress%") downloadNotification.apply { setContentText("$progress%") setProgress(100, progress, false) @@ -218,7 +218,7 @@ class DownloadWorker(context: Context, workerParams: WorkerParameters) : Corouti outputStream: AutoCloseOutputStream? = null, onFinish: (() -> Unit)? = null ) { - Log.d(TAG, "save remote data to ${outputFile?.path}") + SentryLog.d(TAG, "save remote data to ${outputFile?.path}") BufferedInputStream(response.body?.byteStream()).use { input -> val stream = outputStream ?: outputFile?.outputStream() stream?.use { output -> diff --git a/app/src/main/java/com/infomaniak/drive/data/services/MqttClientWrapper.kt b/app/src/main/java/com/infomaniak/drive/data/services/MqttClientWrapper.kt index 6bf055367a..6966dc930e 100644 --- a/app/src/main/java/com/infomaniak/drive/data/services/MqttClientWrapper.kt +++ b/app/src/main/java/com/infomaniak/drive/data/services/MqttClientWrapper.kt @@ -19,7 +19,6 @@ package com.infomaniak.drive.data.services import android.content.Context import android.os.CountDownTimer -import android.util.Log import androidx.lifecycle.LiveData import com.infomaniak.drive.data.models.IpsToken import com.infomaniak.drive.data.models.MqttAction @@ -27,6 +26,7 @@ import com.infomaniak.drive.data.models.MqttNotification import com.infomaniak.drive.utils.BulkOperationsUtils.isBulkOperationActive import com.infomaniak.drive.utils.isPositive import com.infomaniak.lib.core.api.ApiController.gson +import com.infomaniak.lib.core.utils.SentryLog import com.infomaniak.lib.core.utils.Utils import info.mqtt.android.service.MqttAndroidClient import org.eclipse.paho.client.mqttv3.* @@ -88,7 +88,7 @@ object MqttClientWrapper : MqttCallback, LiveData() { try { client.connect(options, null, object : IMqttActionListener { override fun onSuccess(asyncActionToken: IMqttToken?) { - Log.i("MQTT connection", "Success : true") + SentryLog.i("MQTT connection", "Success : true") currentToken?.let { subscribe(topicFor(it)) completion() @@ -108,7 +108,7 @@ object MqttClientWrapper : MqttCallback, LiveData() { override fun onFailure(asyncActionToken: IMqttToken?, exception: Throwable?) { exception?.printStackTrace() - Log.i("MQTT connection", "Success : false") + SentryLog.i("MQTT connection", "Success : false") } }) @@ -133,7 +133,7 @@ object MqttClientWrapper : MqttCallback, LiveData() { } override fun connectionLost(cause: Throwable?) { - Log.e("MQTT Error", "Connection has been lost. Stacktrace below.") + SentryLog.e("MQTT Error", "Connection has been lost. Stacktrace below.") cause?.printStackTrace() } 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 83719206df..742d536183 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 @@ -24,7 +24,6 @@ import android.net.Uri import android.os.Build import android.provider.MediaStore import android.provider.OpenableColumns -import android.util.Log import androidx.core.app.NotificationManagerCompat import androidx.core.net.toFile import androidx.lifecycle.LiveData @@ -48,10 +47,7 @@ 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.calculateFileSize -import com.infomaniak.lib.core.utils.getFileName -import com.infomaniak.lib.core.utils.getFileSize -import com.infomaniak.lib.core.utils.hasPermissions +import com.infomaniak.lib.core.utils.* import io.sentry.Breadcrumb import io.sentry.Sentry import io.sentry.SentryLevel @@ -73,7 +69,7 @@ class UploadWorker(appContext: Context, params: WorkerParameters) : CoroutineWor override suspend fun doWork(): Result { - Log.d(TAG, "UploadWorker starts job!") + SentryLog.d(TAG, "UploadWorker starts job!") contentResolver = applicationContext.contentResolver // Checks if the maximum number of retry allowed is reached @@ -108,7 +104,7 @@ class UploadWorker(appContext: Context, params: WorkerParameters) : CoroutineWor private fun checkPermissions(): Result? { if (!applicationContext.hasPermissions(DrivePermissions.permissions)) { UploadNotifications.permissionErrorNotification(applicationContext) - Log.d(TAG, "UploadWorker no permissions") + SentryLog.d(TAG, "UploadWorker no permissions") return Result.failure() } return null @@ -116,7 +112,7 @@ class UploadWorker(appContext: Context, params: WorkerParameters) : CoroutineWor private suspend fun retrieveLatestNotSyncedMedia(): SyncSettings? { return UploadFile.getAppSyncSettings()?.also { - Log.d(TAG, "UploadWorker check locals") + SentryLog.d(TAG, "UploadWorker check locals") checkLocalLastMedias(it) } } @@ -125,7 +121,7 @@ class UploadWorker(appContext: Context, params: WorkerParameters) : CoroutineWor val isCancelledByUser = inputData.getBoolean(CANCELLED_BY_USER, false) if (UploadFile.getAllPendingUploadsCount() == 0 && isCancelledByUser) { UploadNotifications.showCancelledByUserNotification(applicationContext) - Log.d(TAG, "UploadWorker cancelled by user") + SentryLog.d(TAG, "UploadWorker cancelled by user") return Result.success() } return null @@ -137,10 +133,10 @@ class UploadWorker(appContext: Context, params: WorkerParameters) : CoroutineWor if (pendingCount > 0) applicationContext.cancelNotification(NotificationUtils.UPLOAD_STATUS_ID) - Log.d(TAG, "startSyncFiles> upload for ${uploadFiles.count()}") + SentryLog.d(TAG, "startSyncFiles> upload for ${uploadFiles.count()}") for (uploadFile in uploadFiles) { - Log.d(TAG, "startSyncFiles> upload ${uploadFile.fileName}") + SentryLog.d(TAG, "startSyncFiles> upload ${uploadFile.fileName}") if (uploadFile.initUpload()) { successNames.add(uploadFile.fileName) @@ -157,7 +153,7 @@ class UploadWorker(appContext: Context, params: WorkerParameters) : CoroutineWor uploadedCount = successCount - Log.d(TAG, "startSyncFiles: finish with $uploadedCount uploaded") + SentryLog.d(TAG, "startSyncFiles: finish with $uploadedCount uploaded") currentUploadFile?.showUploadedFilesNotification(applicationContext, successCount, successNames, failedCount, failedNames) if (uploadedCount > 0) Result.success() else Result.failure() @@ -225,12 +221,12 @@ class UploadWorker(appContext: Context, params: WorkerParameters) : CoroutineWor currentUploadTask = UploadTask(context = applicationContext, uploadFile = this, worker = this@UploadWorker) currentUploadTask!!.start().also { - Log.d(TAG, "startUploadFile> end upload $fileName") + SentryLog.d(TAG, "startUploadFile> end upload $fileName") } } else { deleteIfExists() - Log.d("kDrive", "$TAG > $fileName deleted size:$size") + SentryLog.d("kDrive", "$TAG > $fileName deleted size:$size") Sentry.withScope { scope -> scope.setExtra("data", ApiController.gson.toJson(this)) scope.setExtra("fileName", fileName) @@ -288,7 +284,7 @@ class UploadWorker(appContext: Context, params: WorkerParameters) : CoroutineWor var customSelection: String var customArgs: Array - Log.d(TAG, "checkLocalLastMedias> started with $lastUploadDate") + SentryLog.d(TAG, "checkLocalLastMedias> started with $lastUploadDate") MediaFolder.getAllSyncedFolders().forEach { mediaFolder -> // Add log @@ -297,7 +293,7 @@ class UploadWorker(appContext: Context, params: WorkerParameters) : CoroutineWor message = "sync ${mediaFolder.name}" level = SentryLevel.DEBUG }) - Log.d(TAG, "checkLocalLastMedias> sync folder ${mediaFolder.name}_${mediaFolder.id}") + SentryLog.d(TAG, "checkLocalLastMedias> sync folder ${mediaFolder.name}_${mediaFolder.id}") // Sync media folder customSelection = "$selection AND $IMAGES_BUCKET_ID = ? ${moreCustomConditions()}" @@ -351,7 +347,7 @@ class UploadWorker(appContext: Context, params: WorkerParameters) : CoroutineWor contentResolver.query(contentUri, null, selection, args, sortOrder) ?.use { cursor -> val messageLog = "getLocalLastMediasAsync > from ${mediaFolder.name} ${cursor.count} found" - Log.d(TAG, messageLog) + SentryLog.d(TAG, messageLog) Sentry.addBreadcrumb(Breadcrumb().apply { category = BREADCRUMB_TAG message = messageLog @@ -375,7 +371,7 @@ class UploadWorker(appContext: Context, params: WorkerParameters) : CoroutineWor val fileSize = uri.getFileSize(cursor) val messageLog = "localMediaFound > ${mediaFolder.name}/$fileName found" - Log.d(TAG, messageLog) + SentryLog.d(TAG, messageLog) Sentry.addBreadcrumb(Breadcrumb().apply { category = BREADCRUMB_TAG message = messageLog diff --git a/app/src/main/java/com/infomaniak/drive/data/services/UploadWorkerThrowable.kt b/app/src/main/java/com/infomaniak/drive/data/services/UploadWorkerThrowable.kt index 11ae06608f..9af0db2ce9 100644 --- a/app/src/main/java/com/infomaniak/drive/data/services/UploadWorkerThrowable.kt +++ b/app/src/main/java/com/infomaniak/drive/data/services/UploadWorkerThrowable.kt @@ -17,7 +17,6 @@ */ package com.infomaniak.drive.data.services -import android.util.Log import androidx.work.ListenableWorker.Result import com.infomaniak.drive.data.api.UploadTask import com.infomaniak.drive.data.sync.UploadNotifications.allowedFileSizeExceededNotification @@ -32,6 +31,7 @@ import com.infomaniak.drive.utils.NotificationUtils import com.infomaniak.drive.utils.NotificationUtils.cancelNotification import com.infomaniak.drive.utils.SyncUtils.isSyncActive import com.infomaniak.lib.core.api.ApiController +import com.infomaniak.lib.core.utils.SentryLog import com.infomaniak.lib.core.utils.isNetworkException import io.sentry.Breadcrumb import io.sentry.Sentry @@ -63,7 +63,7 @@ object UploadWorkerThrowable { Result.retry() } catch (exception: CancellationException) { // Work has been cancelled - Log.d(UploadWorker.TAG, "UploadWorker > is CancellationException !") + SentryLog.d(UploadWorker.TAG, "UploadWorker > is CancellationException !") if (applicationContext.isSyncActive()) Result.failure() else Result.retry() } catch (exception: UploadTask.LockErrorException) { diff --git a/app/src/main/java/com/infomaniak/drive/data/sync/MediaObserverService.kt b/app/src/main/java/com/infomaniak/drive/data/sync/MediaObserverService.kt index 693b1e4076..292edb05ad 100644 --- a/app/src/main/java/com/infomaniak/drive/data/sync/MediaObserverService.kt +++ b/app/src/main/java/com/infomaniak/drive/data/sync/MediaObserverService.kt @@ -24,13 +24,13 @@ import android.net.Uri import android.os.Handler import android.os.IBinder import android.provider.MediaStore -import android.util.Log import com.infomaniak.drive.data.models.MediaFolder import com.infomaniak.drive.data.models.UploadFile import com.infomaniak.drive.data.services.UploadWorker.Companion.showSyncConfigNotification import com.infomaniak.drive.utils.SyncUtils.disableAutoSync import com.infomaniak.drive.utils.SyncUtils.isSyncActive import com.infomaniak.drive.utils.SyncUtils.syncImmediately +import com.infomaniak.lib.core.utils.SentryLog import io.sentry.Sentry import kotlinx.coroutines.* @@ -39,7 +39,7 @@ class MediaObserverService : Service() { private var syncJob: Job? = null override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { - Log.d("kDrive", "$TAG > started") + SentryLog.d("kDrive", "$TAG > started") isRunning = true initial() return START_STICKY @@ -68,7 +68,7 @@ class MediaObserverService : Service() { super.onDestroy() isRunning = false contentResolver.unregisterContentObserver(tableObserver) - Log.d("kDrive", "$TAG > destroyed") + SentryLog.d("kDrive", "$TAG > destroyed") } private inner class TableObserver(handler: Handler?) : ContentObserver(handler) { @@ -81,7 +81,7 @@ class MediaObserverService : Service() { } override fun onChange(selfChange: Boolean, uri: Uri?) { - Log.d(TAG, "URL : " + uri.toString()) + SentryLog.d(TAG, "URL : " + uri.toString()) uri?.let { if (!applicationContext.isSyncActive()) { diff --git a/app/src/main/java/com/infomaniak/drive/data/sync/MediaObserverWorker.kt b/app/src/main/java/com/infomaniak/drive/data/sync/MediaObserverWorker.kt index 33ce694623..183fd2ccef 100644 --- a/app/src/main/java/com/infomaniak/drive/data/sync/MediaObserverWorker.kt +++ b/app/src/main/java/com/infomaniak/drive/data/sync/MediaObserverWorker.kt @@ -19,7 +19,6 @@ package com.infomaniak.drive.data.sync import android.content.Context import android.os.Build -import android.util.Log import androidx.annotation.RequiresApi import androidx.work.* import com.infomaniak.drive.data.models.MediaFolder @@ -31,6 +30,7 @@ import com.infomaniak.drive.utils.NotificationUtils.fileObserveServiceNotificati import com.infomaniak.drive.utils.SyncUtils.disableAutoSync import com.infomaniak.drive.utils.SyncUtils.isSyncActive import com.infomaniak.drive.utils.SyncUtils.syncImmediately +import com.infomaniak.lib.core.utils.SentryLog import io.sentry.Sentry import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext @@ -40,7 +40,7 @@ import java.util.concurrent.TimeUnit class MediaObserverWorker(appContext: Context, params: WorkerParameters) : CoroutineWorker(appContext, params) { override suspend fun doWork(): Result = withContext(Dispatchers.IO) { - Log.d("MediaContentJob", "$TAG> JOB STARTED!") + SentryLog.d("MediaContentJob", "$TAG> JOB STARTED!") triggeredContentAuthorities.ifEmpty { null }?.let { if (!applicationContext.isSyncActive()) { @@ -70,7 +70,7 @@ class MediaObserverWorker(appContext: Context, params: WorkerParameters) : Corou } fun nextScheduleWork(context: Context) { - Log.d("MediaContentJob", "JOB INIT!") + SentryLog.d("MediaContentJob", "JOB INIT!") val syncSetting = UploadFile.getAppSyncSettings() if (syncSetting == null) { diff --git a/app/src/main/java/com/infomaniak/drive/ui/MainActivity.kt b/app/src/main/java/com/infomaniak/drive/ui/MainActivity.kt index db98dd8417..2b4f945403 100644 --- a/app/src/main/java/com/infomaniak/drive/ui/MainActivity.kt +++ b/app/src/main/java/com/infomaniak/drive/ui/MainActivity.kt @@ -32,7 +32,6 @@ import android.os.Bundle import android.os.FileObserver import android.provider.DocumentsContract import android.provider.MediaStore -import android.util.Log import android.view.View import androidx.activity.result.IntentSenderRequest import androidx.activity.result.contract.ActivityResultContracts.StartIntentSenderForResult @@ -69,6 +68,7 @@ import com.infomaniak.lib.applock.LockActivity import com.infomaniak.lib.applock.Utils.isKeyguardSecure import com.infomaniak.lib.core.networking.LiveDataNetworkStatus import com.infomaniak.lib.core.utils.CoilUtils.simpleImageLoader +import com.infomaniak.lib.core.utils.SentryLog import com.infomaniak.lib.core.utils.UtilsUi.generateInitialsAvatarDrawable import com.infomaniak.lib.core.utils.UtilsUi.getBackgroundColorBasedOnId import com.infomaniak.lib.core.utils.whenResultIsOk @@ -175,7 +175,7 @@ class MainActivity : BaseActivity() { private fun listenToNetworkStatus() { LiveDataNetworkStatus(this).observe(this) { isAvailable -> - Log.d("Internet availability", if (isAvailable) "Available" else "Unavailable") + SentryLog.d("Internet availability", if (isAvailable) "Available" else "Unavailable") Sentry.addBreadcrumb(Breadcrumb().apply { category = "Network" message = "Internet access is available : $isAvailable" diff --git a/app/src/main/java/com/infomaniak/drive/ui/fileList/FileAdapter.kt b/app/src/main/java/com/infomaniak/drive/ui/fileList/FileAdapter.kt index 56e4efa03b..57decd29a2 100644 --- a/app/src/main/java/com/infomaniak/drive/ui/fileList/FileAdapter.kt +++ b/app/src/main/java/com/infomaniak/drive/ui/fileList/FileAdapter.kt @@ -358,7 +358,7 @@ open class FileAdapter( private fun View.checkIfEnableFile(file: File) = when { uploadInProgress -> { if (file.isPendingUploadFolder()) { - fileDate?.setText(file.path) + fileDate?.text = file.path } else { val enable = file.currentProgress > 0 && context.isSyncActive() val title = when { diff --git a/app/src/main/java/com/infomaniak/drive/ui/fileList/FileListFragment.kt b/app/src/main/java/com/infomaniak/drive/ui/fileList/FileListFragment.kt index 62a35b190b..7fddb09d02 100644 --- a/app/src/main/java/com/infomaniak/drive/ui/fileList/FileListFragment.kt +++ b/app/src/main/java/com/infomaniak/drive/ui/fileList/FileListFragment.kt @@ -20,7 +20,6 @@ package com.infomaniak.drive.ui.fileList import android.content.res.Configuration import android.os.Bundle import android.os.CountDownTimer -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -164,8 +163,8 @@ open class FileListFragment : MultiSelectFragment(MATOMO_CATEGORY), SwipeRefresh } } - mainViewModel.navigateFileListTo.observe(viewLifecycleOwner) { - it?.let { file -> if (file.isFolder()) file.openFolder() else file.displayFile(withCurrentFiles = false) } + mainViewModel.navigateFileListTo.observe(viewLifecycleOwner) { file -> + if (file.isFolder()) file.openFolder() else file.displayFile(withCurrentFiles = false) } mainViewModel.createDropBoxSuccess.observe(viewLifecycleOwner) { dropBox -> @@ -247,12 +246,10 @@ open class FileListFragment : MultiSelectFragment(MATOMO_CATEGORY), SwipeRefresh } mainViewModel.refreshActivities.observe(viewLifecycleOwner) { - it?.let { - showPendingFiles() - when (findNavController().currentDestination?.id) { - R.id.searchFragment, R.id.sharedWithMeFragment -> Unit - else -> refreshActivities() - } + showPendingFiles() + when (findNavController().currentDestination?.id) { + R.id.searchFragment, R.id.sharedWithMeFragment -> Unit + else -> refreshActivities() } } @@ -477,12 +474,10 @@ open class FileListFragment : MultiSelectFragment(MATOMO_CATEGORY), SwipeRefresh setPagination({ if (!fileAdapter.isComplete) fileAdapter.showLoading() }) } - mainViewModel.updateOfflineFile.observe(viewLifecycleOwner) { - it?.let { fileId -> - if (findNavController().currentDestination?.id == R.id.offlineFileFragment) { - fileAdapter.deleteByFileId(fileId) - checkIfNoFiles() - } + mainViewModel.updateOfflineFile.observe(viewLifecycleOwner) { fileId -> + if (findNavController().currentDestination?.id == R.id.offlineFileFragment) { + fileAdapter.deleteByFileId(fileId) + checkIfNoFiles() } } } @@ -576,7 +571,7 @@ open class FileListFragment : MultiSelectFragment(MATOMO_CATEGORY), SwipeRefresh } } } - Log.i("isPendingOffline", "progress from fragment $progress% for file $fileId, state:${workInfo.state}") + SentryLog.i("isPendingOffline", "progress from fragment $progress% for file $fileId, state:${workInfo.state}") } mainViewModel.updateVisibleFiles.observe(viewLifecycleOwner) { diff --git a/app/src/main/java/com/infomaniak/drive/ui/fileList/UploadInProgressFragment.kt b/app/src/main/java/com/infomaniak/drive/ui/fileList/UploadInProgressFragment.kt index ce356fcc82..9dae90b15d 100644 --- a/app/src/main/java/com/infomaniak/drive/ui/fileList/UploadInProgressFragment.kt +++ b/app/src/main/java/com/infomaniak/drive/ui/fileList/UploadInProgressFragment.kt @@ -18,7 +18,6 @@ package com.infomaniak.drive.ui.fileList import android.os.Bundle -import android.util.Log import android.view.View import androidx.activity.addCallback import androidx.core.view.isGone @@ -39,6 +38,7 @@ import com.infomaniak.drive.utils.DrivePermissions import com.infomaniak.drive.utils.SyncUtils.syncImmediately import com.infomaniak.drive.utils.Utils import com.infomaniak.drive.utils.navigateToUploadView +import com.infomaniak.lib.core.utils.SentryLog import com.infomaniak.lib.core.utils.SnackbarUtils.showSnackbar import io.realm.RealmResults import kotlinx.android.synthetic.main.activity_main.mainFab @@ -114,7 +114,7 @@ class UploadInProgressFragment : FileListFragment() { } } - Log.d("uploadInProgress", "$fileName $progress%") + SentryLog.d("uploadInProgress", "$fileName $progress%") } } diff --git a/app/src/main/java/com/infomaniak/drive/utils/AccountUtils.kt b/app/src/main/java/com/infomaniak/drive/utils/AccountUtils.kt index 0b31f9031e..a82a4397a8 100644 --- a/app/src/main/java/com/infomaniak/drive/utils/AccountUtils.kt +++ b/app/src/main/java/com/infomaniak/drive/utils/AccountUtils.kt @@ -19,7 +19,6 @@ package com.infomaniak.drive.utils import android.content.Context import android.os.Bundle -import android.util.Log import androidx.core.os.bundleOf import com.infomaniak.drive.data.api.ApiRepository import com.infomaniak.drive.data.api.ErrorCode @@ -41,6 +40,7 @@ import com.infomaniak.lib.core.models.ApiResponse import com.infomaniak.lib.core.models.user.User import com.infomaniak.lib.core.networking.HttpClient import com.infomaniak.lib.core.room.UserDatabase +import com.infomaniak.lib.core.utils.SentryLog import io.sentry.Sentry import kotlinx.coroutines.* import kotlinx.coroutines.sync.withLock @@ -188,7 +188,7 @@ object AccountUtils : CredentialManager() { HttpClient.okHttpClientNoTokenInterceptor, user.apiToken, onError = { - Log.e("deleteTokenError", "Api response error : ${LoginActivity.getLoginErrorDescription(context, it)}") + SentryLog.e("deleteTokenError", "Api response error : ${LoginActivity.getLoginErrorDescription(context, it)}") } ) } @@ -248,7 +248,7 @@ object AccountUtils : CredentialManager() { filesDir.deleteRecursively() cacheDir.deleteRecursively() } - Log.i("AccountUtils", "resetApp> all user data has been deleted") + SentryLog.i("AccountUtils", "resetApp> all user data has been deleted") } } diff --git a/app/src/main/java/com/infomaniak/drive/utils/SyncUtils.kt b/app/src/main/java/com/infomaniak/drive/utils/SyncUtils.kt index 3ea64e529c..a3802bbb94 100644 --- a/app/src/main/java/com/infomaniak/drive/utils/SyncUtils.kt +++ b/app/src/main/java/com/infomaniak/drive/utils/SyncUtils.kt @@ -23,7 +23,6 @@ import android.database.Cursor import android.os.Build import android.provider.DocumentsContract import android.provider.MediaStore -import android.util.Log import androidx.fragment.app.FragmentActivity import androidx.work.* import com.infomaniak.drive.data.models.SyncSettings @@ -32,6 +31,7 @@ import com.infomaniak.drive.data.services.PeriodicUploadWorker import com.infomaniak.drive.data.services.UploadWorker import com.infomaniak.drive.data.sync.MediaObserverService import com.infomaniak.drive.data.sync.MediaObserverWorker +import com.infomaniak.lib.core.utils.SentryLog import java.util.Date object SyncUtils { @@ -137,7 +137,7 @@ object SyncUtils { fun Context.startContentObserverService() { if (UploadFile.getAppSyncSettings()?.syncImmediately == true) { - Log.d("kDrive", "start content observer!") + SentryLog.d("kDrive", "start content observer!") if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) MediaObserverWorker.scheduleWork(this) else startService(Intent(applicationContext, MediaObserverService::class.java)) diff --git a/app/src/main/java/com/infomaniak/drive/views/FileInfoActionsView.kt b/app/src/main/java/com/infomaniak/drive/views/FileInfoActionsView.kt index 146df82357..af80d64e74 100644 --- a/app/src/main/java/com/infomaniak/drive/views/FileInfoActionsView.kt +++ b/app/src/main/java/com/infomaniak/drive/views/FileInfoActionsView.kt @@ -20,7 +20,6 @@ package com.infomaniak.drive.views import android.content.Context import android.content.Intent import android.util.AttributeSet -import android.util.Log import android.view.View import android.widget.FrameLayout import androidx.activity.result.ActivityResultLauncher @@ -53,6 +52,7 @@ import com.infomaniak.drive.utils.* import com.infomaniak.drive.utils.Utils.moveFileClicked import com.infomaniak.lib.core.utils.ApiErrorCode.Companion.translateError import com.infomaniak.lib.core.utils.DownloadManagerUtils +import com.infomaniak.lib.core.utils.SentryLog import com.infomaniak.lib.core.utils.safeNavigate import io.sentry.Sentry import kotlinx.android.synthetic.main.view_file_info_actions.view.* @@ -354,7 +354,7 @@ class FileInfoActionsView @JvmOverloads constructor( val fileId: Int = currentFile.id val progress = workInfo.progress.getInt(DownloadWorker.PROGRESS, 100) - Log.d("FileInfoActionsView", "observeOfflineProgression> $progress% file:$fileId state:${workInfo.state}") + SentryLog.d("FileInfoActionsView", "observeOfflineProgression> $progress% file:$fileId state:${workInfo.state}") currentFile.currentProgress = progress // Check isOffline because progressing to 100 doesn't necessarily mean it's finish diff --git a/app/src/standard/java/com/infomaniak/drive/DriveMessagingService.kt b/app/src/standard/java/com/infomaniak/drive/DriveMessagingService.kt index 52d1d91779..1b17d2ac87 100644 --- a/app/src/standard/java/com/infomaniak/drive/DriveMessagingService.kt +++ b/app/src/standard/java/com/infomaniak/drive/DriveMessagingService.kt @@ -1,18 +1,18 @@ package com.infomaniak.drive -import android.util.Log import com.google.firebase.messaging.FirebaseMessagingService import com.google.firebase.messaging.RemoteMessage +import com.infomaniak.lib.core.utils.SentryLog class DriveMessagingService : FirebaseMessagingService() { override fun onNewToken(token: String) { - Log.d("onNewToken", token) + SentryLog.d("onNewToken", token) } override fun onMessageReceived(remoteMessage: RemoteMessage) { if (remoteMessage.data.isNotEmpty()) { - Log.d("onMessageReceived", "Message data payload: " + remoteMessage.data) + SentryLog.d("onMessageReceived", "Message data payload: " + remoteMessage.data) } } -} \ No newline at end of file +} diff --git a/app/src/standard/java/com/infomaniak/drive/GeniusScanUtils.kt b/app/src/standard/java/com/infomaniak/drive/GeniusScanUtils.kt index 871a7cc8d9..fc21302931 100644 --- a/app/src/standard/java/com/infomaniak/drive/GeniusScanUtils.kt +++ b/app/src/standard/java/com/infomaniak/drive/GeniusScanUtils.kt @@ -19,7 +19,6 @@ package com.infomaniak.drive import android.content.Context import android.content.Intent -import android.util.Log import androidx.activity.result.ActivityResultLauncher import androidx.core.content.ContextCompat import androidx.core.content.FileProvider @@ -36,6 +35,7 @@ import com.infomaniak.drive.utils.AccountUtils import com.infomaniak.drive.utils.IGeniusScanUtils import com.infomaniak.drive.utils.IOFile import com.infomaniak.lib.core.utils.FORMAT_NEW_FILE +import com.infomaniak.lib.core.utils.SentryLog import com.infomaniak.lib.core.utils.SnackbarUtils.showSnackbar import com.infomaniak.lib.core.utils.format import io.sentry.Sentry @@ -92,7 +92,7 @@ object GeniusScanUtils : IGeniusScanUtils { true } catch (licenseException: LicenseException) { licenseException.printStackTrace() - Log.e("GeniusScanSDK", "The license is expired or invalid") + SentryLog.e("GeniusScanSDK", "The license is expired or invalid") Sentry.captureException(licenseException) false }