77 * - reorderMode: boolean toggle – when true, drag handles are shown
88 * - drag handlers: onDragStart / onDragOver / onDrop / onDragEnd
99 *
10- * Order is keyed by view type ("webrtc" | "hls") and stored in
11- * localStorage as an array of stream names .
10+ * All live views (WebRTC / HLS / MSE) share a single storage key so that
11+ * reordering on one page is reflected on all others .
1212 */
1313
1414import { useState , useCallback , useRef } from 'preact/hooks' ;
1515
16- const STORAGE_KEY_PREFIX = 'lightnvr-camera-order- ' ;
16+ const STORAGE_KEY = 'lightnvr-camera-order' ;
1717
1818/**
1919 * Load persisted order from localStorage.
2020 * Returns an object mapping stream name → position index.
2121 */
22- function loadOrder ( viewType ) {
22+ function loadOrder ( ) {
2323 try {
24- const raw = localStorage . getItem ( STORAGE_KEY_PREFIX + viewType ) ;
24+ const raw = localStorage . getItem ( STORAGE_KEY ) ;
2525 if ( ! raw ) return { } ;
2626 const arr = JSON . parse ( raw ) ;
2727 if ( ! Array . isArray ( arr ) ) return { } ;
@@ -36,9 +36,9 @@ function loadOrder(viewType) {
3636/**
3737 * Persist an ordered array of stream names to localStorage.
3838 */
39- function saveOrder ( viewType , names ) {
39+ function saveOrder ( names ) {
4040 try {
41- localStorage . setItem ( STORAGE_KEY_PREFIX + viewType , JSON . stringify ( names ) ) ;
41+ localStorage . setItem ( STORAGE_KEY , JSON . stringify ( names ) ) ;
4242 } catch { /* quota errors are non-fatal */ }
4343}
4444
@@ -60,11 +60,11 @@ function applyOrder(streams, orderMap) {
6060
6161/**
6262 * @param {Array } streams - the filtered streams array from LiveView / WebRTCView
63- * @param {string } viewType - "webrtc" | "hls"
63+ * @param {string } _viewType - ignored (kept for API compatibility); all views share one key
6464 */
65- export function useCameraOrder ( streams , viewType ) {
65+ export function useCameraOrder ( streams , _viewType ) {
6666 // The persisted user-defined order (stream name → position index)
67- const [ orderMap , setOrderMap ] = useState ( ( ) => loadOrder ( viewType ) ) ;
67+ const [ orderMap , setOrderMap ] = useState ( ( ) => loadOrder ( ) ) ;
6868
6969 // Whether the drag-reorder UI is active
7070 const [ reorderMode , setReorderMode ] = useState ( false ) ;
@@ -120,20 +120,20 @@ export function useCameraOrder(streams, viewType) {
120120 e . preventDefault ( ) ;
121121 // Persist the current order
122122 const current = applyOrder ( streams , orderRef . current ) ;
123- saveOrder ( viewType , current . map ( s => s . name ) ) ;
123+ saveOrder ( current . map ( s => s . name ) ) ;
124124 dragIndexRef . current = null ;
125- } , [ streams , viewType ] ) ;
125+ } , [ streams ] ) ;
126126
127127 const handleDragEnd = useCallback ( ( ) => {
128128 dragIndexRef . current = null ;
129129 } , [ ] ) ;
130130
131131 /** Clear persisted order and reset to server default */
132132 const resetOrder = useCallback ( ( ) => {
133- localStorage . removeItem ( STORAGE_KEY_PREFIX + viewType ) ;
133+ localStorage . removeItem ( STORAGE_KEY ) ;
134134 setOrderMap ( { } ) ;
135135 setReorderMode ( false ) ;
136- } , [ viewType ] ) ;
136+ } , [ ] ) ;
137137
138138 return {
139139 orderedStreams,
0 commit comments