UNPKG

@replyke/core

Version:

Replyke: Build interactive apps with social features like comments, votes, feeds, user lists, notifications, and more.

46 lines 2.16 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const react_1 = require("react"); const hooks_1 = require("../../../store/hooks"); const chatSlice_1 = require("../../../store/slices/chatSlice"); const userSlice_1 = require("../../../store/slices/userSlice"); const authSlice_1 = require("../../../store/slices/authSlice"); const useAxiosPrivate_1 = __importDefault(require("../../../config/useAxiosPrivate")); const useProject_1 = __importDefault(require("../../projects/useProject")); const handleError_1 = require("../../../utils/handleError"); function useToggleReaction() { const dispatch = (0, hooks_1.useReplykeDispatch)(); const { projectId } = (0, useProject_1.default)(); const axios = (0, useAxiosPrivate_1.default)(); const user = (0, hooks_1.useReplykeSelector)(userSlice_1.selectUser); const authUser = (0, hooks_1.useReplykeSelector)(authSlice_1.selectUser); const currentUserId = (user || authUser)?.id ?? ""; const toggle = (0, react_1.useCallback)(async ({ conversationId, messageId, emoji, }) => { if (!projectId) throw new Error("No projectId available."); try { const response = await axios.post(`/${projectId}/chat/conversations/${conversationId}/messages/${messageId}/reactions`, { emoji }); const { reactionCounts, userReactions, delta } = response.data; dispatch((0, chatSlice_1.updateReactions)({ conversationId, messageId, reactionCounts, userId: currentUserId, emoji, delta, currentUserId, })); return { reactionCounts, userReactions }; } catch (err) { (0, handleError_1.handleError)(err, "Failed to toggle reaction"); throw err; } }, [projectId, currentUserId, axios, dispatch]); return toggle; } exports.default = useToggleReaction; //# sourceMappingURL=useToggleReaction.js.map