From b5645f29a6f6fd39cf98e3b3e94eba55f83057b1 Mon Sep 17 00:00:00 2001 From: Abhishek Shroff Date: Mon, 5 May 2025 09:14:22 +0530 Subject: [PATCH] [client] Fix schema migration --- client/lib/libphylum/db/db.dart | 21 ++++++++++++------- client/lib/libphylum/parsers/publinks.dart | 6 +++--- client/lib/libphylum/parsers/resources.dart | 4 ++-- .../lib/ui/explorer/resource_details_row.dart | 2 +- .../lib/ui/explorer/resource_info_view.dart | 2 +- 5 files changed, 20 insertions(+), 15 deletions(-) diff --git a/client/lib/libphylum/db/db.dart b/client/lib/libphylum/db/db.dart index 9208ad79..c1b37137 100644 --- a/client/lib/libphylum/db/db.dart +++ b/client/lib/libphylum/db/db.dart @@ -24,7 +24,7 @@ class AppDatabase extends _$AppDatabase { AppDatabase.fromExecutor({required this.accountId, required QueryExecutor executor}) : super(executor); @override - int get schemaVersion => 4; + int get schemaVersion => 5; @override MigrationStrategy get migration => MigrationStrategy( @@ -33,17 +33,22 @@ class AppDatabase extends _$AppDatabase { }, onUpgrade: (m, from, to) async { if (from < 2) { - m.drop(orderedBookmarks); - m.drop(bookmarks); - m.create(bookmarks); - m.create(orderedBookmarks); + await m.drop(orderedBookmarks); + await m.drop(bookmarks); + await m.create(bookmarks); + await m.create(orderedBookmarks); } if (from < 3) { - m.drop(resources); - m.create(resources); + await m.drop(resources); + await m.create(resources); } if (from < 4) { - m.create(trashedResources); + await m.create(trashedResources); + } + if (from < 5) { + await m.drop(resources); + await m.create(resources); + await m.create(publinks); } }, ); diff --git a/client/lib/libphylum/parsers/publinks.dart b/client/lib/libphylum/parsers/publinks.dart index a3d3f354..f7489c78 100644 --- a/client/lib/libphylum/parsers/publinks.dart +++ b/client/lib/libphylum/parsers/publinks.dart @@ -1,10 +1,10 @@ part of 'parsers.dart'; -Iterable? parsePublinks(List? data, String? root) { - return data?.map((e) => parsePublink(e.cast(), root: root)); +Iterable parsePublinks(List data, String? root) { + return data.map((e) => parsePublink(e, root: root)); } -Publink parsePublink(Map data, {String? root}) { +Publink parsePublink(Map data, {String? root}) { return Publink( id: data['id'], created: data['created'] == null ? null : DateTime.fromMillisecondsSinceEpoch(data['created']), diff --git a/client/lib/libphylum/parsers/resources.dart b/client/lib/libphylum/parsers/resources.dart index 4ab16ebe..75bb5e29 100644 --- a/client/lib/libphylum/parsers/resources.dart +++ b/client/lib/libphylum/parsers/resources.dart @@ -29,8 +29,8 @@ FullResource parseFullResource(Map data) { permissions: data['permissions'].isEmpty ? null : data['permissions'], grants: data['grants'].isEmpty || data['grants'] == '{}' ? null : data['grants'], ); - final publinks = parsePublinks(data['publinks'] as List, r.id); - return FullResource(resource: r, publinks: publinks!); + final publinks = parsePublinks((data['publinks'] as List).cast(), r.id); + return FullResource(resource: r, publinks: publinks); } ResourcesCompanion parseResourceAncestor(Map data) { diff --git a/client/lib/ui/explorer/resource_details_row.dart b/client/lib/ui/explorer/resource_details_row.dart index 6daf7e16..fcd57476 100644 --- a/client/lib/ui/explorer/resource_details_row.dart +++ b/client/lib/ui/explorer/resource_details_row.dart @@ -142,7 +142,7 @@ class ResourceDetailsRow extends StatelessWidget { stream: context.read().db.countPublinks(resource.id).watchSingle(), initialData: 0, builder: (context, snapshot) { - if (snapshot.data! > 0) { + if ((snapshot.data ?? 0) > 0) { return const Padding( padding: EdgeInsets.only(right: 6.0), child: Icon(Icons.public, size: _subtitleIconSize), diff --git a/client/lib/ui/explorer/resource_info_view.dart b/client/lib/ui/explorer/resource_info_view.dart index e521e11a..90650225 100644 --- a/client/lib/ui/explorer/resource_info_view.dart +++ b/client/lib/ui/explorer/resource_info_view.dart @@ -108,7 +108,7 @@ class ResourceInfoView extends StatelessWidget { stream: context.read().db.selectPublinks(resource.id).map((l) => l.id).watch(), initialData: const [], builder: (context, snapshot) { - final publinks = snapshot.data!; + final publinks = snapshot.data ?? const []; return ExpansionTile( leading: const Icon(Icons.public), title: const Text('Public Shares'),