From 9dfa418e923f3a4e55fd106df20a552ae9bca1b5 Mon Sep 17 00:00:00 2001 From: flemming-it Date: Fri, 19 Jun 2026 02:25:39 +0200 Subject: [PATCH] fix(ui): never hang on a blank frame when the hub is unreachable main() awaited the hub health probe before runApp(); a gRPC-web error out of HubRepository.connect propagated and left the app on a white page. Guard the settings+probe in main() with a MockRepository fallback so the first frame always paints. Signed-off-by: flemming-it --- app/lib/main.dart | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/app/lib/main.dart b/app/lib/main.dart index 83e9b52..038c14c 100644 --- a/app/lib/main.dart +++ b/app/lib/main.dart @@ -9,8 +9,22 @@ import 'theme/reclaim_theme.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); - final settings = await HubSettings.load(); - final repository = await _pickRepository(settings); + // Acquiring settings + probing the hub must never prevent the + // first frame. Any failure here falls back to demo data so the + // app always paints instead of hanging on a blank page. + HubSettings settings; + EvaluationRepository repository; + try { + settings = await HubSettings.load(); + repository = await _pickRepository(settings); + } catch (_) { + settings = const HubSettings( + host: HubSettings.defaultHost, + port: HubSettings.defaultPort, + secure: false, + ); + repository = const MockRepository(); + } runApp(ReclaimApp(repository: repository, settings: settings)); }