@livelike/react-native
Version:
LiveLike React Native package
124 lines (123 loc) • 4.05 kB
JavaScript
;
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