Files
AFFiNE-Mirror/packages/hooks/src/use-data-source-status.ts
T
2023-08-10 05:05:34 +00:00

16 lines
395 B
TypeScript

import type { Status, StatusAdapter } from '@affine/y-provider';
import { useCallback, useSyncExternalStore } from 'react';
type UIStatus =
| Status
| {
type: 'unknown';
};
export function useDataSourceStatus(datasource: StatusAdapter): UIStatus {
return useSyncExternalStore(
datasource.subscribeStatusChange,
useCallback(() => datasource.status, [datasource])
);
}