WIP ws messages, TODO backend receiving frontend messages

This commit is contained in:
2025-02-19 09:28:13 -07:00
parent b37862a321
commit d2e378b4a3
12 changed files with 104 additions and 153 deletions
+24 -7
View File
@@ -5,6 +5,7 @@ import 'package:frontend/providers/game_messages.dart';
import 'package:frontend/providers/web_socket.dart';
import 'package:go_router/go_router.dart';
import 'package:logging/logging.dart';
import 'package:shared_models/room.dart';
final logger = Logger('GameRoomHome');
@@ -30,17 +31,33 @@ class _GameRoomHomeState extends ConsumerState<GameRoomHome> {
if (jwt == null || jwt.roomUuid != widget.roomUuid) {
logger.fine('Tried to open room, but not authenticated / wrong room');
// return home
context.go('/');
WidgetsBinding.instance.addPostFrameCallback((_) => context.go('/'));
}
final connection = ref.watch(webSocketNotifierProvider).valueOrNull;
ref.listen(
gameMessageNotifierProvider,
(previous, next) {
print('Got message: $next');
},
);
if (jwt != null) {
ref.listen(
gameMessageNotifierProvider,
(previous, next) {
final message = next.valueOrNull;
if (message is GameRoomMessage) {
switch (message) {
case PingMessage():
final ping = PingMessage.now(
jwt.roomUuid,
dest: PingDestination.server,
userUuid: jwt.uuid,
);
ref.read(webSocketNotifierProvider.notifier).sendMessage(ping);
case PlayerVoteMessage():
// TODO: Handle this case.
throw UnimplementedError();
}
}
},
);
}
// enstablish ws connection at /room/roomCode/ws and save to gameMessageProvider
return Scaffold(
body: Column(