import 'package:flutter/material.dart'; import 'backend.dart'; import 'login_screen.dart'; import 'chat_screen.dart'; import 'chat_list_screen.dart'; class UserChecker extends StatefulWidget { @override _UserCheckerState createState() => _UserCheckerState(); } class _UserCheckerState extends State { String? username; bool isLoading = false; @override void initState() { super.initState(); username = null; } static void fetchChats(Function(List) onSuccess) { Backend.sendAction("get-chats", {}).then((response) { print("chats response: $response"); List chatObjects = response['chats']; List chatIds = chatObjects.map((chat) => chat['id'] as int).toList(); onSuccess(chatIds); }); } void _handleLogin(String user, String password) { Backend.auth(user, password); setState(() { username = user; isLoading = true; // Show loading spinner }); fetchChats((chatIds) { if (chatIds.isEmpty) { Navigator.pushReplacement( context, MaterialPageRoute(builder: (_) => ChatListScreen()), ); } else { Navigator.pushReplacement( context, MaterialPageRoute(builder: (_) => ChatScreen(chatId: chatIds.first)), ); } }); } @override Widget build(BuildContext context) { print("Build UserChecker: $username $isLoading"); if (isLoading) { return Center(child: CircularProgressIndicator()); // Loading state UI } return LoginScreen(onLogin: _handleLogin); } }