Files
navidrome/ui/src/reducers/activityReducer.js
T
Deluan 4f83987840 fix(ui): keep the NowPlayingPanel badge in sync.
Introduced a new event, EVENT_STREAM_RECONNECTED, to track the last
timestamp of stream reconnections. This change updates the activity
reducer to handle the new event and modifies the NowPlayingPanel to
refresh data based on server and stream status.

Signed-off-by: Deluan <deluan@navidrome.org>
2025-06-29 11:35:10 -04:00

55 lines
1.3 KiB
JavaScript

import {
EVENT_REFRESH_RESOURCE,
EVENT_SCAN_STATUS,
EVENT_SERVER_START,
EVENT_NOW_PLAYING_COUNT,
EVENT_STREAM_RECONNECTED,
} from '../actions'
import config from '../config'
const initialState = {
scanStatus: {
scanning: false,
folderCount: 0,
count: 0,
error: '',
elapsedTime: 0,
},
serverStart: { version: config.version },
nowPlayingCount: 0,
streamReconnected: 0, // Timestamp of last reconnection
}
export const activityReducer = (previousState = initialState, payload) => {
const { type, data } = payload
switch (type) {
case EVENT_SCAN_STATUS: {
const elapsedTime = Number(data.elapsedTime) || 0
return { ...previousState, scanStatus: { ...data, elapsedTime } }
}
case EVENT_SERVER_START:
return {
...previousState,
serverStart: {
startTime: data.startTime && Date.parse(data.startTime),
version: data.version,
},
}
case EVENT_REFRESH_RESOURCE:
return {
...previousState,
refresh: {
lastReceived: Date.now(),
resources: data,
},
}
case EVENT_NOW_PLAYING_COUNT:
return { ...previousState, nowPlayingCount: data.count }
case EVENT_STREAM_RECONNECTED:
return { ...previousState, streamReconnected: Date.now() }
default:
return previousState
}
}