VideoFeed: Hide video temporarily on window resize
This commit is contained in:
parent
33d91ddcda
commit
fdef3dafdc
|
@ -31,10 +31,17 @@ export default {
|
||||||
|
|
||||||
// Mutation Observer, to detect if the user deletes the QR code via dev tools.
|
// Mutation Observer, to detect if the user deletes the QR code via dev tools.
|
||||||
observer: null,
|
observer: null,
|
||||||
|
|
||||||
|
// Window resize debouncer: temporarily hide videos after a resize event, so e.g.,
|
||||||
|
// if dev tools are opened and the debugger detector kicks in, videos may be hidden
|
||||||
|
// while the page is paused.
|
||||||
|
windowResizeTimer: null,
|
||||||
|
windowResizeCooldown: false,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.initWatermarkObserver();
|
this.initWatermarkObserver();
|
||||||
|
this.initWindowResizer();
|
||||||
},
|
},
|
||||||
beforeUnmount() {
|
beforeUnmount() {
|
||||||
this.observer?.disconnect();
|
this.observer?.disconnect();
|
||||||
|
@ -201,6 +208,20 @@ export default {
|
||||||
onWatermarkRemoved() {
|
onWatermarkRemoved() {
|
||||||
this.$emit('watermark-removed', this.username);
|
this.$emit('watermark-removed', this.username);
|
||||||
},
|
},
|
||||||
|
initWindowResizer() {
|
||||||
|
window.addEventListener('resize', this.onWindowResized);
|
||||||
|
},
|
||||||
|
onWindowResized() {
|
||||||
|
if (this.windowResizeTimer !== null) {
|
||||||
|
clearTimeout(this.windowResizeTimer);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.windowResizeCooldown = true;
|
||||||
|
this.windowResizeTimer = setTimeout(() => {
|
||||||
|
this.windowResizeCooldown = false;
|
||||||
|
this.windowResizetimer = null;
|
||||||
|
}, 1000);
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
@ -216,7 +237,8 @@ export default {
|
||||||
disablepictureinpicture
|
disablepictureinpicture
|
||||||
playsinline
|
playsinline
|
||||||
oncontextmenu="return false;"
|
oncontextmenu="return false;"
|
||||||
:muted="localVideo"></video>
|
:muted="localVideo"
|
||||||
|
:class="{'invisible': windowResizeCooldown}"></video>
|
||||||
|
|
||||||
<!-- Watermark layer -->
|
<!-- Watermark layer -->
|
||||||
<div :class="{'is-no-watermark': isNoWatermark}" ref="watermarkLayer">
|
<div :class="{'is-no-watermark': isNoWatermark}" ref="watermarkLayer">
|
||||||
|
@ -300,6 +322,9 @@ video {
|
||||||
.seethru {
|
.seethru {
|
||||||
opacity: 0.4;
|
opacity: 0.4;
|
||||||
}
|
}
|
||||||
|
.invisible {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
/* Watermark image */
|
/* Watermark image */
|
||||||
.is-no-watermark {
|
.is-no-watermark {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user