in src/hooks/common.ts [380:428]
export function useProperties() {
const [properties, setProperties] = useState(PropertiesData);
const [loading, setLoading] = useBoolean(false);
const [, append] = useLogger();
const loadDeviceInfo = useCallback(async () => {
setLoading.True();
const devInfo = await getDeviceInfo();
setProperties(currentProps => {
return currentProps.map(prop => {
if (prop.id in devInfo) {
return {
...prop,
...devInfo[prop.id as DeviceInfoName], // {value,dataType}
};
}
return prop;
});
});
append({
eventName: 'INFO',
eventData: 'Properties initialized.',
});
setLoading.False();
}, [setLoading, append]);
const updateProperty = useCallback(
(id: string, value: any) => {
setProperties(currentProps => {
return currentProps.map(prop => {
if (prop.id === id) {
return {
...prop,
value,
};
}
return prop;
});
});
},
[setProperties],
);
useEffect(() => {
loadDeviceInfo();
}, [loadDeviceInfo]);
return {loading, properties, updateProperty};
}