Instead of using onDestroy, return a function from onMount

This commit is contained in:
Oliver Akins 2022-03-15 22:38:09 -06:00
parent 018ae4fe06
commit b0e2a9e6d4
No known key found for this signature in database
GPG key ID: 3C2014AF9457AF99
3 changed files with 21 additions and 13 deletions

View file

@ -1,6 +1,6 @@
<script lang="ts"> <script lang="ts">
import { onDestroy, createEventDispatcher, onMount } from "svelte";
import { isHost, myName, gameCode, players } from "../../stores"; import { isHost, myName, gameCode, players } from "../../stores";
import { createEventDispatcher, onMount } from "svelte";
import SciFiButton from "../SciFi-Button.svelte"; import SciFiButton from "../SciFi-Button.svelte";
import { ILobbyInfo, Status } from "common"; import { ILobbyInfo, Status } from "common";
import BaseModal from "./BaseModal.svelte"; import BaseModal from "./BaseModal.svelte";
@ -28,6 +28,10 @@ function handleLobbyConnection(data: ILobbyInfo) {
onMount(() => { onMount(() => {
socket.on(`res:lobby.players.join`, handleLobbyConnection); socket.on(`res:lobby.players.join`, handleLobbyConnection);
socket.on(`res:lobby.create`, handleLobbyConnection); socket.on(`res:lobby.create`, handleLobbyConnection);
return () => {
socket.off(`res:lobby.players.join`);
socket.off(`res:lobby.create`);
};
}); });
function connectToLobby() { function connectToLobby() {
@ -45,12 +49,7 @@ function connectToLobby() {
name: $myName name: $myName
}); });
}; };
} };
onDestroy(() => {
socket.off(`res:lobby.create`);
socket.off(`res:lobby.players.join`);
});
</script> </script>
<BaseModal {open} on:close> <BaseModal {open} on:close>

View file

@ -2,10 +2,11 @@
import { Status, colours, spaceships } from "common"; import { Status, colours, spaceships } from "common";
import SpaceShuttle from "../icons/spaceship.svelte"; import SpaceShuttle from "../icons/spaceship.svelte";
import SciFiButton from "../SciFi-Button.svelte"; import SciFiButton from "../SciFi-Button.svelte";
import { createEventDispatcher } from "svelte"; import { createEventDispatcher, onMount } from "svelte";
import { myName, players } from "../../stores"; import { myName, players } from "../../stores";
import BaseModal from "./BaseModal.svelte"; import BaseModal from "./BaseModal.svelte";
import Hexagon from "../Hexagon.svelte"; import Hexagon from "../Hexagon.svelte";
import { socket } from "../../main";
const emit = createEventDispatcher(); const emit = createEventDispatcher();
@ -20,6 +21,15 @@ var selectedColour = player.colour.hex;
var selectedShip = player.ship.id; var selectedShip = player.ship.id;
var error = null; var error = null;
function designUpdate(data: any) {};
onMount(() => {
socket.on(`req:lobby.players.update`, designUpdate);
return () => {
socket.off(`req:lobby.players.update`);
};
});
function saveShipDesign() { function saveShipDesign() {
/* TODO: Send event to server, wait for confirmation */ /* TODO: Send event to server, wait for confirmation */
let response: any = { let response: any = {

View file

@ -6,8 +6,8 @@ import SciFiButton from "../../components/SciFi-Button.svelte";
import { ILobbyInfo, Status, gameOptions } from "common"; import { ILobbyInfo, Status, gameOptions } from "common";
import Player from "../../components/Player.svelte"; import Player from "../../components/Player.svelte";
import { isHost, players } from "../../stores"; import { isHost, players } from "../../stores";
import { onMount, onDestroy } from "svelte"
import { socket } from "../../main"; import { socket } from "../../main";
import { onMount } from "svelte";
function handleLobbyInfo(data: ILobbyInfo) { function handleLobbyInfo(data: ILobbyInfo) {
if (data.status == Status.Success) { if (data.status == Status.Success) {
@ -19,6 +19,9 @@ function handleLobbyInfo(data: ILobbyInfo) {
onMount(() => { onMount(() => {
socket.on(`res:lobby.info`, handleLobbyInfo); socket.on(`res:lobby.info`, handleLobbyInfo);
return () => {
socket.off(`res:lobby.info`);
};
}); });
function tempButtonHandler() {}; function tempButtonHandler() {};
@ -41,10 +44,6 @@ function toggleOption(e: CustomEvent<string>) {
// TODO: Send websocket event to server // TODO: Send websocket event to server
}; };
onDestroy(() => {
socket.off(`res:lobby.info`);
});
</script> </script>
<OptionInfo <OptionInfo