import 'package:flutter/material.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:moneymgr_mobile/providers/auth_state.dart'; import 'package:moneymgr_mobile/services/api/server_api.dart'; import 'package:moneymgr_mobile/widgets/full_screen_error.dart'; class LoadServerConfig extends HookConsumerWidget { final Widget child; const LoadServerConfig({super.key, required this.child}); @override Widget build(BuildContext context, WidgetRef ref) { final serverConfig = ref.watch(serverConfigOrCacheProvider); handleSignOut() { ref.watch(currentAuthStateProvider.notifier).logout(); } return switch (serverConfig) { AsyncData() => child, AsyncError(:final error) => FullScreenError( message: "Failed to load server configuration!", error: error.toString(), actions: [ MaterialButton( onPressed: handleSignOut, child: Text("Sign out".toUpperCase()), ), ], ), _ => const Scaffold(body: Center(child: CircularProgressIndicator())), }; } }