From 672e187814c6a9529d8a711d88185a3b38dcfaf0 Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Sun, 8 Feb 2026 12:15:05 -0500 Subject: [PATCH] wait for init --- lib/controllers/client_controller.dart | 4 ++++ lib/controllers/init_complete_controller.dart | 11 +++++++++++ lib/main.dart | 6 +++++- 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 lib/controllers/init_complete_controller.dart diff --git a/lib/controllers/client_controller.dart b/lib/controllers/client_controller.dart index abfdb72..1ae79fa 100644 --- a/lib/controllers/client_controller.dart +++ b/lib/controllers/client_controller.dart @@ -5,6 +5,7 @@ import "package:fast_immutable_collections/fast_immutable_collections.dart"; import "package:ffi/ffi.dart"; import "package:flutter/foundation.dart"; import "package:nexus/controllers/client_state_controller.dart"; +import "package:nexus/controllers/init_complete_controller.dart"; import "package:nexus/controllers/rooms_controller.dart"; import "package:nexus/controllers/space_edges_controller.dart"; import "package:nexus/controllers/sync_status_controller.dart"; @@ -58,6 +59,9 @@ class ClientController extends AsyncNotifier { .watch(SyncStatusController.provider.notifier) .set(SyncStatus.fromJson(decodedMuksEvent)); break; + case "init_complete": + ref.watch(InitCompleteController.provider.notifier).complete(); + break; case "sync_complete": final syncData = SyncData.fromJson(decodedMuksEvent); final roomProvider = RoomsController.provider; diff --git a/lib/controllers/init_complete_controller.dart b/lib/controllers/init_complete_controller.dart new file mode 100644 index 0000000..c011472 --- /dev/null +++ b/lib/controllers/init_complete_controller.dart @@ -0,0 +1,11 @@ +import "package:flutter_riverpod/flutter_riverpod.dart"; + +class InitCompleteController extends Notifier { + @override + bool build() => false; + void complete() => state = true; + + static final provider = NotifierProvider( + InitCompleteController.new, + ); +} diff --git a/lib/main.dart b/lib/main.dart index ab65e4b..2d6fd0d 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -6,6 +6,7 @@ import "package:flutter_riverpod/flutter_riverpod.dart"; import "package:nexus/controllers/client_controller.dart"; import "package:nexus/controllers/client_state_controller.dart"; import "package:nexus/controllers/header_controller.dart"; +import "package:nexus/controllers/init_complete_controller.dart"; import "package:nexus/controllers/multi_provider_controller.dart"; import "package:nexus/controllers/shared_prefs_controller.dart"; import "package:nexus/helpers/extensions/better_when.dart"; @@ -122,6 +123,7 @@ class App extends StatelessWidget { final clientState = ref.watch( ClientStateController.provider, ); + if (clientState == null || !clientState.isInitialized) { return Loading(); } @@ -131,7 +133,9 @@ class App extends StatelessWidget { } else if (!clientState.isVerified) { return VerifyPage(); } else { - return ChatPage(); + return ref.watch(InitCompleteController.provider) + ? ChatPage() + : Loading(); } }, ),