UNPKG

stream-chat-react-native-core

Version:

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

69 lines 2.72 kB
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useAppSettings = void 0; var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = require("react"); var _useIsMountedRef = require("../../../hooks/useIsMountedRef"); var useAppSettings = (client, isOnline, enableOfflineSupport, initialisedDatabase) => { var _useState = (0, _react.useState)(null), _useState2 = (0, _slicedToArray2.default)(_useState, 2), appSettings = _useState2[0], setAppSettings = _useState2[1]; var appSettingsPromise = (0, _react.useRef)(null); var fetchedAppSettings = (0, _react.useRef)(false); var isMounted = (0, _useIsMountedRef.useIsMountedRef)(); (0, _react.useEffect)(() => { if (fetchedAppSettings.current) { return; } var fetchAppSettings = () => { if (appSettingsPromise.current) { return appSettingsPromise.current; } appSettingsPromise.current = client.getAppSettings(); return appSettingsPromise.current; }; var enforceAppSettings = function () { var _ref = (0, _asyncToGenerator2.default)(function* () { if (!client.userID) return; if (enableOfflineSupport && !initialisedDatabase) return; var userId = client.userID; if (!isOnline && client.offlineDb) { var _appSettings = yield client.offlineDb.getAppSettings({ userId }); setAppSettings(_appSettings); return; } try { var _appSettings2 = yield fetchAppSettings(); if (isMounted.current && _appSettings2) { var _client$offlineDb; setAppSettings(_appSettings2); fetchedAppSettings.current = true; (_client$offlineDb = client.offlineDb) == null || _client$offlineDb.executeQuerySafely(db => db.upsertAppSettings({ appSettings: _appSettings2, userId }), { method: 'upsertAppSettings' }); } } catch (error) { if (error instanceof Error) { console.error(`An error occurred while getting app settings: ${error}`); } } }); return function enforceAppSettings() { return _ref.apply(this, arguments); }; }(); enforceAppSettings(); }, [client, isOnline, initialisedDatabase, isMounted, enableOfflineSupport]); return appSettings; }; exports.useAppSettings = useAppSettings; //# sourceMappingURL=useAppSettings.js.map