refactor entire frontend
This commit is contained in:
1 parent
49df72f2a1
commit
7b3326524e
17 files changed
+546
-96
No files matched your search
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user