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:
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user