Update Vite configuration to deduplicate React and React-DOM; enhance DeviceContext with syncPeqCatalog method for improved PEQ state management; refactor LuxsinAPI to streamline PEQ filter updates; replace range input with ThumbOnlyRangeSlider in Home component for better user experience.

This commit is contained in:
yangy
2026-05-28 15:18:17 +08:00
parent e6b7dcc89c
commit ce55be295a
12 changed files with 1090 additions and 772 deletions
+9 -1
View File
@@ -31,6 +31,8 @@ interface DeviceContextType {
updatePeq: (filters: PeqFilter[]) => Promise<void>;
upgradePeqChange: (payload: PeqChangePayload) => Promise<void>;
upgradePeqApply: (payload: PeqApplyPayload) => Promise<void>;
/** 与设备 syncPeq 结果对齐全局 peqState,避免 EQ 页本地列表与轮询缓存不一致 */
syncPeqCatalog: (state: PeqState) => void;
// Optimistic state updaters
setVolume: (v: number) => void;
setInput: (v: number) => void;
@@ -72,6 +74,10 @@ export function DeviceProvider({ children }: { children: React.ReactNode }) {
setPeqState(peq);
}, []);
const syncPeqCatalog = useCallback((state: PeqState) => {
setPeqState(state);
}, []);
const connect = useCallback(async (forceDemo?: boolean, connectIp?: string) => {
const useDemo = forceDemo !== undefined ? forceDemo : isDemoMode;
const targetIp = (connectIp ?? ip).trim();
@@ -176,6 +182,7 @@ export function DeviceProvider({ children }: { children: React.ReactNode }) {
}, []);
const upgradePeqChange = useCallback(async (payload: PeqChangePayload) => {
console.log("[peqChange]", payload.peqChange);
if (isDemoMode) {
applyPeqFiltersToState(payload.peqChange.filters);
return;
@@ -186,6 +193,7 @@ export function DeviceProvider({ children }: { children: React.ReactNode }) {
}, [api, isDemoMode, applyPeqFiltersToState]);
const upgradePeqApply = useCallback(async (payload: PeqApplyPayload) => {
console.log("[peqApply]", payload.peqApply);
if (isDemoMode) {
applyPeqFiltersToState(payload.peqApply.filters);
return;
@@ -263,7 +271,7 @@ export function DeviceProvider({ children }: { children: React.ReactNode }) {
isConnected, isConnecting, isDemoMode, setDemoMode,
deviceState, peqState, lastUpdated, error,
connect, disconnect, refresh, api,
updateSetting, updatePeq, upgradePeqChange, upgradePeqApply,
updateSetting, updatePeq, upgradePeqChange, upgradePeqApply, syncPeqCatalog,
setVolume, setInput, setOutput, setBalance,
}}>
{children}