diff --git a/package-lock.json b/package-lock.json index b553a49ac..3487256bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,6 +37,7 @@ "node-addon-api": "^8.1.0", "node-gyp": "^10.2.0", "obscenity": "^0.4.3", + "page": "^1.11.6", "priority-queue-typescript": "^1.0.1", "protobufjs": "^7.3.2", "pureimage": "^0.4.13", @@ -12766,6 +12767,27 @@ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", "license": "BlueOak-1.0.0" }, + "node_modules/page": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/page/-/page-1.11.6.tgz", + "integrity": "sha512-P6e2JfzkBrPeFCIPplLP7vDDiU84RUUZMrWdsH4ZBGJ8OosnwFkcUkBHp1DTIjuipLliw9yQn/ZJsXZvarsO+g==", + "dependencies": { + "path-to-regexp": "~1.2.1" + } + }, + "node_modules/page/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/page/node_modules/path-to-regexp": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.2.1.tgz", + "integrity": "sha512-DBw9IhWfevR2zCVwEZURTuQNseCvu/Q9f5ZgqMCK0Rh61bDa4uyjPAOy9b55yKiPT59zZn+7uYKxmWwsguInwg==", + "dependencies": { + "isarray": "0.0.1" + } + }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", diff --git a/package.json b/package.json index b39f4f232..d47e714dc 100644 --- a/package.json +++ b/package.json @@ -100,6 +100,7 @@ "node-addon-api": "^8.1.0", "node-gyp": "^10.2.0", "obscenity": "^0.4.3", + "page": "^1.11.6", "priority-queue-typescript": "^1.0.1", "protobufjs": "^7.3.2", "pureimage": "^0.4.13", diff --git a/src/client/HostLobbyModal.ts b/src/client/HostLobbyModal.ts index 5951a5aba..bbfb96284 100644 --- a/src/client/HostLobbyModal.ts +++ b/src/client/HostLobbyModal.ts @@ -558,7 +558,10 @@ export class HostLobbyModal extends LitElement { private async copyToClipboard() { try { - await navigator.clipboard.writeText(this.lobbyId); + //TODO: Convert id to url and copy + await navigator.clipboard.writeText( + `${location.origin}/join/${this.lobbyId}`, + ); this.copySuccess = true; setTimeout(() => { this.copySuccess = false; diff --git a/src/client/JoinPrivateLobbyModal.ts b/src/client/JoinPrivateLobbyModal.ts index 551754072..418cd4ce3 100644 --- a/src/client/JoinPrivateLobbyModal.ts +++ b/src/client/JoinPrivateLobbyModal.ts @@ -228,7 +228,12 @@ export class JoinPrivateLobbyModal extends LitElement { ×
Join Private Lobby
- + ` : html` (this.showModal = true)} />`} ${this.showModal @@ -182,7 +182,7 @@ export class FlagInput extends LitElement { @click=${() => this.setFlag("")} class="dropdown-item" > - + None ${Countries.filter( @@ -201,7 +201,7 @@ export class FlagInput extends LitElement { > ${country.name} diff --git a/src/client/graphics/layers/NameLayer.ts b/src/client/graphics/layers/NameLayer.ts index d43d22fe3..264e35700 100644 --- a/src/client/graphics/layers/NameLayer.ts +++ b/src/client/graphics/layers/NameLayer.ts @@ -154,7 +154,7 @@ export class NameLayer implements Layer { flagImg.classList.add("player-flag"); flagImg.style.marginBottom = "-5%"; flagImg.style.opacity = "0.8"; - flagImg.src = "flags/" + sanitize(player.flag()) + ".svg"; + flagImg.src = "/flags/" + sanitize(player.flag()) + ".svg"; flagImg.style.zIndex = "1"; flagImg.style.width = "40%"; flagImg.style.aspectRatio = "3/4"; diff --git a/src/server/Server.ts b/src/server/Server.ts index a81464a0a..2e8dddbe3 100644 --- a/src/server/Server.ts +++ b/src/server/Server.ts @@ -130,6 +130,11 @@ app.get("/private_lobby/:id", (req, res) => { }); }); +app.get("*", function (req, res) { + // SPA routing + res.sendFile(path.join(__dirname, "../../out/index.html")); +}); + wss.on("connection", (ws, req) => { ws.on("message", (message: string) => { try { diff --git a/webpack.config.js b/webpack.config.js index 435303354..c6e879fae 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -13,6 +13,7 @@ export default (env, argv) => { return { entry: "./src/client/Main.ts", output: { + publicPath: "/", filename: "bundle.js", path: path.resolve(__dirname, "out"), clean: true, @@ -118,6 +119,7 @@ export default (env, argv) => { static: { directory: path.join(__dirname, "out"), }, + historyApiFallback: true, compress: true, port: 9000, proxy: [