Mostly working websocket stuff, some message weirdness at the moment...
This commit is contained in:
@@ -2,6 +2,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:frontend/providers/web_socket.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
|
||||
@@ -17,6 +18,12 @@ class GameRoomHome extends ConsumerStatefulWidget {
|
||||
}
|
||||
|
||||
class _GameRoomHomeState extends ConsumerState<GameRoomHome> {
|
||||
@override
|
||||
void initState() {
|
||||
WidgetsBinding.instance.addPostFrameCallback((_) => ref.read(webSocketNotifierProvider.notifier).connect());
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final jwt = ref.watch(jwtBodyProvider);
|
||||
@@ -25,13 +32,30 @@ class _GameRoomHomeState extends ConsumerState<GameRoomHome> {
|
||||
// return home
|
||||
context.go('/');
|
||||
}
|
||||
|
||||
final connection = ref.watch(webSocketNotifierProvider).valueOrNull;
|
||||
|
||||
ref.listen(
|
||||
gameMessageNotifierProvider,
|
||||
(previous, next) {
|
||||
print('Got message: $next');
|
||||
},
|
||||
);
|
||||
// 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}'),
|
||||
],
|
||||
return Scaffold(
|
||||
body: Column(
|
||||
children: [
|
||||
Text('Authenticated.'),
|
||||
Text('Welcome to room ${widget.roomUuid}'),
|
||||
ElevatedButton(
|
||||
onPressed: connection == null
|
||||
? null
|
||||
: () {
|
||||
connection.add('Test message');
|
||||
},
|
||||
child: Text('Send message on socket')),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,16 +30,14 @@ class _JoinRoomHomeState extends ConsumerState<JoinRoomHome> {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final jwtAsync = ref.watch(jwtNotifierProvider);
|
||||
final jwtBody = ref.watch(jwtBodyProvider);
|
||||
|
||||
jwtAsync.whenData((jwt) {
|
||||
logger.fine('Got jwt: ${jwt == null ? 'NULL' : jwt.toString().substring(10)}');
|
||||
if (jwt == null) return;
|
||||
if (jwtBody != null) {
|
||||
logger.fine('Navigating to game room screen');
|
||||
WidgetsBinding.instance.addPostFrameCallback(
|
||||
(_) => context.go('/room/${jwt.roomUuid}'),
|
||||
(_) => context.go('/room/${jwtBody.roomUuid}'),
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
return Scaffold(
|
||||
body: Padding(
|
||||
|
||||
Reference in New Issue
Block a user