@atlaskit/editor-plugin-synced-block
Version:
SyncedBlock plugin for @atlaskit/editor-core
23 lines • 1.15 kB
JavaScript
import { useEffect } from 'react';
import { useSharedPluginStateWithSelector } from '@atlaskit/editor-common/hooks';
import { isOfflineMode } from '@atlaskit/editor-plugin-connectivity';
// Component that manages synced block data synchronization.
// Uses provider-based GraphQL subscriptions for updates when online.
// Falls back to polling at regular intervals when offline.
export var SyncBlockRefresher = function SyncBlockRefresher(_ref) {
var syncBlockStoreManager = _ref.syncBlockStoreManager,
api = _ref.api;
var _useSharedPluginState = useSharedPluginStateWithSelector(api, ['connectivity'], function (states) {
var _states$connectivityS;
return {
mode: (_states$connectivityS = states.connectivityState) === null || _states$connectivityS === void 0 ? void 0 : _states$connectivityS.mode
};
}),
mode = _useSharedPluginState.mode;
var isOnline = !isOfflineMode(mode);
useEffect(function () {
var useRealTimeSubscriptions = isOnline;
syncBlockStoreManager.referenceManager.setRealTimeSubscriptionsEnabled(useRealTimeSubscriptions);
}, [syncBlockStoreManager, isOnline]);
return null;
};