refactor entire frontend

This commit is contained in:
Shivering Ocelot committed 2025-05-14 18:25:50 -05:00
1 parent 49df72f2a1
commit 7b3326524e
17 files changed
+546 -96

No files matched your search

+64
View File
@@ -0,0 +1,64 @@
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<UserChecker> {
String? username;
bool isLoading = false;
@override
void initState() {
super.initState();
username = null;
}
static void fetchChats(Function(List<int>) onSuccess) {
Backend.sendAction("get-chats", {}).then((response) {
print("chats response: $response");
List<dynamic> chatObjects = response['chats'];
List<int> 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);
}
}