diff --git a/package-lock.json b/package-lock.json
index 8e93a32..4d6a398 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,6 +10,7 @@
"dependencies": {
"floating-vue": "^2.0.0-beta.24",
"interactjs": "^1.10.18",
+ "qrcodejs": "github:danielgjackson/qrcodejs",
"vue": "^3.3.4",
"vue-mention": "^2.0.0-alpha.3",
"vue3-emoji-picker": "^1.1.7",
@@ -1680,6 +1681,11 @@
"node": ">=6"
}
},
+ "node_modules/qrcodejs": {
+ "version": "0.0.0",
+ "resolved": "git+ssh://git@github.com/danielgjackson/qrcodejs.git#86770ec12f0f9abee8728fc9018ab7bd0949f4bc",
+ "license": "BSD-2-Clause"
+ },
"node_modules/queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
diff --git a/package.json b/package.json
index 6a9104d..9d1e26a 100644
--- a/package.json
+++ b/package.json
@@ -12,6 +12,7 @@
"dependencies": {
"floating-vue": "^2.0.0-beta.24",
"interactjs": "^1.10.18",
+ "qrcodejs": "github:danielgjackson/qrcodejs",
"vue": "^3.3.4",
"vue-mention": "^2.0.0-alpha.3",
"vue3-emoji-picker": "^1.1.7",
diff --git a/src/App.vue b/src/App.vue
index 1eb7451..e27475d 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -19,6 +19,7 @@ import LocalStorage from './lib/LocalStorage';
import VideoFlag from './lib/VideoFlag';
import StatusMessage from './lib/StatusMessage';
import { SoundEffects, DefaultSounds } from './lib/sounds';
+import WatermarkImage from './lib/watermark';
// WebRTC configuration.
const configuration = {
@@ -181,6 +182,10 @@ export default {
rememberExpresslyClosed: true, // remember cams we expressly closed
autoMuteWebcams: false, // auto-mute other cameras' audio channels
+ // My watermark image for screen recording protection.
+ // Set after login in setWatermark.
+ watermark: null,
+
// Who all is watching me? map of users.
watching: {},
@@ -1630,6 +1635,10 @@ export default {
onLoggedIn() {
// Called after the first 'me' is received from the chat server, e.g. once per login.
+ // Load our watermark image.
+ this.webcam.watermark = WatermarkImage(this.username);
+ this.ChatClient(`Watermark image created: `);
+
// Do we auto-broadcast our camera?
if (this.webcam.autoshare) {
this.startVideo({ force: true });
@@ -4709,20 +4718,36 @@ export default {
-