From ce88967392318e1c5db200e35730d67aa203aedf Mon Sep 17 00:00:00 2001 From: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com> Date: Fri, 24 Oct 2025 23:15:10 +0530 Subject: [PATCH] fix: handle null bucketId or name in android local sync --- .../app/alextran/immich/sync/MessagesImplBase.kt | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) 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 0ea86bb10dbf5..ca2781f7b4f68 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 @@ -101,9 +101,15 @@ open class NativeSyncApiImplBase(context: Context) : ImmichPlugin() { while (c.moveToNext()) { val id = c.getLong(idColumn).toString() - - val path = c.getString(dataColumn) - if (path.isNullOrBlank() || !File(path).exists()) { + val name = c.getStringOrNull(nameColumn) + val bucketId = c.getStringOrNull(bucketIdColumn) + val path = c.getStringOrNull(dataColumn) + + // Skip assets with invalid metadata + if ( + name.isNullOrBlank() || bucketId.isNullOrBlank() || + path.isNullOrBlank() || !File(path).exists() + ) { yield(AssetResult.InvalidAsset(id)) continue } @@ -113,7 +119,6 @@ open class NativeSyncApiImplBase(context: Context) : ImmichPlugin() { MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO -> 2 else -> 0 } - val name = c.getString(nameColumn) // Date taken is milliseconds since epoch, Date added is seconds since epoch val createdAt = (c.getLong(dateTakenColumn).takeIf { it > 0 }?.div(1000)) ?: c.getLong(dateAddedColumn) @@ -124,7 +129,6 @@ open class NativeSyncApiImplBase(context: Context) : ImmichPlugin() { // Duration is milliseconds val duration = if (mediaType == MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE) 0 else c.getLong(durationColumn) / 1000 - val bucketId = c.getString(bucketIdColumn) val orientation = c.getInt(orientationColumn) val isFavorite = if (favoriteColumn == -1) false else c.getInt(favoriteColumn) != 0