Initialization and data loading fixes

This commit is contained in:
franzap
2024-10-22 19:40:08 -03:00
parent b3fa325fe7
commit 2f15600d4e
6 changed files with 16 additions and 13 deletions
-2
View File
@@ -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,
+1 -1
View File
@@ -194,7 +194,7 @@ mixin AppAdapter on Adapter<App> {
return super.findAll(params: params);
}
Future<List<App>> findInstalled() async {
Future<List<App>> checkForUpdates() async {
final appIds = await _installedIdentifiers();
if (appIds.isNotEmpty) {
final apps = await fetchAppModels({'#d': appIds});
+8 -4
View File
@@ -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<void> {
@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<void> {
}
Future<void> 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();
});
}
}
+1 -3
View File
@@ -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<void>((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") {
+5
View File
@@ -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,
+1 -3
View File
@@ -88,9 +88,7 @@ class LatestReleasesAppNotifier extends StateNotifier<AsyncValue<List<App>>> {
int page = 1;
Ref ref;
LatestReleasesAppNotifier(this.ref) : super(AsyncLoading()) {
fetch();
}
LatestReleasesAppNotifier(this.ref) : super(AsyncLoading());
// @override
// Future<List<App>> build() async {