Add share meeting link control to the live room UI.
Deploy Ladill Meet / deploy (push) Successful in 1m16s

Expose join URL and passcode in the room shell with header and toolbar share buttons, native share on supported devices, and a copy-link popover.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
isaacclad
2026-07-01 08:00:22 +00:00
co-authored by Cursor
parent 8ffb64191f
commit eed5853c2f
2 changed files with 79 additions and 1 deletions
+41
View File
@@ -29,6 +29,11 @@ function meetRoom() {
qaInput: '',
chatOpen: false,
chatInput: '',
shareOpen: false,
shareCopied: false,
joinUrl: '',
passcode: '',
roomTitle: '',
connectionStatus: 'Connecting…',
participants: [],
floatingReactions: [],
@@ -66,6 +71,10 @@ function meetRoom() {
csrf: el.dataset.csrf,
};
this.joinUrl = el.dataset.joinUrl || '';
this.passcode = el.dataset.passcode || '';
this.roomTitle = el.dataset.roomTitle || '';
this.isHost = el.dataset.isHost === '1';
this.canPublish = el.dataset.canPublish !== '0';
this.isWebinar = el.dataset.isWebinar === '1';
@@ -541,6 +550,38 @@ function meetRoom() {
});
},
async openShare() {
if (navigator.share && this.joinUrl) {
try {
await navigator.share({
title: this.roomTitle || 'Ladill Meet',
text: 'Join my meeting on Ladill Meet',
url: this.joinUrl,
});
return;
} catch (e) {
if (e?.name === 'AbortError') return;
}
}
this.shareOpen = true;
this.shareCopied = false;
},
async copyJoinLink() {
if (!this.joinUrl) return;
try {
await navigator.clipboard.writeText(this.joinUrl);
this.shareCopied = true;
setTimeout(() => {
this.shareCopied = false;
}, 2000);
} catch (e) {
console.error(e);
}
},
async sendChat() {
const body = this.chatInput.trim();
if (!body) return;