From ef3e10a6c443566a50d3082222cd1be0b53b2cee Mon Sep 17 00:00:00 2001 From: Hamcha Date: Wed, 9 Oct 2019 17:47:13 +0200 Subject: [PATCH] Add invite URL --- src/router.ts | 21 ++++++++++++++------- src/views/Lobby.vue | 25 ++++++++++++++++++++++++- vue.config.js | 2 +- 3 files changed, 39 insertions(+), 9 deletions(-) diff --git a/src/router.ts b/src/router.ts index 1a2b459..05efe11 100644 --- a/src/router.ts +++ b/src/router.ts @@ -1,12 +1,11 @@ +import DeckBuilder from "@/views/DeckBuilder.vue"; +import DraftView from "@/views/Draft.vue"; +import GameView from "@/views/Game.vue"; +import Home from "@/views/Home.vue"; +import Lobby from "@/views/Lobby.vue"; +import SettingsView from "@/views/Settings.vue"; import Vue from "vue"; import Router from "vue-router"; -import Home from "@/views/Home.vue"; -import DeckBuilder from "@/views/DeckBuilder.vue"; -import GameView from "@/views/Game.vue"; -import DraftView from "@/views/Draft.vue"; -import Lobby from "@/views/Lobby.vue"; -import RoomView from "@/views/Room.vue"; -import SettingsView from "@/views/Settings.vue"; Vue.use(Router); @@ -45,6 +44,14 @@ export default new Router({ topnav: "Lobby" } }, + { + path: "/join/:id", + name: "lobby-join", + component: Lobby, + meta: { + topnav: "Lobby" + } + }, { path: "/settings", name: "settings", diff --git a/src/views/Lobby.vue b/src/views/Lobby.vue index 6c61f5d..dbabd6c 100644 --- a/src/views/Lobby.vue +++ b/src/views/Lobby.vue @@ -80,7 +80,10 @@
- Session ID: {{ sessionID }} + Invite your friends: + {{ inviteLink }}
Players: @@ -251,6 +254,13 @@ export default class Lobby extends Vue { }; } + private mounted() { + if ("id" in this.$route.params) { + this.joinSessionID = this.$route.params.id; + this.join(); + } + } + private async create() { this.busy = true; this.startServer({ @@ -277,5 +287,18 @@ export default class Lobby extends Vue { private get canJoin(): boolean { return this.joinSessionID != ""; } + + private get inviteLink(): string { + let subpath = ""; + const joinIndex = location.pathname.indexOf("/join"); + if (joinIndex > 0) { + subpath = location.pathname.substring(0, joinIndex); + } + const lobbyIndex = location.pathname.indexOf("/lobby"); + if (lobbyIndex > 0) { + subpath = location.pathname.substring(0, lobbyIndex); + } + return `${location.origin}${subpath}/join/${this.sessionID}`; + } } diff --git a/vue.config.js b/vue.config.js index e47d307..a07f4bb 100644 --- a/vue.config.js +++ b/vue.config.js @@ -6,7 +6,7 @@ module.exports = { } }, - publicPath: process.env.SUBPATH ? process.env.SUBPATH : "", + publicPath: process.env.SUBPATH ? process.env.SUBPATH : "/", pluginOptions: { gitDescribe: {