wait for init

This commit is contained in:
Henry Hiles 2026-02-08 12:15:05 -05:00
commit 672e187814
No known key found for this signature in database
3 changed files with 20 additions and 1 deletions

View file

@ -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<int> {
.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;

View file

@ -0,0 +1,11 @@
import "package:flutter_riverpod/flutter_riverpod.dart";
class InitCompleteController extends Notifier<bool> {
@override
bool build() => false;
void complete() => state = true;
static final provider = NotifierProvider<InitCompleteController, bool>(
InitCompleteController.new,
);
}

View file

@ -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();
}
},
),