Frontend WIP - just websocket support left
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:frontend/providers/auth.dart';
|
||||
import 'package:frontend/providers/dio.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:shared_models/user.dart';
|
||||
|
||||
part 'game_room.g.dart';
|
||||
|
||||
final logger = Logger('services/joinRoom');
|
||||
|
||||
@riverpod
|
||||
Future<JoinRoomResponse?> joinRoom(Ref ref, {required String username, required String code}) async {
|
||||
final dio = ref.read(dioProvider);
|
||||
|
||||
try {
|
||||
final response = await dio.post<Map<String, dynamic>>(
|
||||
'/join_room',
|
||||
data: JoinRoomRequest(username: username, roomCode: code).toJson(),
|
||||
);
|
||||
|
||||
if (response.statusCode == 200 && response.data != null) {
|
||||
final joinResponse = JoinRoomResponse.fromJson(response.data!);
|
||||
if (joinResponse.token != null) {
|
||||
logger.fine('Setting token: ${joinResponse.token!.substring(10)}');
|
||||
await ref.read(jwtNotifierProvider.notifier).setJwt(joinResponse.token!);
|
||||
}
|
||||
return joinResponse;
|
||||
} else {
|
||||
logger.warning('Could not join room');
|
||||
}
|
||||
} catch (e) {
|
||||
logger.severe('Failed to join room', e, StackTrace.current);
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
Reference in New Issue
Block a user