Files
Media-Server-Setup/live/src/names.js

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}`