Skip to content

Commit 7934824

Browse files
committed
fix: reevaluate volume hook when state updates
1 parent 8e15f77 commit 7934824

File tree

2 files changed

+47
-35
lines changed

2 files changed

+47
-35
lines changed
Lines changed: 44 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { useMemo } from 'react';
12
import { Volume } from '../../../types';
23
import { useWebsocketContext } from '../../../utils/useWebsocketContext';
34
import { IBasicVolumeReturn, useIBasicVolume } from './useIBasicVolume';
@@ -15,25 +16,31 @@ export function useIBasicVolumeWithFeedback(
1516
const { sendMessage, sendSimpleMessage } = useWebsocketContext();
1617

1718
const baseVolume = useIBasicVolume(path);
18-
if(!baseVolume) {
19+
20+
return useMemo(() => {
21+
if (!baseVolume) {
1922
console.log('baseVolume is undefined');
2023
return undefined;
21-
}
22-
if (!volumeState) {
23-
console.log('volumeState is undefined');
24-
return undefined;
25-
}
26-
const setLevel = (value: number) => sendSimpleMessage(`${path}/level`, value);
27-
const muteOn = () => sendMessage(`${path}/muteOn`, null);
28-
const muteOff = () => sendMessage(`${path}/muteOff`, null);
24+
}
25+
26+
if (!volumeState) {
27+
console.log('volumeState is undefined');
28+
return undefined;
29+
}
30+
31+
const setLevel = (value: number) =>
32+
sendSimpleMessage(`${path}/level`, value);
33+
const muteOn = () => sendMessage(`${path}/muteOn`, null);
34+
const muteOff = () => sendMessage(`${path}/muteOff`, null);
2935

30-
return {
31-
...baseVolume,
32-
volumeState,
33-
setLevel,
34-
muteOn,
35-
muteOff,
36-
};
36+
return {
37+
...baseVolume,
38+
volumeState,
39+
setLevel,
40+
muteOn,
41+
muteOff,
42+
};
43+
}, [baseVolume, volumeState, path, sendMessage, sendSimpleMessage]);
3744
}
3845

3946
export interface IBasicVolumeWithFeedbackReturn extends IBasicVolumeReturn {
@@ -42,32 +49,38 @@ export interface IBasicVolumeWithFeedbackReturn extends IBasicVolumeReturn {
4249
muteOn: () => void;
4350
muteOff: () => void;
4451
}
45-
52+
/**
53+
* @deprecated use useIBasicVolumeWithFeedback instead
54+
*/
4655
export function useGetIBasicVolumeWithFeedback(
4756
path: string,
4857
volumeState: Volume | undefined
4958
): IBasicVolumeWithFeedbackReturn | undefined {
5059
const { sendMessage, sendSimpleMessage } = useWebsocketContext();
5160

5261
const baseVolume = useIBasicVolume(path);
53-
if(!baseVolume) {
62+
63+
return useMemo(() => {
64+
if (!baseVolume) {
5465
console.log('baseVolume is undefined');
5566
return undefined;
56-
}
57-
if(!volumeState) {
67+
}
68+
if (!volumeState) {
5869
console.log('volumeState is undefined');
5970
return undefined;
60-
}
71+
}
6172

62-
const setLevel = (value: number) => sendSimpleMessage(`${path}/level`, value);
63-
const muteOn = () => sendMessage(`${path}/muteOn`, null);
64-
const muteOff = () => sendMessage(`${path}/muteOff`, null);
73+
const setLevel = (value: number) =>
74+
sendSimpleMessage(`${path}/level`, value);
75+
const muteOn = () => sendMessage(`${path}/muteOn`, null);
76+
const muteOff = () => sendMessage(`${path}/muteOff`, null);
6577

66-
return {
67-
...baseVolume,
68-
volumeState,
69-
setLevel,
70-
muteOn,
71-
muteOff,
72-
};
78+
return {
79+
...baseVolume,
80+
volumeState,
81+
setLevel,
82+
muteOn,
83+
muteOff,
84+
};
85+
}, [baseVolume, volumeState, path, sendMessage, sendSimpleMessage]);
7386
}

src/lib/shared/hooks/useDeviceIBasicVolumeWithFeedback.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,13 @@ import { useIBasicVolumeWithFeedback } from './interfaces/useIBasicVolumeWithFee
44

55
/**
66
* Wrapper hook for a device volume
7-
* @param deviceKey
8-
* @returns
7+
* @param deviceKey
8+
* @returns
99
*/
10-
export function useDeviceIBasicVolumeWithFeedback(deviceKey: string ) {
10+
export function useDeviceIBasicVolumeWithFeedback(deviceKey: string) {
1111
const volumeState = useGetDevice<IBasicVolumeWithFeedbackState>(deviceKey);
1212

1313
const path = `/device/${deviceKey}`;
1414

1515
return useIBasicVolumeWithFeedback(path, volumeState?.volume);
1616
}
17-

0 commit comments

Comments
 (0)