UNPKG

stream-chat-react-native-core

Version:

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

137 lines 6.96 kB
Object.defineProperty(exports, "__esModule", { value: true }); exports.ThreadMessagePreviewDeliveryStatus = void 0; var _react = _interopRequireWildcard(require("react")); var _reactNative = require("react-native"); var _ChatContext = require("../../contexts/chatContext/ChatContext"); var _ComponentsContext = require("../../contexts/componentsContext/ComponentsContext"); var _ThemeContext = require("../../contexts/themeContext/ThemeContext"); var _TranslationContext = require("../../contexts/translationContext/TranslationContext"); var _hooks = require("../../hooks"); var _theme = require("../../theme"); var _utils = require("../../utils/utils"); var _jsxRuntime = require("react/jsx-runtime"); var _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/ThreadList/ThreadMessagePreviewDeliveryStatus.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 ThreadMessagePreviewDeliveryStatus = ({ channel, message }) => { var _channel$state2, _client$user2, _client$user4, _channel$data; var _useChatContext = (0, _ChatContext.useChatContext)(), client = _useChatContext.client; var _useComponentsContext = (0, _ComponentsContext.useComponentsContext)(), icons = _useComponentsContext.icons; var _useTranslationContex = (0, _TranslationContext.useTranslationContext)(), t = _useTranslationContex.t; var channelConfigExists = typeof (channel == null ? void 0 : channel.getConfig) === 'function'; var styles = useStyles(); var _useTheme = (0, _ThemeContext.useTheme)(), _useTheme$theme = _useTheme.theme, _useTheme$theme$chann = _useTheme$theme.channelPreview.messageDeliveryStatus, checkAllIcon = _useTheme$theme$chann.checkAllIcon, checkIcon = _useTheme$theme$chann.checkIcon, timeIcon = _useTheme$theme$chann.timeIcon, semantics = _useTheme$theme.semantics; var membersWithoutSelf = (0, _react.useMemo)(() => { var _channel$state; return Object.values(((_channel$state = channel.state) == null ? void 0 : _channel$state.members) || {}).filter(member => { var _member$user, _client$user; return ((_member$user = member.user) == null ? void 0 : _member$user.id) !== ((_client$user = client.user) == null ? void 0 : _client$user.id); }); }, [(_channel$state2 = channel.state) == null ? void 0 : _channel$state2.members, (_client$user2 = client.user) == null ? void 0 : _client$user2.id]); var isLastMessageByCurrentUser = (0, _react.useMemo)(() => { var _message$user, _client$user3; return (message == null || (_message$user = message.user) == null ? void 0 : _message$user.id) === ((_client$user3 = client.user) == null ? void 0 : _client$user3.id); }, [message, (_client$user4 = client.user) == null ? void 0 : _client$user4.id]); var readEvents = (0, _react.useMemo)(() => { var _channel$getConfig; if (!channelConfigExists) { return true; } var read_events = !channel.disconnected && !!(channel != null && channel.id) && ((_channel$getConfig = channel.getConfig()) == null ? void 0 : _channel$getConfig.read_events); if (typeof read_events !== 'boolean') { return true; } return read_events; }, [channelConfigExists, channel]); var _useMessageDeliverySt = (0, _hooks.useMessageDeliveryStatus)({ channel, lastMessage: message, isReadEventsEnabled: readEvents }), status = _useMessageDeliverySt.status; if (!((_channel$data = channel.data) != null && _channel$data.name) && membersWithoutSelf.length === 1 && !isLastMessageByCurrentUser) { return null; } if (!isLastMessageByCurrentUser) { var _message$user2, _message$user3; return (0, _jsxRuntime.jsxs)(_reactNative.Text, { style: styles.username, children: [(message == null || (_message$user2 = message.user) == null ? void 0 : _message$user2.name) || (message == null || (_message$user3 = message.user) == null ? void 0 : _message$user3.id), ":"] }); } return (0, _jsxRuntime.jsxs)(_reactNative.View, { style: styles.container, children: [message.status === _utils.MessageStatusTypes.SENDING ? (0, _jsxRuntime.jsx)(icons.Time, { stroke: semantics.chatTextTimestamp, height: 20, width: 20, ...timeIcon }) : message.status === _utils.MessageStatusTypes.RECEIVED && status === _hooks.MessageDeliveryStatus.READ ? (0, _jsxRuntime.jsx)(icons.CheckAll, { stroke: semantics.accentPrimary, height: 20, width: 20, ...checkAllIcon }) : status === _hooks.MessageDeliveryStatus.DELIVERED ? (0, _jsxRuntime.jsx)(icons.CheckAll, { stroke: semantics.chatTextTimestamp, height: 20, width: 20, ...checkAllIcon }) : status === _hooks.MessageDeliveryStatus.SENT ? (0, _jsxRuntime.jsx)(icons.Check, { stroke: semantics.chatTextTimestamp, height: 20, width: 20, ...checkIcon }) : null, (0, _jsxRuntime.jsxs)(_reactNative.Text, { style: styles.text, children: [t('You'), ":"] })] }); }; exports.ThreadMessagePreviewDeliveryStatus = ThreadMessagePreviewDeliveryStatus; var useStyles = () => { var _useTheme2 = (0, _ThemeContext.useTheme)(), _useTheme2$theme = _useTheme2.theme, semantics = _useTheme2$theme.semantics, _useTheme2$theme$thre = _useTheme2$theme.threadListItem.messagePreviewDeliveryStatus, container = _useTheme2$theme$thre.container, text = _useTheme2$theme$thre.text, username = _useTheme2$theme$thre.username; return (0, _react.useMemo)(() => { return _reactNative.StyleSheet.create({ container: { flexDirection: 'row', alignItems: 'center', gap: _theme.primitives.spacingXxs, ...container }, text: { color: semantics.textSecondary, fontSize: _theme.primitives.typographyFontSizeMd, fontWeight: _theme.primitives.typographyFontWeightSemiBold, lineHeight: _theme.primitives.typographyLineHeightNormal, ...text }, username: { color: semantics.textSecondary, fontSize: _theme.primitives.typographyFontSizeMd, fontWeight: _theme.primitives.typographyFontWeightSemiBold, lineHeight: _theme.primitives.typographyLineHeightNormal, ...username } }); }, [semantics, text, container, username]); }; //# sourceMappingURL=ThreadMessagePreviewDeliveryStatus.js.map