UNPKG

@livelike/react-native

Version:

LiveLike React Native package

124 lines (123 loc) 4.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useChatMessageMenuItemActions = void 0; var _react = require("react"); var _javascript = require("@livelike/javascript"); var _useAnalytics = require("./useAnalytics"); var _useBannerActions = require("./useBannerActions"); var _useChatMessageActions = require("./useChatMessageActions"); var _types = require("../types"); const useChatMessageMenuItemActions = _ref => { let { messageDetails } = _ref; const { addBannerItem } = (0, _useBannerActions.useBannerActions)(); const [blockId, setBlockedId] = (0, _react.useState)(); const { deleteChatMessage } = (0, _useChatMessageActions.useChatMessageActions)({ roomId: messageDetails.chat_room_id }); const { trackEvent } = (0, _useAnalytics.useAnalytics)(); return (0, _react.useMemo)(() => { const addInfoBanner = bannerMessage => addBannerItem({ bannerType: _types.BannerType.INFO, bannerMessage }); const addErrorBanner = bannerMessage => addBannerItem({ bannerType: _types.BannerType.ERROR, bannerMessage }); const deleteMessageApiFn = () => (0, _javascript.deleteMessage)({ roomId: messageDetails.chat_room_id, messageId: messageDetails.id }).then(res => { addInfoBanner('Message deleted'); deleteChatMessage({ roomId: messageDetails.chat_room_id, chatMessage: messageDetails }); return res; }).catch(error => { addErrorBanner('Failed to delete message'); (0, _javascript.hasDebugLogger)() && console.error(error); return error; }); const reportMessageApiFn = () => (0, _javascript.reportMessage)({ messageId: messageDetails.id, nickname: messageDetails.sender_nickname, profileId: messageDetails.sender_id, roomId: messageDetails.chat_room_id }).then(res => { addInfoBanner('Message reported'); trackEvent('Chat Message Reported', { messageDetails, reportInfo: res }); return res; }).catch(error => { let errorDetail = 'Failed to report message'; if (error.status === 409) { errorDetail = 'This message is already reported by you'; } addErrorBanner(errorDetail); (0, _javascript.hasDebugLogger)() && console.error(error); return error; }); const blockUserApiFn = () => (0, _javascript.blockProfile)({ profileId: messageDetails.sender_id }).then(res => { setBlockedId(res.id); addInfoBanner(`${messageDetails.sender_nickname} was blocked`); trackEvent('Chat User Blocked', { messageDetails, blockInfo: res }); return res; }).catch(error => { addErrorBanner(`Failed to block ${messageDetails.sender_nickname}`); (0, _javascript.hasDebugLogger)() && console.error(error); return error; }); const unblockUserApiFn = () => (0, _javascript.unblockProfile)({ blockId }).then(res => { setBlockedId(null); addInfoBanner(`${messageDetails.sender_nickname} was unblocked`); trackEvent('Chat User Unblocked', { messageDetails, unblockInfo: res }); return res; }).catch(error => { addErrorBanner(`Unable to unblock ${messageDetails.sender_nickname}`); (0, _javascript.hasDebugLogger)() && console.error(error); return error; }); const blockUnblockApiFn = () => { if (blockId) return unblockUserApiFn().then(res => { setBlockedId(null); return res; });else return blockUserApiFn().then(res => { setBlockedId(res.id); return res; }); }; return { blockId, deleteMessageApiFn, reportMessageApiFn, blockUserApiFn, unblockUserApiFn, blockUnblockApiFn }; }, [blockId, messageDetails, addBannerItem, deleteChatMessage, trackEvent]); }; exports.useChatMessageMenuItemActions = useChatMessageMenuItemActions; //# sourceMappingURL=useChatMessageMenuItemActions.js.map