export function useProperties()

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};
}