Initial web socket client support

This commit is contained in:
2025-02-10 09:27:50 -07:00
parent e7641f6aec
commit 623474e0c6
5 changed files with 154 additions and 41 deletions
+14 -19
View File
@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:frontend/providers/auth.dart';
import 'package:frontend/providers/game_messages.dart';
import 'package:go_router/go_router.dart';
import 'package:logging/logging.dart';
@@ -18,25 +19,19 @@ class GameRoomHome extends ConsumerStatefulWidget {
class _GameRoomHomeState extends ConsumerState<GameRoomHome> {
@override
Widget build(BuildContext context) {
final jwtAsync = ref.watch(jwtNotifierProvider);
return Scaffold(
body: jwtAsync.when(
data: (jwt) {
if (jwt == null || jwt.roomUuid != widget.roomUuid) {
logger.fine('Tried to open room, but not authenticated / wrong room');
// return home
context.go('/');
}
return Column(
children: [
Text('Authenticated.'),
Text('Welcome to room ${widget.roomUuid}'),
],
);
},
loading: () => CircularProgressIndicator(),
error: (e, st) => Text('$e, $st'),
),
final jwt = ref.watch(jwtBodyProvider);
if (jwt == null || jwt.roomUuid != widget.roomUuid) {
logger.fine('Tried to open room, but not authenticated / wrong room');
// return home
context.go('/');
}
// enstablish ws connection at /room/roomCode/ws and save to gameMessageProvider
ref.read(gameMessageNotifierProvider.notifier).connect(jwt!.roomUuid);
return Column(
children: [
Text('Authenticated.'),
Text('Welcome to room ${widget.roomUuid}'),
],
);
}
}