Fixed sub/unsub problem
This commit is contained in:
parent
57004048e5
commit
94d6cf984f
2 changed files with 146 additions and 131 deletions
|
|
@ -31,78 +31,87 @@ class _HomePageState extends State<HomePage> {
|
|||
void initState() {
|
||||
super.initState();
|
||||
|
||||
socket.on("hello", (idky) {
|
||||
socket.dispose();
|
||||
Get.offAllNamed("/auth");
|
||||
});
|
||||
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.on("update", (update) {
|
||||
bool ok = update[0];
|
||||
if (ok) {
|
||||
var data = update[1];
|
||||
availableGames.value = (data["availableGames"] as List<dynamic>? ?? [])
|
||||
.map((e) => AvailableGame(
|
||||
id: e["id"],
|
||||
opponentName: e["player"],
|
||||
tries: e["tries"],
|
||||
neededRole: e["neededRole"],
|
||||
))
|
||||
.toList(growable: false);
|
||||
} else {
|
||||
Get.snackbar("Error", "Update failed with message: ${update[1]}");
|
||||
}
|
||||
});
|
||||
|
||||
socket.on("updateNeeded", (data) {
|
||||
socket.emit("getUpdate");
|
||||
});
|
||||
|
||||
socket.on("removeGameResponse", (data) => null);
|
||||
socket.on("createGameResponse", (data) => null);
|
||||
|
||||
socket.on("getUserDataResponse", (data) {
|
||||
bool ok = data[0];
|
||||
if (ok) {
|
||||
userData = UserData(
|
||||
data[1]["client"]["wins"],
|
||||
data[1]["client"]["losses"],
|
||||
);
|
||||
} else {
|
||||
Get.snackbar("Error", "Failed to get user data:\n ${data[1]}");
|
||||
}
|
||||
});
|
||||
socket.emit("getUserData");
|
||||
|
||||
socket.on("joinGameResponse", (data) {
|
||||
bool ok = data[0];
|
||||
if (ok) {
|
||||
Get.put(authData);
|
||||
Get.put(socket);
|
||||
Get.put(Game(
|
||||
data[1]["id"],
|
||||
data[1]["guesser"],
|
||||
data[1]["suggester"],
|
||||
data[1]["tries"],
|
||||
(data[2] as List<dynamic>).map((e) => e.toString()).toSet(),
|
||||
));
|
||||
Get.offNamed("/game");
|
||||
} else {
|
||||
Get.snackbar("Request response", data[1]);
|
||||
}
|
||||
});
|
||||
|
||||
socket.emit("getUpdate");
|
||||
}
|
||||
|
||||
void _onHelloEvent(dynamic idky) {
|
||||
socket.dispose();
|
||||
Get.offAllNamed("/auth");
|
||||
}
|
||||
|
||||
void _onUpdateEvent(dynamic update) {
|
||||
bool ok = update[0];
|
||||
if (ok) {
|
||||
var data = update[1];
|
||||
availableGames.value = (data["availableGames"] as List<dynamic>? ?? [])
|
||||
.map((e) => AvailableGame(
|
||||
id: e["id"],
|
||||
opponentName: e["player"],
|
||||
tries: e["tries"],
|
||||
neededRole: e["neededRole"],
|
||||
))
|
||||
.toList(growable: false);
|
||||
} else {
|
||||
Get.snackbar("Error", "Update failed with message: ${update[1]}");
|
||||
}
|
||||
}
|
||||
|
||||
void _onUpdateNeededEvent(dynamic data) {
|
||||
socket.emit("getUpdate");
|
||||
}
|
||||
|
||||
void _onRemoveGameResponseEvent(dynamic data) {}
|
||||
|
||||
void _onCreateGameResponseEvent(dynamic data) {}
|
||||
|
||||
void _onGetUserDataResponseEvent(dynamic data) {
|
||||
bool ok = data[0];
|
||||
if (ok) {
|
||||
userData = UserData(
|
||||
data[1]["client"]["wins"],
|
||||
data[1]["client"]["losses"],
|
||||
);
|
||||
} else {
|
||||
Get.snackbar("Error", "Failed to get user data:\n ${data[1]}");
|
||||
}
|
||||
}
|
||||
|
||||
void onJoinGameResponseEvent(dynamic data) {
|
||||
bool ok = data[0];
|
||||
if (ok) {
|
||||
Get.put(authData);
|
||||
Get.put(socket);
|
||||
Get.put(Game(
|
||||
data[1]["id"],
|
||||
data[1]["guesser"],
|
||||
data[1]["suggester"],
|
||||
data[1]["tries"],
|
||||
(data[2] as List<dynamic>).map((e) => e.toString()).toSet(),
|
||||
));
|
||||
Get.offNamed("/game");
|
||||
} else {
|
||||
Get.snackbar("Request response", data[1]);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
socket.off("hello");
|
||||
socket.off("update");
|
||||
socket.off("updateNeeded");
|
||||
socket.off("removeGameResponse");
|
||||
socket.off("createGameResponse");
|
||||
socket.off("getUserDataResponse");
|
||||
socket.off("joinGameResponse");
|
||||
socket.off("hello", _onHelloEvent);
|
||||
socket.off("update", _onUpdateEvent);
|
||||
socket.off("updateNeeded", _onUpdateNeededEvent);
|
||||
socket.off("removeGameResponse", _onRemoveGameResponseEvent);
|
||||
socket.off("createGameResponse", _onCreateGameResponseEvent);
|
||||
socket.off("getUserDataResponse", _onGetUserDataResponseEvent);
|
||||
socket.off("joinGameResponse", onJoinGameResponseEvent);
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue