@@ -31,7 +31,7 @@ import 'package:isar/isar.dart';
3131// ignore: import_rule_photo_manager
3232import 'package:photo_manager/photo_manager.dart' ;
3333
34- const int targetVersion = 19 ;
34+ const int targetVersion = 20 ;
3535
3636Future <void > migrateDatabaseIfNeeded (Isar db, Drift drift) async {
3737 final hasVersion = Store .tryGet (StoreKey .version) != null ;
@@ -86,6 +86,10 @@ Future<void> migrateDatabaseIfNeeded(Isar db, Drift drift) async {
8686 }
8787 }
8888
89+ if (version < 20 && Store .isBetaTimelineEnabled) {
90+ await _syncLocalAlbumIsIosSharedAlbum (drift);
91+ }
92+
8993 if (targetVersion >= 12 ) {
9094 await Store .put (StoreKey .version, targetVersion);
9195 return ;
@@ -258,6 +262,25 @@ Future<bool> _populateLocalAssetTime(Drift db) async {
258262 }
259263}
260264
265+ Future <void > _syncLocalAlbumIsIosSharedAlbum (Drift db) async {
266+ try {
267+ final nativeApi = NativeSyncApi ();
268+ final albums = await nativeApi.getAlbums ();
269+ await db.batch ((batch) {
270+ for (final album in albums) {
271+ batch.update (
272+ db.localAlbumEntity,
273+ LocalAlbumEntityCompanion (isIosSharedAlbum: Value (album.isCloud)),
274+ where: (t) => t.id.equals (album.id),
275+ );
276+ }
277+ });
278+ dPrint (() => "[MIGRATION] Successfully updated isIosSharedAlbum for ${albums .length } albums" );
279+ } catch (error) {
280+ dPrint (() => "[MIGRATION] Error while syncing local album isIosSharedAlbum: $error " );
281+ }
282+ }
283+
261284Future <void > migrateDeviceAssetToSqlite (Isar db, Drift drift) async {
262285 try {
263286 final isarDeviceAssets = await db.deviceAssetEntitys.where ().findAll ();
0 commit comments