2023-09-01 01:15:07 -05:00
|
|
|
import type { DataSourceAdapter, Status } from '@affine/y-provider';
|
2023-08-10 01:05:34 -04:00
|
|
|
import { useCallback, useSyncExternalStore } from 'react';
|
|
|
|
|
|
|
|
type UIStatus =
|
|
|
|
| Status
|
|
|
|
| {
|
|
|
|
type: 'unknown';
|
|
|
|
};
|
|
|
|
|
2023-09-01 01:15:07 -05:00
|
|
|
export function useDataSourceStatus(provider: DataSourceAdapter): UIStatus {
|
2023-08-10 01:05:34 -04:00
|
|
|
return useSyncExternalStore(
|
2023-09-01 01:15:07 -05:00
|
|
|
provider.subscribeStatusChange,
|
|
|
|
useCallback(() => provider.status, [provider])
|
2023-08-10 01:05:34 -04:00
|
|
|
);
|
|
|
|
}
|