Fixed sub/unsub problem

This commit is contained in:
Andrew 2023-03-05 20:12:51 +07:00
parent 57004048e5
commit 94d6cf984f
2 changed files with 146 additions and 131 deletions

View file

@ -32,12 +32,28 @@ class _GamePageState extends State<GamePage> {
void initState() { void initState() {
super.initState(); super.initState();
socket.on("hello", (idky) { socket.on("hello", _onHelloEvent);
socket.on("gameStatus", _onGameStatusEvent);
socket.on("leaveGameResponse", _onLeaveGameResponseEvent);
socket.on("chatResponse", _onChatResponseEvent);
if (isGuesser) {
socket.on("guessResponse", _onGuessResponseEvent);
} else {
socket.on("guess", _onGuessEvent);
}
chat.listen((data) {
_scrollToEnd();
_showMessageNotification(data.last);
});
}
void _onHelloEvent(dynamic idky) {
socket.dispose(); socket.dispose();
Get.offAllNamed("/auth"); Get.offAllNamed("/auth");
}); }
socket.on("gameStatus", (data) { void _onGameStatusEvent(dynamic data) {
bool won = data[0]; bool won = data[0];
Get.defaultDialog( Get.defaultDialog(
title: "Game ended", title: "Game ended",
@ -49,9 +65,9 @@ class _GamePageState extends State<GamePage> {
Get.offAllNamed("/home"); Get.offAllNamed("/home");
}, },
); );
}); }
socket.on("leaveGameResponse", (data) { void _onLeaveGameResponseEvent(dynamic data) {
if (data[0] == true && data[1] == 410) { if (data[0] == true && data[1] == 410) {
Get.defaultDialog( Get.defaultDialog(
title: "Game ended", title: "Game ended",
@ -68,39 +84,38 @@ class _GamePageState extends State<GamePage> {
Get.put(socket); Get.put(socket);
Get.offAllNamed("/home"); Get.offAllNamed("/home");
} }
}); }
socket.on("chatResponse", (data) { void _onChatResponseEvent(dynamic data) {
bool ok = data[0]; bool ok = data[0];
if (ok) { if (ok) {
chat.add(ChatEntry(data[1]["from"], data[1]["message"])); chat.add(ChatEntry(data[1]["from"], data[1]["message"]));
} }
}); }
if (isGuesser) { void _onGuessEvent(dynamic data) {
socket.on("guessResponse", _onGuessResponse);
} else {
socket.on("guess", (data) {
setState(() { setState(() {
guessedColors.add(data); guessedColors.add(data);
}); });
});
} }
chat.listen((data) { void _onGuessResponseEvent(dynamic data) {
_scrollToEnd(); bool ok = data[0];
_showMessageNotification(data.last); if (ok) {
}); Get.snackbar("Success", "Guess sent successfully");
} else {
Get.snackbar("Error", "Guess failed to send");
}
} }
@override @override
void dispose() { void dispose() {
socket.off("hello"); socket.off("hello", _onHelloEvent);
socket.off("gameStatus"); socket.off("gameStatus", _onGameStatusEvent);
socket.off("leaveGameResponse"); socket.off("leaveGameResponse", _onLeaveGameResponseEvent);
socket.off("chatResponse"); socket.off("chatResponse", _onChatResponseEvent);
socket.off("guessResponse"); socket.off("guessResponse", _onGuessResponseEvent);
socket.off("guess"); socket.off("guess", _onGuessEvent);
super.dispose(); super.dispose();
} }
@ -352,15 +367,6 @@ class _GamePageState extends State<GamePage> {
socket.emit("guess", [gameInfo.id, name]); socket.emit("guess", [gameInfo.id, name]);
} }
void _onGuessResponse(dynamic data) {
bool ok = data[0];
if (ok) {
Get.snackbar("Success", "Guess sent successfully");
} else {
Get.snackbar("Error", "Guess failed to send");
}
}
void _openChat() { void _openChat() {
Get.bottomSheet(BottomSheet( Get.bottomSheet(BottomSheet(
onClosing: () {}, onClosing: () {},

View file

@ -31,12 +31,24 @@ class _HomePageState extends State<HomePage> {
void initState() { void initState() {
super.initState(); super.initState();
socket.on("hello", (idky) { socket.on("hello", _onHelloEvent);
socket.on("update", _onUpdateEvent);
socket.on("updateNeeded", _onUpdateNeededEvent);
socket.on("removeGameResponse", _onRemoveGameResponseEvent);
socket.on("createGameResponse", _onCreateGameResponseEvent);
socket.on("getUserDataResponse", _onGetUserDataResponseEvent);
socket.on("joinGameResponse", onJoinGameResponseEvent);
socket.emit("getUserData");
socket.emit("getUpdate");
}
void _onHelloEvent(dynamic idky) {
socket.dispose(); socket.dispose();
Get.offAllNamed("/auth"); Get.offAllNamed("/auth");
}); }
socket.on("update", (update) { void _onUpdateEvent(dynamic update) {
bool ok = update[0]; bool ok = update[0];
if (ok) { if (ok) {
var data = update[1]; var data = update[1];
@ -51,16 +63,17 @@ class _HomePageState extends State<HomePage> {
} else { } else {
Get.snackbar("Error", "Update failed with message: ${update[1]}"); Get.snackbar("Error", "Update failed with message: ${update[1]}");
} }
}); }
socket.on("updateNeeded", (data) { void _onUpdateNeededEvent(dynamic data) {
socket.emit("getUpdate"); socket.emit("getUpdate");
}); }
socket.on("removeGameResponse", (data) => null); void _onRemoveGameResponseEvent(dynamic data) {}
socket.on("createGameResponse", (data) => null);
socket.on("getUserDataResponse", (data) { void _onCreateGameResponseEvent(dynamic data) {}
void _onGetUserDataResponseEvent(dynamic data) {
bool ok = data[0]; bool ok = data[0];
if (ok) { if (ok) {
userData = UserData( userData = UserData(
@ -70,10 +83,9 @@ class _HomePageState extends State<HomePage> {
} else { } else {
Get.snackbar("Error", "Failed to get user data:\n ${data[1]}"); Get.snackbar("Error", "Failed to get user data:\n ${data[1]}");
} }
}); }
socket.emit("getUserData");
socket.on("joinGameResponse", (data) { void onJoinGameResponseEvent(dynamic data) {
bool ok = data[0]; bool ok = data[0];
if (ok) { if (ok) {
Get.put(authData); Get.put(authData);
@ -89,20 +101,17 @@ class _HomePageState extends State<HomePage> {
} else { } else {
Get.snackbar("Request response", data[1]); Get.snackbar("Request response", data[1]);
} }
});
socket.emit("getUpdate");
} }
@override @override
void dispose() { void dispose() {
socket.off("hello"); socket.off("hello", _onHelloEvent);
socket.off("update"); socket.off("update", _onUpdateEvent);
socket.off("updateNeeded"); socket.off("updateNeeded", _onUpdateNeededEvent);
socket.off("removeGameResponse"); socket.off("removeGameResponse", _onRemoveGameResponseEvent);
socket.off("createGameResponse"); socket.off("createGameResponse", _onCreateGameResponseEvent);
socket.off("getUserDataResponse"); socket.off("getUserDataResponse", _onGetUserDataResponseEvent);
socket.off("joinGameResponse"); socket.off("joinGameResponse", onJoinGameResponseEvent);
super.dispose(); super.dispose();
} }