@replyke/core 7.0.0-beta.101 → 7.0.0-beta.103
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/config/axios.d.ts +1 -0
- package/dist/cjs/config/axios.js +4 -4
- package/dist/cjs/config/axios.js.map +1 -1
- package/dist/cjs/context/chat-context.d.ts +17 -0
- package/dist/cjs/context/chat-context.js +299 -0
- package/dist/cjs/context/chat-context.js.map +1 -0
- package/dist/cjs/context/conversation-context.d.ts +14 -0
- package/dist/cjs/context/conversation-context.js +231 -0
- package/dist/cjs/context/conversation-context.js.map +1 -0
- package/dist/cjs/context/index.d.ts +3 -0
- package/dist/cjs/context/index.js +13 -1
- package/dist/cjs/context/index.js.map +1 -1
- package/dist/cjs/context/message-thread-context.d.ts +13 -0
- package/dist/cjs/context/message-thread-context.js +32 -0
- package/dist/cjs/context/message-thread-context.js.map +1 -0
- package/dist/cjs/hooks/chat/conversations/index.d.ts +10 -0
- package/dist/cjs/hooks/chat/conversations/index.js +17 -0
- package/dist/cjs/hooks/chat/conversations/index.js.map +1 -0
- package/dist/cjs/hooks/chat/conversations/useConversation.d.ts +18 -0
- package/dist/cjs/hooks/chat/conversations/useConversation.js +134 -0
- package/dist/cjs/hooks/chat/conversations/useConversation.js.map +1 -0
- package/dist/cjs/hooks/chat/conversations/useConversationMembers.d.ts +18 -0
- package/dist/cjs/hooks/chat/conversations/useConversationMembers.js +219 -0
- package/dist/cjs/hooks/chat/conversations/useConversationMembers.js.map +1 -0
- package/dist/cjs/hooks/chat/conversations/useConversations.d.ts +17 -0
- package/dist/cjs/hooks/chat/conversations/useConversations.js +193 -0
- package/dist/cjs/hooks/chat/conversations/useConversations.js.map +1 -0
- package/dist/cjs/hooks/chat/conversations/useCreateDirectConversation.d.ts +6 -0
- package/dist/cjs/hooks/chat/conversations/useCreateDirectConversation.js +83 -0
- package/dist/cjs/hooks/chat/conversations/useCreateDirectConversation.js.map +1 -0
- package/dist/cjs/hooks/chat/conversations/useSpaceConversation.d.ts +10 -0
- package/dist/cjs/hooks/chat/conversations/useSpaceConversation.js +91 -0
- package/dist/cjs/hooks/chat/conversations/useSpaceConversation.js.map +1 -0
- package/dist/cjs/hooks/chat/index.d.ts +15 -0
- package/dist/cjs/hooks/chat/index.js +36 -0
- package/dist/cjs/hooks/chat/index.js.map +1 -0
- package/dist/cjs/hooks/chat/messages/index.d.ts +12 -0
- package/dist/cjs/hooks/chat/messages/index.js +19 -0
- package/dist/cjs/hooks/chat/messages/index.js.map +1 -0
- package/dist/cjs/hooks/chat/messages/useChatMessages.d.ts +15 -0
- package/dist/cjs/hooks/chat/messages/useChatMessages.js +228 -0
- package/dist/cjs/hooks/chat/messages/useChatMessages.js.map +1 -0
- package/dist/cjs/hooks/chat/messages/useDeleteMessage.d.ts +6 -0
- package/dist/cjs/hooks/chat/messages/useDeleteMessage.js +81 -0
- package/dist/cjs/hooks/chat/messages/useDeleteMessage.js.map +1 -0
- package/dist/cjs/hooks/chat/messages/useEditMessage.d.ts +13 -0
- package/dist/cjs/hooks/chat/messages/useEditMessage.js +81 -0
- package/dist/cjs/hooks/chat/messages/useEditMessage.js.map +1 -0
- package/dist/cjs/hooks/chat/messages/useMessageThread.d.ts +15 -0
- package/dist/cjs/hooks/chat/messages/useMessageThread.js +38 -0
- package/dist/cjs/hooks/chat/messages/useMessageThread.js.map +1 -0
- package/dist/cjs/hooks/chat/messages/useSendMessage.d.ts +17 -0
- package/dist/cjs/hooks/chat/messages/useSendMessage.js +156 -0
- package/dist/cjs/hooks/chat/messages/useSendMessage.js.map +1 -0
- package/dist/cjs/hooks/chat/messages/useToggleReaction.d.ts +11 -0
- package/dist/cjs/hooks/chat/messages/useToggleReaction.js +95 -0
- package/dist/cjs/hooks/chat/messages/useToggleReaction.js.map +1 -0
- package/dist/cjs/hooks/chat/useChatSocket.d.ts +11 -0
- package/dist/cjs/hooks/chat/useChatSocket.js +13 -0
- package/dist/cjs/hooks/chat/useChatSocket.js.map +1 -0
- package/dist/cjs/hooks/chat/useConversationData.d.ts +31 -0
- package/dist/cjs/hooks/chat/useConversationData.js +47 -0
- package/dist/cjs/hooks/chat/useConversationData.js.map +1 -0
- package/dist/cjs/hooks/chat/useMarkConversationAsRead.d.ts +10 -0
- package/dist/cjs/hooks/chat/useMarkConversationAsRead.js +87 -0
- package/dist/cjs/hooks/chat/useMarkConversationAsRead.js.map +1 -0
- package/dist/cjs/hooks/chat/useReportMessage.d.ts +8 -0
- package/dist/cjs/hooks/chat/useReportMessage.js +76 -0
- package/dist/cjs/hooks/chat/useReportMessage.js.map +1 -0
- package/dist/cjs/hooks/chat/useTotalUnreadCount.d.ts +6 -0
- package/dist/cjs/hooks/chat/useTotalUnreadCount.js +14 -0
- package/dist/cjs/hooks/chat/useTotalUnreadCount.js.map +1 -0
- package/dist/cjs/hooks/chat/useTypingIndicator.d.ts +21 -0
- package/dist/cjs/hooks/chat/useTypingIndicator.js +68 -0
- package/dist/cjs/hooks/chat/useTypingIndicator.js.map +1 -0
- package/dist/cjs/hooks/comments/index.d.ts +1 -1
- package/dist/cjs/hooks/comments/index.js.map +1 -1
- package/dist/cjs/hooks/comments/useCommentSectionData.d.ts +5 -0
- package/dist/cjs/hooks/comments/useCommentSectionData.js +20 -17
- package/dist/cjs/hooks/comments/useCommentSectionData.js.map +1 -1
- package/dist/cjs/hooks/spaces/index.d.ts +4 -0
- package/dist/cjs/hooks/spaces/index.js +6 -1
- package/dist/cjs/hooks/spaces/index.js.map +1 -1
- package/dist/cjs/hooks/spaces/useSpaceMentions.d.ts +24 -0
- package/dist/cjs/hooks/spaces/useSpaceMentions.js +191 -0
- package/dist/cjs/hooks/spaces/useSpaceMentions.js.map +1 -0
- package/dist/cjs/hooks/spaces/useUnbanMember.d.ts +11 -0
- package/dist/cjs/hooks/spaces/useUnbanMember.js +71 -0
- package/dist/cjs/hooks/spaces/useUnbanMember.js.map +1 -0
- package/dist/cjs/hooks/users/index.d.ts +1 -1
- package/dist/cjs/hooks/users/index.js +3 -3
- package/dist/cjs/hooks/users/index.js.map +1 -1
- package/dist/cjs/hooks/users/{useMentions.d.ts → useUserMentions.d.ts} +8 -4
- package/dist/cjs/hooks/users/{useMentions.js → useUserMentions.js} +22 -17
- package/dist/cjs/hooks/users/useUserMentions.js.map +1 -0
- package/dist/cjs/index.d.ts +11 -5
- package/dist/cjs/index.js +70 -5
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interfaces/models/File.d.ts +1 -0
- package/dist/cjs/interfaces/models/IChatMessage.d.ts +34 -0
- package/dist/cjs/interfaces/models/IChatMessage.js +3 -0
- package/dist/cjs/interfaces/models/IChatMessage.js.map +1 -0
- package/dist/cjs/interfaces/models/IConversation.d.ts +25 -0
- package/dist/cjs/interfaces/models/IConversation.js +3 -0
- package/dist/cjs/interfaces/models/IConversation.js.map +1 -0
- package/dist/cjs/interfaces/models/IConversationMember.d.ts +16 -0
- package/dist/cjs/interfaces/models/IConversationMember.js +3 -0
- package/dist/cjs/interfaces/models/IConversationMember.js.map +1 -0
- package/dist/cjs/interfaces/models/Mention.d.ts +8 -1
- package/dist/cjs/store/api/spacesApi.d.ts +364 -0
- package/dist/cjs/store/api/spacesApi.js +20 -3
- package/dist/cjs/store/api/spacesApi.js.map +1 -1
- package/dist/cjs/store/hooks.d.ts +1 -0
- package/dist/cjs/store/index.d.ts +2 -0
- package/dist/cjs/store/replykeReducers.d.ts +2 -0
- package/dist/cjs/store/replykeReducers.js +2 -0
- package/dist/cjs/store/replykeReducers.js.map +1 -1
- package/dist/cjs/store/rootReducer.d.ts +3 -0
- package/dist/cjs/store/slices/chatSlice.d.ts +120 -0
- package/dist/cjs/store/slices/chatSlice.js +369 -0
- package/dist/cjs/store/slices/chatSlice.js.map +1 -0
- package/dist/cjs/store/slices/entityListsSlice.d.ts +168 -24
- package/dist/cjs/store/slices/spaceListsSlice.d.ts +24 -0
- package/dist/cjs/store/slices/userSlice.d.ts +16 -0
- package/dist/cjs/types/socket.d.ts +73 -0
- package/dist/cjs/types/socket.js +3 -0
- package/dist/cjs/types/socket.js.map +1 -0
- package/dist/esm/config/axios.d.ts +1 -0
- package/dist/esm/config/axios.js +1 -1
- package/dist/esm/config/axios.js.map +1 -1
- package/dist/esm/context/chat-context.d.ts +17 -0
- package/dist/esm/context/chat-context.js +291 -0
- package/dist/esm/context/chat-context.js.map +1 -0
- package/dist/esm/context/conversation-context.d.ts +14 -0
- package/dist/esm/context/conversation-context.js +223 -0
- package/dist/esm/context/conversation-context.js.map +1 -0
- package/dist/esm/context/index.d.ts +3 -0
- package/dist/esm/context/index.js +3 -0
- package/dist/esm/context/index.js.map +1 -1
- package/dist/esm/context/message-thread-context.d.ts +13 -0
- package/dist/esm/context/message-thread-context.js +24 -0
- package/dist/esm/context/message-thread-context.js.map +1 -0
- package/dist/esm/hooks/chat/conversations/index.d.ts +10 -0
- package/dist/esm/hooks/chat/conversations/index.js +6 -0
- package/dist/esm/hooks/chat/conversations/index.js.map +1 -0
- package/dist/esm/hooks/chat/conversations/useConversation.d.ts +18 -0
- package/dist/esm/hooks/chat/conversations/useConversation.js +129 -0
- package/dist/esm/hooks/chat/conversations/useConversation.js.map +1 -0
- package/dist/esm/hooks/chat/conversations/useConversationMembers.d.ts +18 -0
- package/dist/esm/hooks/chat/conversations/useConversationMembers.js +214 -0
- package/dist/esm/hooks/chat/conversations/useConversationMembers.js.map +1 -0
- package/dist/esm/hooks/chat/conversations/useConversations.d.ts +17 -0
- package/dist/esm/hooks/chat/conversations/useConversations.js +188 -0
- package/dist/esm/hooks/chat/conversations/useConversations.js.map +1 -0
- package/dist/esm/hooks/chat/conversations/useCreateDirectConversation.d.ts +6 -0
- package/dist/esm/hooks/chat/conversations/useCreateDirectConversation.js +78 -0
- package/dist/esm/hooks/chat/conversations/useCreateDirectConversation.js.map +1 -0
- package/dist/esm/hooks/chat/conversations/useSpaceConversation.d.ts +10 -0
- package/dist/esm/hooks/chat/conversations/useSpaceConversation.js +86 -0
- package/dist/esm/hooks/chat/conversations/useSpaceConversation.js.map +1 -0
- package/dist/esm/hooks/chat/index.d.ts +15 -0
- package/dist/esm/hooks/chat/index.js +13 -0
- package/dist/esm/hooks/chat/index.js.map +1 -0
- package/dist/esm/hooks/chat/messages/index.d.ts +12 -0
- package/dist/esm/hooks/chat/messages/index.js +7 -0
- package/dist/esm/hooks/chat/messages/index.js.map +1 -0
- package/dist/esm/hooks/chat/messages/useChatMessages.d.ts +15 -0
- package/dist/esm/hooks/chat/messages/useChatMessages.js +223 -0
- package/dist/esm/hooks/chat/messages/useChatMessages.js.map +1 -0
- package/dist/esm/hooks/chat/messages/useDeleteMessage.d.ts +6 -0
- package/dist/esm/hooks/chat/messages/useDeleteMessage.js +76 -0
- package/dist/esm/hooks/chat/messages/useDeleteMessage.js.map +1 -0
- package/dist/esm/hooks/chat/messages/useEditMessage.d.ts +13 -0
- package/dist/esm/hooks/chat/messages/useEditMessage.js +76 -0
- package/dist/esm/hooks/chat/messages/useEditMessage.js.map +1 -0
- package/dist/esm/hooks/chat/messages/useMessageThread.d.ts +15 -0
- package/dist/esm/hooks/chat/messages/useMessageThread.js +33 -0
- package/dist/esm/hooks/chat/messages/useMessageThread.js.map +1 -0
- package/dist/esm/hooks/chat/messages/useSendMessage.d.ts +17 -0
- package/dist/esm/hooks/chat/messages/useSendMessage.js +151 -0
- package/dist/esm/hooks/chat/messages/useSendMessage.js.map +1 -0
- package/dist/esm/hooks/chat/messages/useToggleReaction.d.ts +11 -0
- package/dist/esm/hooks/chat/messages/useToggleReaction.js +90 -0
- package/dist/esm/hooks/chat/messages/useToggleReaction.js.map +1 -0
- package/dist/esm/hooks/chat/useChatSocket.d.ts +11 -0
- package/dist/esm/hooks/chat/useChatSocket.js +11 -0
- package/dist/esm/hooks/chat/useChatSocket.js.map +1 -0
- package/dist/esm/hooks/chat/useConversationData.d.ts +31 -0
- package/dist/esm/hooks/chat/useConversationData.js +42 -0
- package/dist/esm/hooks/chat/useConversationData.js.map +1 -0
- package/dist/esm/hooks/chat/useMarkConversationAsRead.d.ts +10 -0
- package/dist/esm/hooks/chat/useMarkConversationAsRead.js +82 -0
- package/dist/esm/hooks/chat/useMarkConversationAsRead.js.map +1 -0
- package/dist/esm/hooks/chat/useReportMessage.d.ts +8 -0
- package/dist/esm/hooks/chat/useReportMessage.js +71 -0
- package/dist/esm/hooks/chat/useReportMessage.js.map +1 -0
- package/dist/esm/hooks/chat/useTotalUnreadCount.d.ts +6 -0
- package/dist/esm/hooks/chat/useTotalUnreadCount.js +12 -0
- package/dist/esm/hooks/chat/useTotalUnreadCount.js.map +1 -0
- package/dist/esm/hooks/chat/useTypingIndicator.d.ts +21 -0
- package/dist/esm/hooks/chat/useTypingIndicator.js +66 -0
- package/dist/esm/hooks/chat/useTypingIndicator.js.map +1 -0
- package/dist/esm/hooks/comments/index.d.ts +1 -1
- package/dist/esm/hooks/comments/index.js.map +1 -1
- package/dist/esm/hooks/comments/useCommentSectionData.d.ts +5 -0
- package/dist/esm/hooks/comments/useCommentSectionData.js +20 -17
- package/dist/esm/hooks/comments/useCommentSectionData.js.map +1 -1
- package/dist/esm/hooks/spaces/index.d.ts +4 -0
- package/dist/esm/hooks/spaces/index.js +3 -0
- package/dist/esm/hooks/spaces/index.js.map +1 -1
- package/dist/esm/hooks/spaces/useSpaceMentions.d.ts +24 -0
- package/dist/esm/hooks/spaces/useSpaceMentions.js +186 -0
- package/dist/esm/hooks/spaces/useSpaceMentions.js.map +1 -0
- package/dist/esm/hooks/spaces/useUnbanMember.d.ts +11 -0
- package/dist/esm/hooks/spaces/useUnbanMember.js +66 -0
- package/dist/esm/hooks/spaces/useUnbanMember.js.map +1 -0
- package/dist/esm/hooks/users/index.d.ts +1 -1
- package/dist/esm/hooks/users/index.js +1 -1
- package/dist/esm/hooks/users/index.js.map +1 -1
- package/dist/esm/hooks/users/{useMentions.d.ts → useUserMentions.d.ts} +8 -4
- package/dist/esm/hooks/users/{useMentions.js → useUserMentions.js} +22 -17
- package/dist/esm/hooks/users/useUserMentions.js.map +1 -0
- package/dist/esm/index.d.ts +11 -5
- package/dist/esm/index.js +7 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interfaces/models/File.d.ts +1 -0
- package/dist/esm/interfaces/models/IChatMessage.d.ts +34 -0
- package/dist/esm/interfaces/models/IChatMessage.js +2 -0
- package/dist/esm/interfaces/models/IChatMessage.js.map +1 -0
- package/dist/esm/interfaces/models/IConversation.d.ts +25 -0
- package/dist/esm/interfaces/models/IConversation.js +2 -0
- package/dist/esm/interfaces/models/IConversation.js.map +1 -0
- package/dist/esm/interfaces/models/IConversationMember.d.ts +16 -0
- package/dist/esm/interfaces/models/IConversationMember.js +2 -0
- package/dist/esm/interfaces/models/IConversationMember.js.map +1 -0
- package/dist/esm/interfaces/models/Mention.d.ts +8 -1
- package/dist/esm/store/api/spacesApi.d.ts +364 -0
- package/dist/esm/store/api/spacesApi.js +19 -2
- package/dist/esm/store/api/spacesApi.js.map +1 -1
- package/dist/esm/store/hooks.d.ts +1 -0
- package/dist/esm/store/index.d.ts +2 -0
- package/dist/esm/store/replykeReducers.d.ts +2 -0
- package/dist/esm/store/replykeReducers.js +2 -0
- package/dist/esm/store/replykeReducers.js.map +1 -1
- package/dist/esm/store/rootReducer.d.ts +3 -0
- package/dist/esm/store/slices/chatSlice.d.ts +120 -0
- package/dist/esm/store/slices/chatSlice.js +350 -0
- package/dist/esm/store/slices/chatSlice.js.map +1 -0
- package/dist/esm/store/slices/entityListsSlice.d.ts +168 -24
- package/dist/esm/store/slices/spaceListsSlice.d.ts +24 -0
- package/dist/esm/store/slices/userSlice.d.ts +16 -0
- package/dist/esm/types/socket.d.ts +73 -0
- package/dist/esm/types/socket.js +2 -0
- package/dist/esm/types/socket.js.map +1 -0
- package/package.json +3 -2
- package/dist/cjs/hooks/users/useMentions.js.map +0 -1
- package/dist/esm/hooks/users/useMentions.js.map +0 -1
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
12
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
import { useCallback } from "react";
|
|
38
|
+
import { useReplykeDispatch } from "../../../store/hooks";
|
|
39
|
+
import { upsertMessage } from "../../../store/slices/chatSlice";
|
|
40
|
+
import useAxiosPrivate from "../../../config/useAxiosPrivate";
|
|
41
|
+
import useProject from "../../projects/useProject";
|
|
42
|
+
import { handleError } from "../../../utils/handleError";
|
|
43
|
+
function useEditMessage() {
|
|
44
|
+
var _this = this;
|
|
45
|
+
var dispatch = useReplykeDispatch();
|
|
46
|
+
var projectId = useProject().projectId;
|
|
47
|
+
var axios = useAxiosPrivate();
|
|
48
|
+
var edit = useCallback(function (_a) { return __awaiter(_this, [_a], void 0, function (_b) {
|
|
49
|
+
var response, updated, err_1;
|
|
50
|
+
var conversationId = _b.conversationId, messageId = _b.messageId, content = _b.content, gif = _b.gif, mentions = _b.mentions, metadata = _b.metadata;
|
|
51
|
+
return __generator(this, function (_c) {
|
|
52
|
+
switch (_c.label) {
|
|
53
|
+
case 0:
|
|
54
|
+
if (!projectId)
|
|
55
|
+
throw new Error("No projectId available.");
|
|
56
|
+
_c.label = 1;
|
|
57
|
+
case 1:
|
|
58
|
+
_c.trys.push([1, 3, , 4]);
|
|
59
|
+
return [4 /*yield*/, axios.patch("/".concat(projectId, "/v7/chat/conversations/").concat(conversationId, "/messages/").concat(messageId), { content: content, gif: gif, mentions: mentions, metadata: metadata })];
|
|
60
|
+
case 2:
|
|
61
|
+
response = _c.sent();
|
|
62
|
+
updated = response.data;
|
|
63
|
+
dispatch(upsertMessage(updated));
|
|
64
|
+
return [2 /*return*/, updated];
|
|
65
|
+
case 3:
|
|
66
|
+
err_1 = _c.sent();
|
|
67
|
+
handleError(err_1, "Failed to edit message");
|
|
68
|
+
throw err_1;
|
|
69
|
+
case 4: return [2 /*return*/];
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}); }, [projectId, axios, dispatch]);
|
|
73
|
+
return edit;
|
|
74
|
+
}
|
|
75
|
+
export default useEditMessage;
|
|
76
|
+
//# sourceMappingURL=useEditMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useEditMessage.js","sourceRoot":"","sources":["../../../../../src/hooks/chat/messages/useEditMessage.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAIhE,OAAO,eAAe,MAAM,iCAAiC,CAAC;AAC9D,OAAO,UAAU,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAWzD,SAAS,cAAc;IAAvB,iBAiCC;IAhCC,IAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IAC9B,IAAA,SAAS,GAAK,UAAU,EAAE,UAAjB,CAAkB;IACnC,IAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAEhC,IAAM,IAAI,GAAG,WAAW,CACtB,gEAAO,EAOa;;YANlB,cAAc,oBAAA,EACd,SAAS,eAAA,EACT,OAAO,aAAA,EACP,GAAG,SAAA,EACH,QAAQ,cAAA,EACR,QAAQ,cAAA;;;;oBAER,IAAI,CAAC,SAAS;wBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;;;;oBAGxC,qBAAM,KAAK,CAAC,KAAK,CAChC,WAAI,SAAS,oCAA0B,cAAc,uBAAa,SAAS,CAAE,EAC7E,EAAE,OAAO,SAAA,EAAE,GAAG,KAAA,EAAE,QAAQ,UAAA,EAAE,QAAQ,UAAA,EAAE,CACrC,EAAA;;oBAHK,QAAQ,GAAG,SAGhB;oBACK,OAAO,GAAG,QAAQ,CAAC,IAAoB,CAAC;oBAC9C,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;oBACjC,sBAAO,OAAO,EAAC;;;oBAEf,WAAW,CAAC,KAAG,EAAE,wBAAwB,CAAC,CAAC;oBAC3C,MAAM,KAAG,CAAC;;;;SAEb,EACD,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAC7B,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { IChatMessage } from "../../../interfaces/models/IChatMessage";
|
|
2
|
+
import { SendMessageParams } from "./useSendMessage";
|
|
3
|
+
export interface UseMessageThreadProps {
|
|
4
|
+
conversationId: string;
|
|
5
|
+
messageId: string;
|
|
6
|
+
}
|
|
7
|
+
export interface UseMessageThreadValues {
|
|
8
|
+
replies: IChatMessage[];
|
|
9
|
+
loading: boolean;
|
|
10
|
+
hasMore: boolean;
|
|
11
|
+
loadMore: () => Promise<void>;
|
|
12
|
+
sendReply: (params: Omit<SendMessageParams, "parentMessageId">) => Promise<IChatMessage>;
|
|
13
|
+
}
|
|
14
|
+
declare function useMessageThread({ conversationId, messageId, }: UseMessageThreadProps): UseMessageThreadValues;
|
|
15
|
+
export default useMessageThread;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
import useChatMessages from "./useChatMessages";
|
|
13
|
+
import useSendMessage from "./useSendMessage";
|
|
14
|
+
function useMessageThread(_a) {
|
|
15
|
+
var conversationId = _a.conversationId, messageId = _a.messageId;
|
|
16
|
+
var _b = useChatMessages({
|
|
17
|
+
conversationId: conversationId,
|
|
18
|
+
parentId: messageId,
|
|
19
|
+
}), messages = _b.messages, loading = _b.loading, hasMore = _b.hasMore, loadOlder = _b.loadOlder;
|
|
20
|
+
var send = useSendMessage({ conversationId: conversationId });
|
|
21
|
+
var sendReply = function (params) {
|
|
22
|
+
return send(__assign(__assign({}, params), { parentMessageId: messageId }));
|
|
23
|
+
};
|
|
24
|
+
return {
|
|
25
|
+
replies: messages,
|
|
26
|
+
loading: loading,
|
|
27
|
+
hasMore: hasMore,
|
|
28
|
+
loadMore: loadOlder,
|
|
29
|
+
sendReply: sendReply,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export default useMessageThread;
|
|
33
|
+
//# sourceMappingURL=useMessageThread.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMessageThread.js","sourceRoot":"","sources":["../../../../../src/hooks/chat/messages/useMessageThread.tsx"],"names":[],"mappings":";;;;;;;;;;;AACA,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,cAAqC,MAAM,kBAAkB,CAAC;AAerE,SAAS,gBAAgB,CAAC,EAGF;QAFtB,cAAc,oBAAA,EACd,SAAS,eAAA;IAEH,IAAA,KAA4C,eAAe,CAAC;QAChE,cAAc,gBAAA;QACd,QAAQ,EAAE,SAAS;KACpB,CAAC,EAHM,QAAQ,cAAA,EAAE,OAAO,aAAA,EAAE,OAAO,aAAA,EAAE,SAAS,eAG3C,CAAC;IAEH,IAAM,IAAI,GAAG,cAAc,CAAC,EAAE,cAAc,gBAAA,EAAE,CAAC,CAAC;IAEhD,IAAM,SAAS,GAAG,UAAC,MAAkD;QACnE,OAAA,IAAI,uBAAM,MAAM,KAAE,eAAe,EAAE,SAAS,IAAG;IAA/C,CAA+C,CAAC;IAElD,OAAO;QACL,OAAO,EAAE,QAAQ;QACjB,OAAO,SAAA;QACP,OAAO,SAAA;QACP,QAAQ,EAAE,SAAS;QACnB,SAAS,WAAA;KACV,CAAC;AACJ,CAAC;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { IChatMessage } from "../../../interfaces/models/IChatMessage";
|
|
2
|
+
import { GifData } from "../../../interfaces/models/Comment";
|
|
3
|
+
import { Mention } from "../../../interfaces/models/Mention";
|
|
4
|
+
export interface SendMessageParams {
|
|
5
|
+
content?: string;
|
|
6
|
+
gif?: GifData;
|
|
7
|
+
mentions?: Mention[];
|
|
8
|
+
metadata?: Record<string, any>;
|
|
9
|
+
quotedMessageId?: string | null;
|
|
10
|
+
parentMessageId?: string | null;
|
|
11
|
+
files?: File[];
|
|
12
|
+
}
|
|
13
|
+
export interface UseSendMessageProps {
|
|
14
|
+
conversationId: string;
|
|
15
|
+
}
|
|
16
|
+
declare function useSendMessage({ conversationId, }: UseSendMessageProps): (params: SendMessageParams) => Promise<IChatMessage>;
|
|
17
|
+
export default useSendMessage;
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
14
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
15
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
16
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
17
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
18
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
22
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
23
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
24
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
25
|
+
function step(op) {
|
|
26
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
27
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
28
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
29
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
30
|
+
switch (op[0]) {
|
|
31
|
+
case 0: case 1: t = op; break;
|
|
32
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
33
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
34
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
35
|
+
default:
|
|
36
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
37
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
38
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
39
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
40
|
+
if (t[2]) _.ops.pop();
|
|
41
|
+
_.trys.pop(); continue;
|
|
42
|
+
}
|
|
43
|
+
op = body.call(thisArg, _);
|
|
44
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
45
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
import { useCallback } from "react";
|
|
49
|
+
import { useReplykeDispatch, useReplykeSelector } from "../../../store/hooks";
|
|
50
|
+
import { addOptimisticMessage, upsertMessage, failOptimisticMessage, } from "../../../store/slices/chatSlice";
|
|
51
|
+
import { selectUser } from "../../../store/slices/userSlice";
|
|
52
|
+
import { selectUser as selectAuthUser } from "../../../store/slices/authSlice";
|
|
53
|
+
import useAxiosPrivate from "../../../config/useAxiosPrivate";
|
|
54
|
+
import useProject from "../../projects/useProject";
|
|
55
|
+
import { handleError } from "../../../utils/handleError";
|
|
56
|
+
function useSendMessage(_a) {
|
|
57
|
+
var _this = this;
|
|
58
|
+
var conversationId = _a.conversationId;
|
|
59
|
+
var dispatch = useReplykeDispatch();
|
|
60
|
+
var projectId = useProject().projectId;
|
|
61
|
+
var axios = useAxiosPrivate();
|
|
62
|
+
// Get current user for the optimistic message
|
|
63
|
+
var user = useReplykeSelector(selectUser);
|
|
64
|
+
var authUser = useReplykeSelector(selectAuthUser);
|
|
65
|
+
var currentUser = user || authUser;
|
|
66
|
+
var send = useCallback(function (_a) { return __awaiter(_this, [_a], void 0, function (_b) {
|
|
67
|
+
var clientId, now, optimisticMsg, response, formData_1, confirmedMsg, err_1;
|
|
68
|
+
var _c;
|
|
69
|
+
var content = _b.content, gif = _b.gif, mentions = _b.mentions, metadata = _b.metadata, quotedMessageId = _b.quotedMessageId, parentMessageId = _b.parentMessageId, files = _b.files;
|
|
70
|
+
return __generator(this, function (_d) {
|
|
71
|
+
switch (_d.label) {
|
|
72
|
+
case 0:
|
|
73
|
+
if (!projectId)
|
|
74
|
+
throw new Error("No projectId available.");
|
|
75
|
+
if (!conversationId)
|
|
76
|
+
throw new Error("No conversationId provided.");
|
|
77
|
+
clientId = crypto.randomUUID();
|
|
78
|
+
now = new Date();
|
|
79
|
+
optimisticMsg = {
|
|
80
|
+
id: "temp-".concat(clientId),
|
|
81
|
+
clientId: clientId,
|
|
82
|
+
projectId: projectId,
|
|
83
|
+
conversationId: conversationId,
|
|
84
|
+
userId: (_c = currentUser === null || currentUser === void 0 ? void 0 : currentUser.id) !== null && _c !== void 0 ? _c : null,
|
|
85
|
+
content: content !== null && content !== void 0 ? content : null,
|
|
86
|
+
gif: gif !== null && gif !== void 0 ? gif : null,
|
|
87
|
+
mentions: mentions !== null && mentions !== void 0 ? mentions : [],
|
|
88
|
+
metadata: metadata !== null && metadata !== void 0 ? metadata : {},
|
|
89
|
+
parentMessageId: parentMessageId !== null && parentMessageId !== void 0 ? parentMessageId : null,
|
|
90
|
+
quotedMessageId: quotedMessageId !== null && quotedMessageId !== void 0 ? quotedMessageId : null,
|
|
91
|
+
threadReplyCount: 0,
|
|
92
|
+
reactionCounts: {},
|
|
93
|
+
userReactions: [],
|
|
94
|
+
editedAt: null,
|
|
95
|
+
userDeletedAt: null,
|
|
96
|
+
moderationStatus: null,
|
|
97
|
+
moderatedAt: null,
|
|
98
|
+
moderatedById: null,
|
|
99
|
+
moderatedByType: null,
|
|
100
|
+
moderationReason: null,
|
|
101
|
+
createdAt: now,
|
|
102
|
+
updatedAt: now,
|
|
103
|
+
user: currentUser !== null && currentUser !== void 0 ? currentUser : null,
|
|
104
|
+
};
|
|
105
|
+
dispatch(addOptimisticMessage(optimisticMsg));
|
|
106
|
+
_d.label = 1;
|
|
107
|
+
case 1:
|
|
108
|
+
_d.trys.push([1, 6, , 7]);
|
|
109
|
+
response = void 0;
|
|
110
|
+
if (!(files && files.length > 0)) return [3 /*break*/, 3];
|
|
111
|
+
formData_1 = new FormData();
|
|
112
|
+
formData_1.append("clientId", clientId);
|
|
113
|
+
if (content)
|
|
114
|
+
formData_1.append("content", content);
|
|
115
|
+
if (gif)
|
|
116
|
+
formData_1.append("gif", JSON.stringify(gif));
|
|
117
|
+
if (mentions && mentions.length > 0)
|
|
118
|
+
formData_1.append("mentions", JSON.stringify(mentions));
|
|
119
|
+
if (metadata && Object.keys(metadata).length > 0)
|
|
120
|
+
formData_1.append("metadata", JSON.stringify(metadata));
|
|
121
|
+
if (quotedMessageId)
|
|
122
|
+
formData_1.append("quotedMessageId", quotedMessageId);
|
|
123
|
+
if (parentMessageId)
|
|
124
|
+
formData_1.append("parentMessageId", parentMessageId);
|
|
125
|
+
files.forEach(function (file) { return formData_1.append("files", file); });
|
|
126
|
+
return [4 /*yield*/, axios.post("/".concat(projectId, "/v7/chat/conversations/").concat(conversationId, "/messages"), formData_1, { headers: { "Content-Type": "multipart/form-data" } })];
|
|
127
|
+
case 2:
|
|
128
|
+
response = _d.sent();
|
|
129
|
+
return [3 /*break*/, 5];
|
|
130
|
+
case 3: return [4 /*yield*/, axios.post("/".concat(projectId, "/v7/chat/conversations/").concat(conversationId, "/messages"), __assign(__assign(__assign(__assign(__assign(__assign({ clientId: clientId }, (content !== undefined && { content: content })), (gif !== undefined && { gif: gif })), (mentions !== undefined && { mentions: mentions })), (metadata !== undefined && { metadata: metadata })), (quotedMessageId !== undefined && { quotedMessageId: quotedMessageId })), (parentMessageId !== undefined && { parentMessageId: parentMessageId })))];
|
|
131
|
+
case 4:
|
|
132
|
+
// JSON body for text/gif-only messages
|
|
133
|
+
response = _d.sent();
|
|
134
|
+
_d.label = 5;
|
|
135
|
+
case 5:
|
|
136
|
+
confirmedMsg = response.data;
|
|
137
|
+
dispatch(upsertMessage(confirmedMsg));
|
|
138
|
+
return [2 /*return*/, confirmedMsg];
|
|
139
|
+
case 6:
|
|
140
|
+
err_1 = _d.sent();
|
|
141
|
+
dispatch(failOptimisticMessage({ conversationId: conversationId, clientId: clientId }));
|
|
142
|
+
handleError(err_1, "Failed to send message");
|
|
143
|
+
throw err_1;
|
|
144
|
+
case 7: return [2 /*return*/];
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}); }, [projectId, conversationId, currentUser, axios, dispatch]);
|
|
148
|
+
return send;
|
|
149
|
+
}
|
|
150
|
+
export default useSendMessage;
|
|
151
|
+
//# sourceMappingURL=useSendMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSendMessage.js","sourceRoot":"","sources":["../../../../../src/hooks/chat/messages/useSendMessage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface ToggleReactionParams {
|
|
2
|
+
conversationId: string;
|
|
3
|
+
messageId: string;
|
|
4
|
+
emoji: string;
|
|
5
|
+
}
|
|
6
|
+
export interface ToggleReactionResult {
|
|
7
|
+
reactionCounts: Record<string, number>;
|
|
8
|
+
userReactions: string[];
|
|
9
|
+
}
|
|
10
|
+
declare function useToggleReaction(): (params: ToggleReactionParams) => Promise<ToggleReactionResult>;
|
|
11
|
+
export default useToggleReaction;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
12
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
import { useCallback } from "react";
|
|
38
|
+
import { useReplykeDispatch, useReplykeSelector } from "../../../store/hooks";
|
|
39
|
+
import { updateReactions } from "../../../store/slices/chatSlice";
|
|
40
|
+
import { selectUser } from "../../../store/slices/userSlice";
|
|
41
|
+
import { selectUser as selectAuthUser } from "../../../store/slices/authSlice";
|
|
42
|
+
import useAxiosPrivate from "../../../config/useAxiosPrivate";
|
|
43
|
+
import useProject from "../../projects/useProject";
|
|
44
|
+
import { handleError } from "../../../utils/handleError";
|
|
45
|
+
function useToggleReaction() {
|
|
46
|
+
var _this = this;
|
|
47
|
+
var _a, _b;
|
|
48
|
+
var dispatch = useReplykeDispatch();
|
|
49
|
+
var projectId = useProject().projectId;
|
|
50
|
+
var axios = useAxiosPrivate();
|
|
51
|
+
var user = useReplykeSelector(selectUser);
|
|
52
|
+
var authUser = useReplykeSelector(selectAuthUser);
|
|
53
|
+
var currentUserId = (_b = (_a = (user || authUser)) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : "";
|
|
54
|
+
var toggle = useCallback(function (_a) { return __awaiter(_this, [_a], void 0, function (_b) {
|
|
55
|
+
var response, _c, reactionCounts, userReactions, delta, err_1;
|
|
56
|
+
var conversationId = _b.conversationId, messageId = _b.messageId, emoji = _b.emoji;
|
|
57
|
+
return __generator(this, function (_d) {
|
|
58
|
+
switch (_d.label) {
|
|
59
|
+
case 0:
|
|
60
|
+
if (!projectId)
|
|
61
|
+
throw new Error("No projectId available.");
|
|
62
|
+
_d.label = 1;
|
|
63
|
+
case 1:
|
|
64
|
+
_d.trys.push([1, 3, , 4]);
|
|
65
|
+
return [4 /*yield*/, axios.post("/".concat(projectId, "/v7/chat/conversations/").concat(conversationId, "/messages/").concat(messageId, "/reactions"), { emoji: emoji })];
|
|
66
|
+
case 2:
|
|
67
|
+
response = _d.sent();
|
|
68
|
+
_c = response.data, reactionCounts = _c.reactionCounts, userReactions = _c.userReactions, delta = _c.delta;
|
|
69
|
+
dispatch(updateReactions({
|
|
70
|
+
conversationId: conversationId,
|
|
71
|
+
messageId: messageId,
|
|
72
|
+
reactionCounts: reactionCounts,
|
|
73
|
+
userId: currentUserId,
|
|
74
|
+
emoji: emoji,
|
|
75
|
+
delta: delta,
|
|
76
|
+
currentUserId: currentUserId,
|
|
77
|
+
}));
|
|
78
|
+
return [2 /*return*/, { reactionCounts: reactionCounts, userReactions: userReactions }];
|
|
79
|
+
case 3:
|
|
80
|
+
err_1 = _d.sent();
|
|
81
|
+
handleError(err_1, "Failed to toggle reaction");
|
|
82
|
+
throw err_1;
|
|
83
|
+
case 4: return [2 /*return*/];
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}); }, [projectId, currentUserId, axios, dispatch]);
|
|
87
|
+
return toggle;
|
|
88
|
+
}
|
|
89
|
+
export default useToggleReaction;
|
|
90
|
+
//# sourceMappingURL=useToggleReaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useToggleReaction.js","sourceRoot":"","sources":["../../../../../src/hooks/chat/messages/useToggleReaction.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,eAAe,MAAM,iCAAiC,CAAC;AAC9D,OAAO,UAAU,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAazD,SAAS,iBAAiB;IAA1B,iBAoDC;;IAjDC,IAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IAC9B,IAAA,SAAS,GAAK,UAAU,EAAE,UAAjB,CAAkB;IACnC,IAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAEhC,IAAM,IAAI,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAM,QAAQ,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;IACpD,IAAM,aAAa,GAAG,MAAA,MAAA,CAAC,IAAI,IAAI,QAAQ,CAAC,0CAAE,EAAE,mCAAI,EAAE,CAAC;IAEnD,IAAM,MAAM,GAAG,WAAW,CACxB,gEAAO,EAIgB;;YAHrB,cAAc,oBAAA,EACd,SAAS,eAAA,EACT,KAAK,WAAA;;;;oBAEL,IAAI,CAAC,SAAS;wBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;;;;oBAGxC,qBAAM,KAAK,CAAC,IAAI,CAC/B,WAAI,SAAS,oCAA0B,cAAc,uBAAa,SAAS,eAAY,EACvF,EAAE,KAAK,OAAA,EAAE,CACV,EAAA;;oBAHK,QAAQ,GAAG,SAGhB;oBACK,KAA2C,QAAQ,CAAC,IAIzD,EAJO,cAAc,oBAAA,EAAE,aAAa,mBAAA,EAAE,KAAK,WAAA,CAI1C;oBAEF,QAAQ,CACN,eAAe,CAAC;wBACd,cAAc,gBAAA;wBACd,SAAS,WAAA;wBACT,cAAc,gBAAA;wBACd,MAAM,EAAE,aAAa;wBACrB,KAAK,OAAA;wBACL,KAAK,OAAA;wBACL,aAAa,eAAA;qBACd,CAAC,CACH,CAAC;oBAEF,sBAAO,EAAE,cAAc,gBAAA,EAAE,aAAa,eAAA,EAAE,EAAC;;;oBAEzC,WAAW,CAAC,KAAG,EAAE,2BAA2B,CAAC,CAAC;oBAC9C,MAAM,KAAG,CAAC;;;;SAEb,EACD,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,CAAC,CAC5C,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ChatContextValue } from "../../context/chat-context";
|
|
2
|
+
export interface UseChatSocketValues {
|
|
3
|
+
socket: ChatContextValue["socket"];
|
|
4
|
+
connected: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Access the shared Socket.io socket instance and its connection state.
|
|
8
|
+
* Must be used inside a ChatProvider.
|
|
9
|
+
*/
|
|
10
|
+
declare function useChatSocket(): UseChatSocketValues;
|
|
11
|
+
export default useChatSocket;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { useChatContext } from "../../context/chat-context";
|
|
2
|
+
/**
|
|
3
|
+
* Access the shared Socket.io socket instance and its connection state.
|
|
4
|
+
* Must be used inside a ChatProvider.
|
|
5
|
+
*/
|
|
6
|
+
function useChatSocket() {
|
|
7
|
+
var _a = useChatContext(), socket = _a.socket, connected = _a.connected;
|
|
8
|
+
return { socket: socket, connected: connected };
|
|
9
|
+
}
|
|
10
|
+
export default useChatSocket;
|
|
11
|
+
//# sourceMappingURL=useChatSocket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useChatSocket.js","sourceRoot":"","sources":["../../../../src/hooks/chat/useChatSocket.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAQ5D;;;GAGG;AACH,SAAS,aAAa;IACd,IAAA,KAAwB,cAAc,EAAE,EAAtC,MAAM,YAAA,EAAE,SAAS,eAAqB,CAAC;IAC/C,OAAO,EAAE,MAAM,QAAA,EAAE,SAAS,WAAA,EAAE,CAAC;AAC/B,CAAC;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { SendMessageParams } from "./messages/useSendMessage";
|
|
2
|
+
import { UseConversationMembersValues } from "./conversations/useConversationMembers";
|
|
3
|
+
import { IChatMessage } from "../../interfaces/models/IChatMessage";
|
|
4
|
+
export interface UseConversationDataProps {
|
|
5
|
+
conversationId: string;
|
|
6
|
+
}
|
|
7
|
+
export interface UseConversationDataValues {
|
|
8
|
+
messages: IChatMessage[];
|
|
9
|
+
messagesLoading: boolean;
|
|
10
|
+
hasMore: boolean;
|
|
11
|
+
loadOlder: () => Promise<void>;
|
|
12
|
+
send: (params: SendMessageParams) => Promise<IChatMessage>;
|
|
13
|
+
members: UseConversationMembersValues["members"];
|
|
14
|
+
membersLoading: UseConversationMembersValues["loading"];
|
|
15
|
+
addMember: UseConversationMembersValues["addMember"];
|
|
16
|
+
removeMember: UseConversationMembersValues["removeMember"];
|
|
17
|
+
leave: UseConversationMembersValues["leave"];
|
|
18
|
+
changeRole: UseConversationMembersValues["changeRole"];
|
|
19
|
+
upsertMember: UseConversationMembersValues["upsertMember"];
|
|
20
|
+
removeMemberLocally: UseConversationMembersValues["removeMemberLocally"];
|
|
21
|
+
mark: (messageId: string) => Promise<void>;
|
|
22
|
+
typingUsers: string[];
|
|
23
|
+
startTyping: () => void;
|
|
24
|
+
stopTyping: () => void;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* High-level composition hook that powers ConversationProvider.
|
|
28
|
+
* Combines messages, send, members, read-state, and typing indicators into one object.
|
|
29
|
+
*/
|
|
30
|
+
declare function useConversationData({ conversationId, }: UseConversationDataProps): UseConversationDataValues;
|
|
31
|
+
export default useConversationData;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import useChatMessages from "./messages/useChatMessages";
|
|
2
|
+
import useSendMessage from "./messages/useSendMessage";
|
|
3
|
+
import useConversationMembers from "./conversations/useConversationMembers";
|
|
4
|
+
import useMarkConversationAsRead from "./useMarkConversationAsRead";
|
|
5
|
+
import useTypingIndicator from "./useTypingIndicator";
|
|
6
|
+
/**
|
|
7
|
+
* High-level composition hook that powers ConversationProvider.
|
|
8
|
+
* Combines messages, send, members, read-state, and typing indicators into one object.
|
|
9
|
+
*/
|
|
10
|
+
function useConversationData(_a) {
|
|
11
|
+
var conversationId = _a.conversationId;
|
|
12
|
+
var _b = useChatMessages({
|
|
13
|
+
conversationId: conversationId,
|
|
14
|
+
}), messages = _b.messages, messagesLoading = _b.loading, hasMore = _b.hasMore, loadOlder = _b.loadOlder;
|
|
15
|
+
var send = useSendMessage({ conversationId: conversationId });
|
|
16
|
+
var _c = useConversationMembers({ conversationId: conversationId }), members = _c.members, membersLoading = _c.loading, addMember = _c.addMember, removeMember = _c.removeMember, leave = _c.leave, changeRole = _c.changeRole, upsertMember = _c.upsertMember, removeMemberLocally = _c.removeMemberLocally;
|
|
17
|
+
var mark = useMarkConversationAsRead({ conversationId: conversationId });
|
|
18
|
+
var _d = useTypingIndicator({
|
|
19
|
+
conversationId: conversationId,
|
|
20
|
+
}), typingUsers = _d.typingUsers, startTyping = _d.startTyping, stopTyping = _d.stopTyping;
|
|
21
|
+
return {
|
|
22
|
+
messages: messages,
|
|
23
|
+
messagesLoading: messagesLoading,
|
|
24
|
+
hasMore: hasMore,
|
|
25
|
+
loadOlder: loadOlder,
|
|
26
|
+
send: send,
|
|
27
|
+
members: members,
|
|
28
|
+
membersLoading: membersLoading,
|
|
29
|
+
addMember: addMember,
|
|
30
|
+
removeMember: removeMember,
|
|
31
|
+
leave: leave,
|
|
32
|
+
changeRole: changeRole,
|
|
33
|
+
upsertMember: upsertMember,
|
|
34
|
+
removeMemberLocally: removeMemberLocally,
|
|
35
|
+
mark: mark,
|
|
36
|
+
typingUsers: typingUsers,
|
|
37
|
+
startTyping: startTyping,
|
|
38
|
+
stopTyping: stopTyping,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export default useConversationData;
|
|
42
|
+
//# sourceMappingURL=useConversationData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useConversationData.js","sourceRoot":"","sources":["../../../../src/hooks/chat/useConversationData.tsx"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,4BAA4B,CAAC;AACzD,OAAO,cAAc,MAAM,2BAA2B,CAAC;AAEvD,OAAO,sBAEN,MAAM,wCAAwC,CAAC;AAChD,OAAO,yBAAyB,MAAM,6BAA6B,CAAC;AACpE,OAAO,kBAAkB,MAAM,sBAAsB,CAAC;AAoCtD;;;GAGG;AACH,SAAS,mBAAmB,CAAC,EAEF;QADzB,cAAc,oBAAA;IAER,IAAA,KAA6D,eAAe,CAAC;QACjF,cAAc,gBAAA;KACf,CAAC,EAFM,QAAQ,cAAA,EAAW,eAAe,aAAA,EAAE,OAAO,aAAA,EAAE,SAAS,eAE5D,CAAC;IAEH,IAAM,IAAI,GAAG,cAAc,CAAC,EAAE,cAAc,gBAAA,EAAE,CAAC,CAAC;IAE1C,IAAA,KASF,sBAAsB,CAAC,EAAE,cAAc,gBAAA,EAAE,CAAC,EAR5C,OAAO,aAAA,EACE,cAAc,aAAA,EACvB,SAAS,eAAA,EACT,YAAY,kBAAA,EACZ,KAAK,WAAA,EACL,UAAU,gBAAA,EACV,YAAY,kBAAA,EACZ,mBAAmB,yBACyB,CAAC;IAE/C,IAAM,IAAI,GAAG,yBAAyB,CAAC,EAAE,cAAc,gBAAA,EAAE,CAAC,CAAC;IAErD,IAAA,KAA2C,kBAAkB,CAAC;QAClE,cAAc,gBAAA;KACf,CAAC,EAFM,WAAW,iBAAA,EAAE,WAAW,iBAAA,EAAE,UAAU,gBAE1C,CAAC;IAEH,OAAO;QACL,QAAQ,UAAA;QACR,eAAe,iBAAA;QACf,OAAO,SAAA;QACP,SAAS,WAAA;QACT,IAAI,MAAA;QACJ,OAAO,SAAA;QACP,cAAc,gBAAA;QACd,SAAS,WAAA;QACT,YAAY,cAAA;QACZ,KAAK,OAAA;QACL,UAAU,YAAA;QACV,YAAY,cAAA;QACZ,mBAAmB,qBAAA;QACnB,IAAI,MAAA;QACJ,WAAW,aAAA;QACX,WAAW,aAAA;QACX,UAAU,YAAA;KACX,CAAC;AACJ,CAAC;AAED,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface UseMarkConversationAsReadProps {
|
|
2
|
+
conversationId: string;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Internal hook — called by ConversationProvider, not intended for direct use.
|
|
6
|
+
* Advances the server-side lastReadAt to the given message's createdAt and
|
|
7
|
+
* resets the local unread count to 0 immediately (optimistic clear).
|
|
8
|
+
*/
|
|
9
|
+
declare function useMarkConversationAsRead({ conversationId, }: UseMarkConversationAsReadProps): (messageId: string) => Promise<void>;
|
|
10
|
+
export default useMarkConversationAsRead;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
12
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
import { useCallback } from "react";
|
|
38
|
+
import { useReplykeDispatch } from "../../store/hooks";
|
|
39
|
+
import { clearUnread } from "../../store/slices/chatSlice";
|
|
40
|
+
import useAxiosPrivate from "../../config/useAxiosPrivate";
|
|
41
|
+
import useProject from "../projects/useProject";
|
|
42
|
+
import { handleError } from "../../utils/handleError";
|
|
43
|
+
/**
|
|
44
|
+
* Internal hook — called by ConversationProvider, not intended for direct use.
|
|
45
|
+
* Advances the server-side lastReadAt to the given message's createdAt and
|
|
46
|
+
* resets the local unread count to 0 immediately (optimistic clear).
|
|
47
|
+
*/
|
|
48
|
+
function useMarkConversationAsRead(_a) {
|
|
49
|
+
var _this = this;
|
|
50
|
+
var conversationId = _a.conversationId;
|
|
51
|
+
var dispatch = useReplykeDispatch();
|
|
52
|
+
var projectId = useProject().projectId;
|
|
53
|
+
var axios = useAxiosPrivate();
|
|
54
|
+
var mark = useCallback(function (messageId) { return __awaiter(_this, void 0, void 0, function () {
|
|
55
|
+
var err_1;
|
|
56
|
+
return __generator(this, function (_a) {
|
|
57
|
+
switch (_a.label) {
|
|
58
|
+
case 0:
|
|
59
|
+
if (!projectId || !conversationId || !messageId)
|
|
60
|
+
return [2 /*return*/];
|
|
61
|
+
// Clear unread count locally for immediate UI update
|
|
62
|
+
dispatch(clearUnread(conversationId));
|
|
63
|
+
_a.label = 1;
|
|
64
|
+
case 1:
|
|
65
|
+
_a.trys.push([1, 3, , 4]);
|
|
66
|
+
return [4 /*yield*/, axios.post("/".concat(projectId, "/v7/chat/conversations/").concat(conversationId, "/read"), { messageId: messageId })];
|
|
67
|
+
case 2:
|
|
68
|
+
_a.sent();
|
|
69
|
+
return [3 /*break*/, 4];
|
|
70
|
+
case 3:
|
|
71
|
+
err_1 = _a.sent();
|
|
72
|
+
// Non-critical — don't re-throw; the local clear still stands
|
|
73
|
+
handleError(err_1, "Failed to mark conversation as read");
|
|
74
|
+
return [3 /*break*/, 4];
|
|
75
|
+
case 4: return [2 /*return*/];
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}); }, [projectId, conversationId, axios, dispatch]);
|
|
79
|
+
return mark;
|
|
80
|
+
}
|
|
81
|
+
export default useMarkConversationAsRead;
|
|
82
|
+
//# sourceMappingURL=useMarkConversationAsRead.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMarkConversationAsRead.js","sourceRoot":"","sources":["../../../../src/hooks/chat/useMarkConversationAsRead.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,eAAe,MAAM,8BAA8B,CAAC;AAC3D,OAAO,UAAU,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAMtD;;;;GAIG;AACH,SAAS,yBAAyB,CAAC,EAEF;IAFjC,iBA4BC;QA3BC,cAAc,oBAAA;IAEd,IAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;IAC9B,IAAA,SAAS,GAAK,UAAU,EAAE,UAAjB,CAAkB;IACnC,IAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAEhC,IAAM,IAAI,GAAG,WAAW,CACtB,UAAO,SAAiB;;;;;oBACtB,IAAI,CAAC,SAAS,IAAI,CAAC,cAAc,IAAI,CAAC,SAAS;wBAAE,sBAAO;oBAExD,qDAAqD;oBACrD,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC;;;;oBAGpC,qBAAM,KAAK,CAAC,IAAI,CACd,WAAI,SAAS,oCAA0B,cAAc,UAAO,EAC5D,EAAE,SAAS,WAAA,EAAE,CACd,EAAA;;oBAHD,SAGC,CAAC;;;;oBAEF,8DAA8D;oBAC9D,WAAW,CAAC,KAAG,EAAE,qCAAqC,CAAC,CAAC;;;;;SAE3D,EACD,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC,CAC7C,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,eAAe,yBAAyB,CAAC"}
|