Leave room support, persist last room, fixes
This commit is contained in:
parent
f7c6c3bb6a
commit
7dfd47a404
17 changed files with 312 additions and 136 deletions
|
|
@ -1,14 +1,35 @@
|
|||
import "package:flutter_riverpod/flutter_riverpod.dart";
|
||||
import "package:nexus/controllers/client_controller.dart";
|
||||
import "package:nexus/controllers/shared_prefs_controller.dart";
|
||||
import "package:nexus/helpers/extensions/better_when.dart";
|
||||
import "package:nexus/helpers/extensions/scheme_to_theme.dart";
|
||||
import "package:nexus/pages/chat_page.dart";
|
||||
import "package:nexus/pages/login_page.dart";
|
||||
import "package:nexus/widgets/error_dialog.dart";
|
||||
import "package:window_manager/window_manager.dart";
|
||||
import "package:flutter/material.dart";
|
||||
import "package:dynamic_system_colors/dynamic_system_colors.dart";
|
||||
import "package:window_size/window_size.dart";
|
||||
|
||||
final GlobalKey<NavigatorState> navigatorKey = GlobalKey<NavigatorState>();
|
||||
|
||||
void showError(Object error, [StackTrace? stackTrace]) {
|
||||
if (error.toString().contains("DioException")) return;
|
||||
if (error.toString().contains("UTF-16")) return;
|
||||
|
||||
debugPrintStack(stackTrace: stackTrace, label: error.toString());
|
||||
if (navigatorKey.currentContext != null) {
|
||||
Future.delayed(
|
||||
Duration.zero,
|
||||
() => showDialog(
|
||||
context: navigatorKey.currentContext!,
|
||||
builder: (_) => ErrorDialog(error, stackTrace),
|
||||
barrierDismissible: false,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
|
||||
|
|
@ -17,6 +38,9 @@ void main() async {
|
|||
WindowOptions(titleBarStyle: TitleBarStyle.hidden),
|
||||
);
|
||||
|
||||
FlutterError.onError = (FlutterErrorDetails details) =>
|
||||
showError(details.exception.toString(), details.stack);
|
||||
|
||||
setWindowMinSize(const Size.square(500));
|
||||
|
||||
runApp(ProviderScope(child: const App()));
|
||||
|
|
@ -28,6 +52,7 @@ class App extends ConsumerWidget {
|
|||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) => DynamicColorBuilder(
|
||||
builder: (lightDynamic, darkDynamic) => MaterialApp(
|
||||
navigatorKey: navigatorKey,
|
||||
debugShowCheckedModeBanner: false,
|
||||
// Use indigo to work around bugs in theme generation
|
||||
theme: (lightDynamic ?? ColorScheme.fromSeed(seedColor: Colors.indigo))
|
||||
|
|
@ -40,10 +65,14 @@ class App extends ConsumerWidget {
|
|||
))
|
||||
.theme,
|
||||
home: ref
|
||||
.watch(ClientController.provider)
|
||||
.watch(SharedPrefsController.provider)
|
||||
.betterWhen(
|
||||
data: (client) =>
|
||||
client.accessToken == null ? LoginPage() : ChatPage(),
|
||||
data: (_) => ref
|
||||
.watch(ClientController.provider)
|
||||
.betterWhen(
|
||||
data: (client) =>
|
||||
client.accessToken == null ? LoginPage() : ChatPage(),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue