diff --git a/mobile/android/app/src/main/kotlin/app/alextran/immich/sync/MessagesImpl30.kt b/mobile/android/app/src/main/kotlin/app/alextran/immich/sync/MessagesImpl30.kt index 3000d83d9c..8f9052cf90 100644 --- a/mobile/android/app/src/main/kotlin/app/alextran/immich/sync/MessagesImpl30.kt +++ b/mobile/android/app/src/main/kotlin/app/alextran/immich/sync/MessagesImpl30.kt @@ -83,36 +83,24 @@ class NativeSyncApiImpl30(context: Context) : NativeSyncApiImplBase(context), Na storedGen.toString(), storedGen.toString() ) - if (isTrashed) { - val uri = MediaStore.Files.getContentUri(volume) + val cursor = if (isTrashed) { val queryArgs = Bundle().apply { putString(ContentResolver.QUERY_ARG_SQL_SELECTION, selection) putStringArray(ContentResolver.QUERY_ARG_SQL_SELECTION_ARGS, selectionArgs) putInt(MediaStore.QUERY_ARG_MATCH_TRASHED, MediaStore.MATCH_ONLY) } - - ctx.contentResolver.query(uri, ASSET_PROJECTION, queryArgs, null).use { cursor -> - getAssets(cursor).forEach { - when (it) { - is AssetResult.ValidAsset -> { - changed.add(it.asset) - assetAlbums[it.asset.id] = listOf(it.albumId) - } - - is AssetResult.InvalidAsset -> deleted.add(it.assetId) - } - } - } + getCursor(volume, queryArgs) } else { - getAssets(getCursor(volume, selection, selectionArgs)).forEach { - when (it) { - is AssetResult.ValidAsset -> { - changed.add(it.asset) - assetAlbums[it.asset.id] = listOf(it.albumId) - } - - is AssetResult.InvalidAsset -> deleted.add(it.assetId) + getCursor(volume, selection, selectionArgs) + } + getAssets(cursor).forEach { + when (it) { + is AssetResult.ValidAsset -> { + changed.add(it.asset) + assetAlbums[it.asset.id] = listOf(it.albumId) } + + is AssetResult.InvalidAsset -> deleted.add(it.assetId) } } } @@ -130,19 +118,16 @@ class NativeSyncApiImpl30(context: Context) : NativeSyncApiImplBase(context), Na val selectionArgs = mutableListOf(albumId, *MEDIA_SELECTION_ARGS) for (volume in volumes) { - val uri = MediaStore.Files.getContentUri(volume) - val queryArgs = Bundle().apply { + val cursor = getCursor(volume, Bundle().apply { putString(ContentResolver.QUERY_ARG_SQL_SELECTION, selection) putStringArray(ContentResolver.QUERY_ARG_SQL_SELECTION_ARGS, selectionArgs.toTypedArray()) putInt(MediaStore.QUERY_ARG_MATCH_TRASHED, MediaStore.MATCH_ONLY) - } - - ctx.contentResolver.query(uri, ASSET_PROJECTION, queryArgs, null).use { cursor -> - getAssets(cursor).forEach { res -> - if (res is AssetResult.ValidAsset) trashed += res.asset - } + }) + getAssets(cursor).forEach { res -> + if (res is AssetResult.ValidAsset) trashed += res.asset } } + return trashed } diff --git a/mobile/android/app/src/main/kotlin/app/alextran/immich/sync/MessagesImplBase.kt b/mobile/android/app/src/main/kotlin/app/alextran/immich/sync/MessagesImplBase.kt index 88eb5bb931..5ed62c8930 100644 --- a/mobile/android/app/src/main/kotlin/app/alextran/immich/sync/MessagesImplBase.kt +++ b/mobile/android/app/src/main/kotlin/app/alextran/immich/sync/MessagesImplBase.kt @@ -5,6 +5,7 @@ import android.content.ContentUris import android.content.Context import android.database.Cursor import android.net.Uri +import android.os.Bundle import android.provider.MediaStore import android.util.Base64 import androidx.core.database.getStringOrNull @@ -83,6 +84,16 @@ open class NativeSyncApiImplBase(context: Context) { sortOrder, ) + protected fun getCursor( + volume: String, + queryArgs: Bundle + ): Cursor? = ctx.contentResolver.query( + MediaStore.Files.getContentUri(volume), + ASSET_PROJECTION, + queryArgs, + null + ) + protected fun getAssets(cursor: Cursor?): Sequence { return sequence { cursor?.use { c -> diff --git a/mobile/lib/infrastructure/entities/trashed_local_asset.entity.dart b/mobile/lib/infrastructure/entities/trashed_local_asset.entity.dart index 93931f4fdf..15eec2061e 100644 --- a/mobile/lib/infrastructure/entities/trashed_local_asset.entity.dart +++ b/mobile/lib/infrastructure/entities/trashed_local_asset.entity.dart @@ -22,7 +22,6 @@ class TrashedLocalAssetEntity extends Table with DriftDefaultsMixin, AssetEntity @override Set get primaryKey => {id, albumId}; - } extension TrashedLocalAssetEntityDataDomainExtension on TrashedLocalAssetEntityData {