From 005ed8814b7c72ecbbcd9047b85e7ad789d77e59 Mon Sep 17 00:00:00 2001 From: Stefan Dej Date: Tue, 31 Aug 2021 21:33:31 +0200 Subject: [PATCH] bugfix(webcam): display the wrong webcam if you connect to a remote printer with relativ webcam url (#345) Signed-off-by: Stefan Dej --- src/components/mixins/base.ts | 4 ++++ src/components/webcams/Mjpegstreamer.vue | 4 +--- src/components/webcams/MjpegstreamerAdaptive.vue | 4 +--- src/components/webcams/Uv4lMjpeg.vue | 4 +--- src/store/socket/getters.ts | 4 ++++ 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/components/mixins/base.ts b/src/components/mixins/base.ts index 1924ef4e..6cbea697 100644 --- a/src/components/mixins/base.ts +++ b/src/components/mixins/base.ts @@ -8,6 +8,10 @@ export default class BaseMixin extends Vue { return this.$store.getters['socket/getUrl'] } + get hostUrl(): boolean { + return this.$store.getters['socket/getHostUrl'] + } + get remoteMode() { return this.$store.state.socket.remoteMode } diff --git a/src/components/webcams/Mjpegstreamer.vue b/src/components/webcams/Mjpegstreamer.vue index 52b05884..a6935a54 100644 --- a/src/components/webcams/Mjpegstreamer.vue +++ b/src/components/webcams/Mjpegstreamer.vue @@ -35,9 +35,7 @@ export default class Mjpegstreamer extends Mixins(BaseMixin) { get url() { const baseUrl = this.camSettings.url - const hostUrl = new URL(this.printerUrl === undefined ? document.URL : this.printerUrl) - - const url = new URL(baseUrl, hostUrl.origin) + const url = new URL(baseUrl, this.printerUrl === undefined ? this.hostUrl.toString() : this.printerUrl) url.searchParams.append('bypassCache', this.refresh.toString()) return decodeURIComponent(url.toString()) diff --git a/src/components/webcams/MjpegstreamerAdaptive.vue b/src/components/webcams/MjpegstreamerAdaptive.vue index 904e9071..94ff1e78 100644 --- a/src/components/webcams/MjpegstreamerAdaptive.vue +++ b/src/components/webcams/MjpegstreamerAdaptive.vue @@ -95,9 +95,7 @@ export default class MjpegstreamerAdaptive extends Mixins(BaseMixin) { async setFrame() { const baseUrl = this.camSettings.url - const hostUrl = new URL(this.printerUrl === undefined ? document.URL : this.printerUrl) - - const url = new URL(baseUrl, hostUrl.origin) + const url = new URL(baseUrl, this.printerUrl === undefined ? this.hostUrl.toString() : this.printerUrl) url.searchParams.append('bypassCache', this.refresh.toString()) url.searchParams.set('action', 'snapshot') diff --git a/src/components/webcams/Uv4lMjpeg.vue b/src/components/webcams/Uv4lMjpeg.vue index 0d076e7d..4057fb03 100644 --- a/src/components/webcams/Uv4lMjpeg.vue +++ b/src/components/webcams/Uv4lMjpeg.vue @@ -32,9 +32,7 @@ export default class Uv4lMjpeg extends Mixins(BaseMixin) { get url() { const baseUrl = this.camSettings.url - const hostUrl = new URL(this.printerUrl === null ? document.URL : this.printerUrl) - - const url = new URL(baseUrl, hostUrl.origin) + const url = new URL(baseUrl, this.printerUrl === null ? this.hostUrl.toString() : this.printerUrl) return decodeURIComponent(url.toString()) } diff --git a/src/store/socket/getters.ts b/src/store/socket/getters.ts index 910b3e09..5d393441 100644 --- a/src/store/socket/getters.ts +++ b/src/store/socket/getters.ts @@ -8,6 +8,10 @@ export const getters: GetterTree = { return "//" + state.hostname + (state.port !== 80 ? ":"+state.port : "") }, + getHostUrl: (state) => { + return (state.protocol === 'wss' ? 'https' : 'http')+"://" + state.hostname + '/' + }, + getWebsocketUrl: (state, getters) => { return state.protocol + ":" + getters['getUrl'] + "/websocket" },