UNPKG

stream-chat-react-native-core

Version:

The official React Native and Expo components for Stream Chat, a service for building chat applications

68 lines 2.66 kB
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useInitializeOfflineDb = void 0; var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = require("react"); var _useStableCallback = require("../../../hooks/useStableCallback"); var _OfflineDB = require("../../../store/OfflineDB"); var _SqliteClient = require("../../../store/SqliteClient"); var useInitializeOfflineDb = ({ client, enabled, options, userID }) => { var _useState = (0, _react.useState)(), _useState2 = (0, _slicedToArray2.default)(_useState, 2), initializationError = _useState2[0], setInitializationError = _useState2[1]; var _ref = options != null ? options : {}, getEncryptionKey = _ref.getEncryptionKey, maxSyncEventsLimit = _ref.maxSyncEventsLimit; var resolveEncryptionKey = (0, _useStableCallback.useStableCallback)(() => { var _getEncryptionKey; return (_getEncryptionKey = getEncryptionKey == null ? void 0 : getEncryptionKey()) != null ? _getEncryptionKey : Promise.resolve(undefined); }); var isEncryptionEnabled = !!getEncryptionKey; var initialize = (0, _react.useCallback)((0, _asyncToGenerator2.default)(function* () { if (!(userID && enabled)) { return; } if (!client.offlineDb) { var keyGetter = isEncryptionEnabled ? resolveEncryptionKey : undefined; if (keyGetter) { _SqliteClient.SqliteClient.getEncryptionKey = keyGetter; try { yield _SqliteClient.SqliteClient.preflightEncryption(); } catch (error) { if (error instanceof _SqliteClient.SqliteClientError) { setInitializationError(error); return; } throw error; } } client.setOfflineDBApi(new _OfflineDB.OfflineDB({ client, getEncryptionKey: keyGetter, maxSyncEventsLimit })); } var offlineDb = client.offlineDb; if (offlineDb) { yield offlineDb.init(userID); setInitializationError(offlineDb instanceof _OfflineDB.OfflineDB ? offlineDb.initializationError : undefined); } }), [client, enabled, isEncryptionEnabled, maxSyncEventsLimit, resolveEncryptionKey, userID]); (0, _react.useEffect)(() => { initialize(); }, [initialize]); if (initializationError) { throw initializationError; } }; exports.useInitializeOfflineDb = useInitializeOfflineDb; //# sourceMappingURL=useInitializeOfflineDb.js.map