UNPKG

stream-chat-react-native-core

Version:

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

92 lines 5.03 kB
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useChannelEditDetailsContext = exports.ChannelEditDetailsProvider = exports.ChannelEditDetailsContext = void 0; var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = _interopRequireWildcard(require("react")); var _NotificationTargetContext = require("../../components/Notifications/NotificationTargetContext"); var _useChannelActions2 = require("../../hooks/actions/useChannelActions"); var _useStableCallback = require("../../hooks/useStableCallback"); var _editChannelDetailsStore = require("../../state-store/edit-channel-details-store"); var _channelDetailsContext = require("../channelDetailsContext/channelDetailsContext"); var _defaultBaseContextValue = require("../utils/defaultBaseContextValue"); var _isTestEnvironment = require("../utils/isTestEnvironment"); var _jsxRuntime = require("react/jsx-runtime"); var _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/contexts/channelEditDetailsContext/ChannelEditDetailsContext.tsx"; function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } var ChannelEditDetailsContext = exports.ChannelEditDetailsContext = _react.default.createContext(_defaultBaseContextValue.DEFAULT_BASE_CONTEXT_VALUE); var ChannelEditDetailsContextProviderInner = ({ children, compressImageQuality, doFileUploadRequest }) => { var _useChannelDetailsCon = (0, _channelDetailsContext.useChannelDetailsContext)(), channel = _useChannelDetailsCon.channel; var _useChannelActions = (0, _useChannelActions2.useChannelActions)(channel), updateImage = _useChannelActions.updateImage, updateName = _useChannelActions.updateName; var _useState = (0, _react.useState)(() => new _editChannelDetailsStore.EditChannelDetailsStore(channel)), _useState2 = (0, _slicedToArray2.default)(_useState, 1), store = _useState2[0]; var submit = (0, _useStableCallback.useStableCallback)((0, _asyncToGenerator2.default)(function* () { var state = store.state.getLatestValue(); var currentName = state.currentName, updatedImage = state.updatedImage; var errors = []; var onFailure = error => errors.push(error); var tasks = []; if ((0, _editChannelDetailsStore.isNameEdited)(state)) { tasks.push(updateName(currentName, { onFailure })); } if ((0, _editChannelDetailsStore.isImageEdited)(state)) { tasks.push(updateImage(updatedImage, { onFailure }, doFileUploadRequest)); } yield Promise.all(tasks); if (errors.length > 0) { throw new AggregateError(errors, 'Failed to update channel details'); } })); var value = (0, _react.useMemo)(() => ({ compressImageQuality, doFileUploadRequest, store, submit }), [compressImageQuality, doFileUploadRequest, store, submit]); return (0, _jsxRuntime.jsx)(ChannelEditDetailsContext.Provider, { value: value, children: children }); }; var ChannelEditDetailsProvider = ({ children, compressImageQuality, doFileUploadRequest }) => { var _useChannelDetailsCon2 = (0, _channelDetailsContext.useChannelDetailsContext)(), channel = _useChannelDetailsCon2.channel; return (0, _jsxRuntime.jsx)(_NotificationTargetContext.NotificationTargetProvider, { hostId: `channel-edit-details:${channel.cid}`, panel: "channel-details", children: (0, _jsxRuntime.jsx)(ChannelEditDetailsContextProviderInner, { compressImageQuality: compressImageQuality, doFileUploadRequest: doFileUploadRequest, children: children }) }); }; exports.ChannelEditDetailsProvider = ChannelEditDetailsProvider; var useChannelEditDetailsContext = () => { var contextValue = (0, _react.useContext)(ChannelEditDetailsContext); if (contextValue === _defaultBaseContextValue.DEFAULT_BASE_CONTEXT_VALUE && !(0, _isTestEnvironment.isTestEnvironment)()) { throw new Error('The useChannelEditDetailsContext hook was called outside of the ChannelEditDetailsContext provider. Render the channel edit UI inside a ChannelEditDetailsProvider.'); } return contextValue; }; exports.useChannelEditDetailsContext = useChannelEditDetailsContext; //# sourceMappingURL=ChannelEditDetailsContext.js.map