2023-11-23 19:16:29 +01:00
|
|
|
class BrowserTabsConnector {
|
|
|
|
constructor() {
|
|
|
|
this.bc = new BroadcastChannel('pairdrop');
|
|
|
|
this.bc.addEventListener('message', e => this._onMessage(e));
|
|
|
|
Events.on('broadcast-send', e => this._broadcastSend(e.detail));
|
|
|
|
}
|
|
|
|
|
|
|
|
_broadcastSend(message) {
|
|
|
|
this.bc.postMessage(message);
|
|
|
|
}
|
|
|
|
|
|
|
|
_onMessage(e) {
|
2024-02-05 15:42:27 +01:00
|
|
|
Logger.debug('Broadcast:', e.data)
|
2023-11-23 19:16:29 +01:00
|
|
|
switch (e.data.type) {
|
|
|
|
case 'self-display-name-changed':
|
|
|
|
Events.fire('self-display-name-changed', e.data.detail);
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static peerIsSameBrowser(peerId) {
|
2023-11-24 17:32:40 +01:00
|
|
|
let peerIdsBrowser = JSON.parse(localStorage.getItem('peer_ids_browser'));
|
2023-11-23 19:16:29 +01:00
|
|
|
return peerIdsBrowser
|
|
|
|
? peerIdsBrowser.indexOf(peerId) !== -1
|
|
|
|
: false;
|
|
|
|
}
|
|
|
|
|
2024-07-14 18:04:03 +02:00
|
|
|
static isOnlyTab() {
|
|
|
|
let peerIdsBrowser = JSON.parse(localStorage.getItem('peer_ids_browser'));
|
|
|
|
return peerIdsBrowser.length <= 1;
|
|
|
|
}
|
|
|
|
|
2023-11-23 19:16:29 +01:00
|
|
|
static async addPeerIdToLocalStorage() {
|
2023-11-24 17:32:40 +01:00
|
|
|
const peerId = sessionStorage.getItem('peer_id');
|
2023-11-23 19:16:29 +01:00
|
|
|
if (!peerId) return false;
|
|
|
|
|
|
|
|
let peerIdsBrowser = [];
|
2023-11-24 17:32:40 +01:00
|
|
|
let peerIdsBrowserOld = JSON.parse(localStorage.getItem('peer_ids_browser'));
|
2023-11-23 19:16:29 +01:00
|
|
|
|
|
|
|
if (peerIdsBrowserOld) peerIdsBrowser.push(...peerIdsBrowserOld);
|
|
|
|
peerIdsBrowser.push(peerId);
|
|
|
|
peerIdsBrowser = peerIdsBrowser.filter(onlyUnique);
|
2023-11-24 17:32:40 +01:00
|
|
|
localStorage.setItem('peer_ids_browser', JSON.stringify(peerIdsBrowser));
|
2023-11-23 19:16:29 +01:00
|
|
|
|
|
|
|
return peerIdsBrowser;
|
|
|
|
}
|
|
|
|
|
|
|
|
static async removePeerIdFromLocalStorage(peerId) {
|
2023-11-24 17:32:40 +01:00
|
|
|
let peerIdsBrowser = JSON.parse(localStorage.getItem('peer_ids_browser'));
|
2023-11-23 19:16:29 +01:00
|
|
|
const index = peerIdsBrowser.indexOf(peerId);
|
|
|
|
peerIdsBrowser.splice(index, 1);
|
2023-11-24 17:32:40 +01:00
|
|
|
localStorage.setItem('peer_ids_browser', JSON.stringify(peerIdsBrowser));
|
2023-11-23 19:16:29 +01:00
|
|
|
return peerId;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static async removeOtherPeerIdsFromLocalStorage() {
|
2023-11-24 17:32:40 +01:00
|
|
|
const peerId = sessionStorage.getItem('peer_id');
|
2023-11-23 19:16:29 +01:00
|
|
|
if (!peerId) return false;
|
|
|
|
|
|
|
|
let peerIdsBrowser = [peerId];
|
2023-11-24 17:32:40 +01:00
|
|
|
localStorage.setItem('peer_ids_browser', JSON.stringify(peerIdsBrowser));
|
2023-11-23 19:16:29 +01:00
|
|
|
return peerIdsBrowser;
|
|
|
|
}
|
|
|
|
}
|