diff --git a/lib/main.dart b/lib/main.dart index 945ac4f..8c8fd86 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -52,8 +52,6 @@ class ZapstoreApp extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { - ref.watch(relayListenerProvider); - return MaterialApp.router( builder: materialErrorBuilder, routerConfig: appRouter, diff --git a/lib/models/app.dart b/lib/models/app.dart index d6af5eb..52be61d 100644 --- a/lib/models/app.dart +++ b/lib/models/app.dart @@ -194,7 +194,7 @@ mixin AppAdapter on Adapter { return super.findAll(params: params); } - Future> findInstalled() async { + Future> checkForUpdates() async { final appIds = await _installedIdentifiers(); if (appIds.isNotEmpty) { final apps = await fetchAppModels({'#d': appIds}); diff --git a/lib/models/nostr_adapter.dart b/lib/models/nostr_adapter.dart index 4d3291a..686cbaa 100644 --- a/lib/models/nostr_adapter.dart +++ b/lib/models/nostr_adapter.dart @@ -8,6 +8,7 @@ import 'package:zapstore/main.data.dart'; import 'package:zapstore/models/app.dart'; import 'package:zapstore/models/release.dart'; import 'package:zapstore/utils/system_info.dart'; +import 'package:zapstore/widgets/latest_releases_container.dart'; // NOTE: Very important to use const in relay args to preserve equality in Riverpod families // const kAppRelays = {'ws://10.0.2.2:3000'}; @@ -136,9 +137,9 @@ class RelayListenerNotifier extends Notifier { @override void build() { print('Building main listener'); - // TODO: Every 1 hour fetch(); - final timer = Timer.periodic(Duration(minutes: 10), (_) => fetch()); + // TODO: Every 1 hour + final timer = Timer.periodic(Duration(minutes: 2), (_) => fetch()); // This will get disposed when clearing and restarting the app ref.onDispose(() { @@ -147,8 +148,11 @@ class RelayListenerNotifier extends Notifier { } Future fetch() async { - // ref.apps.appAdapter.findInstalled(); - // await ref.read(latestReleasesAppProvider.notifier).fetch(); + await Future.microtask(() async { + print('CALLING ${DateTime.now().toIso8601String()}'); + await ref.read(latestReleasesAppProvider.notifier).fetch(); + await ref.apps.appAdapter.checkForUpdates(); + }); } } diff --git a/lib/navigation/app_initializer.dart b/lib/navigation/app_initializer.dart index 6b878f0..53c1e4d 100644 --- a/lib/navigation/app_initializer.dart +++ b/lib/navigation/app_initializer.dart @@ -5,6 +5,7 @@ import 'package:zapstore/main.dart'; import 'package:zapstore/main.data.dart'; import 'package:zapstore/models/app.dart'; import 'package:zapstore/models/local_app.dart'; +import 'package:zapstore/models/nostr_adapter.dart'; import 'package:zapstore/navigation/router.dart'; import 'package:zapstore/widgets/app_curation_container.dart'; @@ -54,9 +55,6 @@ final appInitializer = FutureProvider((ref) async { // Preload zapstore's nostr curation set await ref.read(appCurationSetProvider(kNostrCurationSet).notifier).fetch(); - // Trigger app install status calculations in the background - ref.localApps.localAppAdapter.refreshUpdateStatus(); - // Handle deep links final appLinksSub = appLinks.uriLinkStream.listen((uri) async { if (uri.scheme == "zapstore") { diff --git a/lib/navigation/router.dart b/lib/navigation/router.dart index e1f8a6f..f454c01 100644 --- a/lib/navigation/router.dart +++ b/lib/navigation/router.dart @@ -3,6 +3,7 @@ import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:zapstore/main.dart'; import 'package:zapstore/models/app.dart'; +import 'package:zapstore/models/nostr_adapter.dart'; import 'package:zapstore/navigation/app_initializer.dart'; import 'package:zapstore/navigation/desktop_scaffold.dart'; import 'package:zapstore/navigation/mobile_scaffold.dart'; @@ -103,6 +104,10 @@ class ScaffoldWithNestedNavigation extends HookConsumerWidget { child: initializer.when( data: (_) => LayoutBuilder( builder: (context, constraints) { + // At this point initialization is done + // listen to relay + ref.watch(relayListenerProvider); + if (constraints.maxWidth < 550) { return MobileScaffold( body: navigationShell, diff --git a/lib/widgets/latest_releases_container.dart b/lib/widgets/latest_releases_container.dart index 46b811c..f74d692 100644 --- a/lib/widgets/latest_releases_container.dart +++ b/lib/widgets/latest_releases_container.dart @@ -88,9 +88,7 @@ class LatestReleasesAppNotifier extends StateNotifier>> { int page = 1; Ref ref; - LatestReleasesAppNotifier(this.ref) : super(AsyncLoading()) { - fetch(); - } + LatestReleasesAppNotifier(this.ref) : super(AsyncLoading()); // @override // Future> build() async {