26 lines
889 B
JavaScript
26 lines
889 B
JavaScript
import { create } from './tinyStore.js'
|
|
|
|
// Viewer-side labels. Stream names persist in this browser (localStorage, keyed by the MediaMTX path);
|
|
// group names live for the session (dockview group ids are regenerated on reload).
|
|
const KEY = 'vg.names'
|
|
let saved = {}
|
|
try { saved = JSON.parse(localStorage.getItem(KEY) || '{}') || {} } catch {}
|
|
|
|
export const names = create({
|
|
streams: saved,
|
|
groups: {},
|
|
rename(id, value) {
|
|
const streams = { ...this.streams }
|
|
if (value) streams[id] = value; else delete streams[id]
|
|
try { localStorage.setItem(KEY, JSON.stringify(streams)) } catch {}
|
|
return { streams }
|
|
},
|
|
renameGroup(id, value) {
|
|
const groups = { ...this.groups }
|
|
if (value) groups[id] = value; else delete groups[id]
|
|
return { groups }
|
|
},
|
|
})
|
|
|
|
export const streamLabel = (id, params) => names.get().streams[id] || `${params.user} · ${params.title}`
|