diff --git a/lib/models/local_app.dart b/lib/models/local_app.dart index 7d04838..fb5824f 100644 --- a/lib/models/local_app.dart +++ b/lib/models/local_app.dart @@ -81,7 +81,10 @@ mixin LocalAppAdapter on Adapter { .saveLocal(); } - // Update number of apps + updateNumberOfApps(); + } + + void updateNumberOfApps() { final rs = db.select( 'SELECT count(*) as c FROM localApps WHERE json_extract(data, \'\$.status\') is \'updatable\''); ref.read(appsToUpdateProvider.notifier).state = rs.first['c']; diff --git a/lib/navigation/app_initializer.dart b/lib/navigation/app_initializer.dart index 9164c23..60e8ddb 100644 --- a/lib/navigation/app_initializer.dart +++ b/lib/navigation/app_initializer.dart @@ -39,6 +39,8 @@ final appInitializer = FutureProvider((ref) async { // Preload zapstore's nostr curation set await ref.read(appCurationSetProvider(kNostrCurationSet).notifier).fetch(); + ref.localApps.localAppAdapter.updateNumberOfApps(); + // Handle deep links final appLinksSub = appLinks.uriLinkStream.listen((uri) async { if (uri.scheme == "zapstore") { diff --git a/lib/screens/updates_screen.dart b/lib/screens/updates_screen.dart index dee7b0a..84f5c19 100644 --- a/lib/screens/updates_screen.dart +++ b/lib/screens/updates_screen.dart @@ -14,8 +14,7 @@ class UpdatesScreen extends HookConsumerWidget { Widget build(BuildContext context, WidgetRef ref) { final state = ref.watch(updatesProvider); - if (!state.hasValue) return Container(); - final (updatedApps, updatableApps) = state.value!; + final (updatedApps, updatableApps) = state.value ?? ([], []); return SingleChildScrollView( physics: AlwaysScrollableScrollPhysics(), @@ -30,7 +29,8 @@ class UpdatesScreen extends HookConsumerWidget { style: TextStyle(fontSize: 30, fontWeight: FontWeight.bold)), ], ), - if (updatedApps.isEmpty && updatableApps.isEmpty) SpinningLogo(), + if (updatedApps.isEmpty && updatableApps.isEmpty) + SpinningLogo(size: 80), if (updatableApps.isNotEmpty) Column( crossAxisAlignment: CrossAxisAlignment.start,