@replyke/core 7.0.0-beta.100 → 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.
Files changed (257) hide show
  1. package/dist/cjs/config/axios.d.ts +1 -0
  2. package/dist/cjs/config/axios.js +4 -4
  3. package/dist/cjs/config/axios.js.map +1 -1
  4. package/dist/cjs/context/chat-context.d.ts +17 -0
  5. package/dist/cjs/context/chat-context.js +299 -0
  6. package/dist/cjs/context/chat-context.js.map +1 -0
  7. package/dist/cjs/context/conversation-context.d.ts +14 -0
  8. package/dist/cjs/context/conversation-context.js +231 -0
  9. package/dist/cjs/context/conversation-context.js.map +1 -0
  10. package/dist/cjs/context/index.d.ts +3 -0
  11. package/dist/cjs/context/index.js +13 -1
  12. package/dist/cjs/context/index.js.map +1 -1
  13. package/dist/cjs/context/message-thread-context.d.ts +13 -0
  14. package/dist/cjs/context/message-thread-context.js +32 -0
  15. package/dist/cjs/context/message-thread-context.js.map +1 -0
  16. package/dist/cjs/hooks/chat/conversations/index.d.ts +10 -0
  17. package/dist/cjs/hooks/chat/conversations/index.js +17 -0
  18. package/dist/cjs/hooks/chat/conversations/index.js.map +1 -0
  19. package/dist/cjs/hooks/chat/conversations/useConversation.d.ts +18 -0
  20. package/dist/cjs/hooks/chat/conversations/useConversation.js +134 -0
  21. package/dist/cjs/hooks/chat/conversations/useConversation.js.map +1 -0
  22. package/dist/cjs/hooks/chat/conversations/useConversationMembers.d.ts +18 -0
  23. package/dist/cjs/hooks/chat/conversations/useConversationMembers.js +219 -0
  24. package/dist/cjs/hooks/chat/conversations/useConversationMembers.js.map +1 -0
  25. package/dist/cjs/hooks/chat/conversations/useConversations.d.ts +17 -0
  26. package/dist/cjs/hooks/chat/conversations/useConversations.js +193 -0
  27. package/dist/cjs/hooks/chat/conversations/useConversations.js.map +1 -0
  28. package/dist/cjs/hooks/chat/conversations/useCreateDirectConversation.d.ts +6 -0
  29. package/dist/cjs/hooks/chat/conversations/useCreateDirectConversation.js +83 -0
  30. package/dist/cjs/hooks/chat/conversations/useCreateDirectConversation.js.map +1 -0
  31. package/dist/cjs/hooks/chat/conversations/useSpaceConversation.d.ts +10 -0
  32. package/dist/cjs/hooks/chat/conversations/useSpaceConversation.js +91 -0
  33. package/dist/cjs/hooks/chat/conversations/useSpaceConversation.js.map +1 -0
  34. package/dist/cjs/hooks/chat/index.d.ts +15 -0
  35. package/dist/cjs/hooks/chat/index.js +36 -0
  36. package/dist/cjs/hooks/chat/index.js.map +1 -0
  37. package/dist/cjs/hooks/chat/messages/index.d.ts +12 -0
  38. package/dist/cjs/hooks/chat/messages/index.js +19 -0
  39. package/dist/cjs/hooks/chat/messages/index.js.map +1 -0
  40. package/dist/cjs/hooks/chat/messages/useChatMessages.d.ts +15 -0
  41. package/dist/cjs/hooks/chat/messages/useChatMessages.js +228 -0
  42. package/dist/cjs/hooks/chat/messages/useChatMessages.js.map +1 -0
  43. package/dist/cjs/hooks/chat/messages/useDeleteMessage.d.ts +6 -0
  44. package/dist/cjs/hooks/chat/messages/useDeleteMessage.js +81 -0
  45. package/dist/cjs/hooks/chat/messages/useDeleteMessage.js.map +1 -0
  46. package/dist/cjs/hooks/chat/messages/useEditMessage.d.ts +13 -0
  47. package/dist/cjs/hooks/chat/messages/useEditMessage.js +81 -0
  48. package/dist/cjs/hooks/chat/messages/useEditMessage.js.map +1 -0
  49. package/dist/cjs/hooks/chat/messages/useMessageThread.d.ts +15 -0
  50. package/dist/cjs/hooks/chat/messages/useMessageThread.js +38 -0
  51. package/dist/cjs/hooks/chat/messages/useMessageThread.js.map +1 -0
  52. package/dist/cjs/hooks/chat/messages/useSendMessage.d.ts +17 -0
  53. package/dist/cjs/hooks/chat/messages/useSendMessage.js +156 -0
  54. package/dist/cjs/hooks/chat/messages/useSendMessage.js.map +1 -0
  55. package/dist/cjs/hooks/chat/messages/useToggleReaction.d.ts +11 -0
  56. package/dist/cjs/hooks/chat/messages/useToggleReaction.js +95 -0
  57. package/dist/cjs/hooks/chat/messages/useToggleReaction.js.map +1 -0
  58. package/dist/cjs/hooks/chat/useChatSocket.d.ts +11 -0
  59. package/dist/cjs/hooks/chat/useChatSocket.js +13 -0
  60. package/dist/cjs/hooks/chat/useChatSocket.js.map +1 -0
  61. package/dist/cjs/hooks/chat/useConversationData.d.ts +31 -0
  62. package/dist/cjs/hooks/chat/useConversationData.js +47 -0
  63. package/dist/cjs/hooks/chat/useConversationData.js.map +1 -0
  64. package/dist/cjs/hooks/chat/useMarkConversationAsRead.d.ts +10 -0
  65. package/dist/cjs/hooks/chat/useMarkConversationAsRead.js +87 -0
  66. package/dist/cjs/hooks/chat/useMarkConversationAsRead.js.map +1 -0
  67. package/dist/cjs/hooks/chat/useReportMessage.d.ts +8 -0
  68. package/dist/cjs/hooks/chat/useReportMessage.js +76 -0
  69. package/dist/cjs/hooks/chat/useReportMessage.js.map +1 -0
  70. package/dist/cjs/hooks/chat/useTotalUnreadCount.d.ts +6 -0
  71. package/dist/cjs/hooks/chat/useTotalUnreadCount.js +14 -0
  72. package/dist/cjs/hooks/chat/useTotalUnreadCount.js.map +1 -0
  73. package/dist/cjs/hooks/chat/useTypingIndicator.d.ts +21 -0
  74. package/dist/cjs/hooks/chat/useTypingIndicator.js +68 -0
  75. package/dist/cjs/hooks/chat/useTypingIndicator.js.map +1 -0
  76. package/dist/cjs/hooks/comments/index.d.ts +1 -1
  77. package/dist/cjs/hooks/comments/index.js.map +1 -1
  78. package/dist/cjs/hooks/comments/useCommentSectionData.d.ts +7 -0
  79. package/dist/cjs/hooks/comments/useCommentSectionData.js +62 -38
  80. package/dist/cjs/hooks/comments/useCommentSectionData.js.map +1 -1
  81. package/dist/cjs/hooks/spaces/index.d.ts +4 -0
  82. package/dist/cjs/hooks/spaces/index.js +6 -1
  83. package/dist/cjs/hooks/spaces/index.js.map +1 -1
  84. package/dist/cjs/hooks/spaces/useSpaceMentions.d.ts +24 -0
  85. package/dist/cjs/hooks/spaces/useSpaceMentions.js +191 -0
  86. package/dist/cjs/hooks/spaces/useSpaceMentions.js.map +1 -0
  87. package/dist/cjs/hooks/spaces/useUnbanMember.d.ts +11 -0
  88. package/dist/cjs/hooks/spaces/useUnbanMember.js +71 -0
  89. package/dist/cjs/hooks/spaces/useUnbanMember.js.map +1 -0
  90. package/dist/cjs/hooks/users/index.d.ts +1 -1
  91. package/dist/cjs/hooks/users/index.js +3 -3
  92. package/dist/cjs/hooks/users/index.js.map +1 -1
  93. package/dist/cjs/hooks/users/{useMentions.d.ts → useUserMentions.d.ts} +8 -4
  94. package/dist/cjs/hooks/users/{useMentions.js → useUserMentions.js} +22 -17
  95. package/dist/cjs/hooks/users/useUserMentions.js.map +1 -0
  96. package/dist/cjs/index.d.ts +11 -5
  97. package/dist/cjs/index.js +70 -5
  98. package/dist/cjs/index.js.map +1 -1
  99. package/dist/cjs/interfaces/models/File.d.ts +1 -0
  100. package/dist/cjs/interfaces/models/IChatMessage.d.ts +34 -0
  101. package/dist/cjs/interfaces/models/IChatMessage.js +3 -0
  102. package/dist/cjs/interfaces/models/IChatMessage.js.map +1 -0
  103. package/dist/cjs/interfaces/models/IConversation.d.ts +25 -0
  104. package/dist/cjs/interfaces/models/IConversation.js +3 -0
  105. package/dist/cjs/interfaces/models/IConversation.js.map +1 -0
  106. package/dist/cjs/interfaces/models/IConversationMember.d.ts +16 -0
  107. package/dist/cjs/interfaces/models/IConversationMember.js +3 -0
  108. package/dist/cjs/interfaces/models/IConversationMember.js.map +1 -0
  109. package/dist/cjs/interfaces/models/Mention.d.ts +8 -1
  110. package/dist/cjs/store/api/spacesApi.d.ts +364 -0
  111. package/dist/cjs/store/api/spacesApi.js +20 -3
  112. package/dist/cjs/store/api/spacesApi.js.map +1 -1
  113. package/dist/cjs/store/hooks.d.ts +1 -0
  114. package/dist/cjs/store/index.d.ts +2 -0
  115. package/dist/cjs/store/replykeReducers.d.ts +2 -0
  116. package/dist/cjs/store/replykeReducers.js +2 -0
  117. package/dist/cjs/store/replykeReducers.js.map +1 -1
  118. package/dist/cjs/store/rootReducer.d.ts +3 -0
  119. package/dist/cjs/store/slices/chatSlice.d.ts +120 -0
  120. package/dist/cjs/store/slices/chatSlice.js +369 -0
  121. package/dist/cjs/store/slices/chatSlice.js.map +1 -0
  122. package/dist/cjs/store/slices/entityListsSlice.d.ts +168 -24
  123. package/dist/cjs/store/slices/spaceListsSlice.d.ts +24 -0
  124. package/dist/cjs/store/slices/userSlice.d.ts +16 -0
  125. package/dist/cjs/types/socket.d.ts +73 -0
  126. package/dist/cjs/types/socket.js +3 -0
  127. package/dist/cjs/types/socket.js.map +1 -0
  128. package/dist/esm/config/axios.d.ts +1 -0
  129. package/dist/esm/config/axios.js +1 -1
  130. package/dist/esm/config/axios.js.map +1 -1
  131. package/dist/esm/context/chat-context.d.ts +17 -0
  132. package/dist/esm/context/chat-context.js +291 -0
  133. package/dist/esm/context/chat-context.js.map +1 -0
  134. package/dist/esm/context/conversation-context.d.ts +14 -0
  135. package/dist/esm/context/conversation-context.js +223 -0
  136. package/dist/esm/context/conversation-context.js.map +1 -0
  137. package/dist/esm/context/index.d.ts +3 -0
  138. package/dist/esm/context/index.js +3 -0
  139. package/dist/esm/context/index.js.map +1 -1
  140. package/dist/esm/context/message-thread-context.d.ts +13 -0
  141. package/dist/esm/context/message-thread-context.js +24 -0
  142. package/dist/esm/context/message-thread-context.js.map +1 -0
  143. package/dist/esm/hooks/chat/conversations/index.d.ts +10 -0
  144. package/dist/esm/hooks/chat/conversations/index.js +6 -0
  145. package/dist/esm/hooks/chat/conversations/index.js.map +1 -0
  146. package/dist/esm/hooks/chat/conversations/useConversation.d.ts +18 -0
  147. package/dist/esm/hooks/chat/conversations/useConversation.js +129 -0
  148. package/dist/esm/hooks/chat/conversations/useConversation.js.map +1 -0
  149. package/dist/esm/hooks/chat/conversations/useConversationMembers.d.ts +18 -0
  150. package/dist/esm/hooks/chat/conversations/useConversationMembers.js +214 -0
  151. package/dist/esm/hooks/chat/conversations/useConversationMembers.js.map +1 -0
  152. package/dist/esm/hooks/chat/conversations/useConversations.d.ts +17 -0
  153. package/dist/esm/hooks/chat/conversations/useConversations.js +188 -0
  154. package/dist/esm/hooks/chat/conversations/useConversations.js.map +1 -0
  155. package/dist/esm/hooks/chat/conversations/useCreateDirectConversation.d.ts +6 -0
  156. package/dist/esm/hooks/chat/conversations/useCreateDirectConversation.js +78 -0
  157. package/dist/esm/hooks/chat/conversations/useCreateDirectConversation.js.map +1 -0
  158. package/dist/esm/hooks/chat/conversations/useSpaceConversation.d.ts +10 -0
  159. package/dist/esm/hooks/chat/conversations/useSpaceConversation.js +86 -0
  160. package/dist/esm/hooks/chat/conversations/useSpaceConversation.js.map +1 -0
  161. package/dist/esm/hooks/chat/index.d.ts +15 -0
  162. package/dist/esm/hooks/chat/index.js +13 -0
  163. package/dist/esm/hooks/chat/index.js.map +1 -0
  164. package/dist/esm/hooks/chat/messages/index.d.ts +12 -0
  165. package/dist/esm/hooks/chat/messages/index.js +7 -0
  166. package/dist/esm/hooks/chat/messages/index.js.map +1 -0
  167. package/dist/esm/hooks/chat/messages/useChatMessages.d.ts +15 -0
  168. package/dist/esm/hooks/chat/messages/useChatMessages.js +223 -0
  169. package/dist/esm/hooks/chat/messages/useChatMessages.js.map +1 -0
  170. package/dist/esm/hooks/chat/messages/useDeleteMessage.d.ts +6 -0
  171. package/dist/esm/hooks/chat/messages/useDeleteMessage.js +76 -0
  172. package/dist/esm/hooks/chat/messages/useDeleteMessage.js.map +1 -0
  173. package/dist/esm/hooks/chat/messages/useEditMessage.d.ts +13 -0
  174. package/dist/esm/hooks/chat/messages/useEditMessage.js +76 -0
  175. package/dist/esm/hooks/chat/messages/useEditMessage.js.map +1 -0
  176. package/dist/esm/hooks/chat/messages/useMessageThread.d.ts +15 -0
  177. package/dist/esm/hooks/chat/messages/useMessageThread.js +33 -0
  178. package/dist/esm/hooks/chat/messages/useMessageThread.js.map +1 -0
  179. package/dist/esm/hooks/chat/messages/useSendMessage.d.ts +17 -0
  180. package/dist/esm/hooks/chat/messages/useSendMessage.js +151 -0
  181. package/dist/esm/hooks/chat/messages/useSendMessage.js.map +1 -0
  182. package/dist/esm/hooks/chat/messages/useToggleReaction.d.ts +11 -0
  183. package/dist/esm/hooks/chat/messages/useToggleReaction.js +90 -0
  184. package/dist/esm/hooks/chat/messages/useToggleReaction.js.map +1 -0
  185. package/dist/esm/hooks/chat/useChatSocket.d.ts +11 -0
  186. package/dist/esm/hooks/chat/useChatSocket.js +11 -0
  187. package/dist/esm/hooks/chat/useChatSocket.js.map +1 -0
  188. package/dist/esm/hooks/chat/useConversationData.d.ts +31 -0
  189. package/dist/esm/hooks/chat/useConversationData.js +42 -0
  190. package/dist/esm/hooks/chat/useConversationData.js.map +1 -0
  191. package/dist/esm/hooks/chat/useMarkConversationAsRead.d.ts +10 -0
  192. package/dist/esm/hooks/chat/useMarkConversationAsRead.js +82 -0
  193. package/dist/esm/hooks/chat/useMarkConversationAsRead.js.map +1 -0
  194. package/dist/esm/hooks/chat/useReportMessage.d.ts +8 -0
  195. package/dist/esm/hooks/chat/useReportMessage.js +71 -0
  196. package/dist/esm/hooks/chat/useReportMessage.js.map +1 -0
  197. package/dist/esm/hooks/chat/useTotalUnreadCount.d.ts +6 -0
  198. package/dist/esm/hooks/chat/useTotalUnreadCount.js +12 -0
  199. package/dist/esm/hooks/chat/useTotalUnreadCount.js.map +1 -0
  200. package/dist/esm/hooks/chat/useTypingIndicator.d.ts +21 -0
  201. package/dist/esm/hooks/chat/useTypingIndicator.js +66 -0
  202. package/dist/esm/hooks/chat/useTypingIndicator.js.map +1 -0
  203. package/dist/esm/hooks/comments/index.d.ts +1 -1
  204. package/dist/esm/hooks/comments/index.js.map +1 -1
  205. package/dist/esm/hooks/comments/useCommentSectionData.d.ts +7 -0
  206. package/dist/esm/hooks/comments/useCommentSectionData.js +62 -38
  207. package/dist/esm/hooks/comments/useCommentSectionData.js.map +1 -1
  208. package/dist/esm/hooks/spaces/index.d.ts +4 -0
  209. package/dist/esm/hooks/spaces/index.js +3 -0
  210. package/dist/esm/hooks/spaces/index.js.map +1 -1
  211. package/dist/esm/hooks/spaces/useSpaceMentions.d.ts +24 -0
  212. package/dist/esm/hooks/spaces/useSpaceMentions.js +186 -0
  213. package/dist/esm/hooks/spaces/useSpaceMentions.js.map +1 -0
  214. package/dist/esm/hooks/spaces/useUnbanMember.d.ts +11 -0
  215. package/dist/esm/hooks/spaces/useUnbanMember.js +66 -0
  216. package/dist/esm/hooks/spaces/useUnbanMember.js.map +1 -0
  217. package/dist/esm/hooks/users/index.d.ts +1 -1
  218. package/dist/esm/hooks/users/index.js +1 -1
  219. package/dist/esm/hooks/users/index.js.map +1 -1
  220. package/dist/esm/hooks/users/{useMentions.d.ts → useUserMentions.d.ts} +8 -4
  221. package/dist/esm/hooks/users/{useMentions.js → useUserMentions.js} +22 -17
  222. package/dist/esm/hooks/users/useUserMentions.js.map +1 -0
  223. package/dist/esm/index.d.ts +11 -5
  224. package/dist/esm/index.js +7 -3
  225. package/dist/esm/index.js.map +1 -1
  226. package/dist/esm/interfaces/models/File.d.ts +1 -0
  227. package/dist/esm/interfaces/models/IChatMessage.d.ts +34 -0
  228. package/dist/esm/interfaces/models/IChatMessage.js +2 -0
  229. package/dist/esm/interfaces/models/IChatMessage.js.map +1 -0
  230. package/dist/esm/interfaces/models/IConversation.d.ts +25 -0
  231. package/dist/esm/interfaces/models/IConversation.js +2 -0
  232. package/dist/esm/interfaces/models/IConversation.js.map +1 -0
  233. package/dist/esm/interfaces/models/IConversationMember.d.ts +16 -0
  234. package/dist/esm/interfaces/models/IConversationMember.js +2 -0
  235. package/dist/esm/interfaces/models/IConversationMember.js.map +1 -0
  236. package/dist/esm/interfaces/models/Mention.d.ts +8 -1
  237. package/dist/esm/store/api/spacesApi.d.ts +364 -0
  238. package/dist/esm/store/api/spacesApi.js +19 -2
  239. package/dist/esm/store/api/spacesApi.js.map +1 -1
  240. package/dist/esm/store/hooks.d.ts +1 -0
  241. package/dist/esm/store/index.d.ts +2 -0
  242. package/dist/esm/store/replykeReducers.d.ts +2 -0
  243. package/dist/esm/store/replykeReducers.js +2 -0
  244. package/dist/esm/store/replykeReducers.js.map +1 -1
  245. package/dist/esm/store/rootReducer.d.ts +3 -0
  246. package/dist/esm/store/slices/chatSlice.d.ts +120 -0
  247. package/dist/esm/store/slices/chatSlice.js +350 -0
  248. package/dist/esm/store/slices/chatSlice.js.map +1 -0
  249. package/dist/esm/store/slices/entityListsSlice.d.ts +168 -24
  250. package/dist/esm/store/slices/spaceListsSlice.d.ts +24 -0
  251. package/dist/esm/store/slices/userSlice.d.ts +16 -0
  252. package/dist/esm/types/socket.d.ts +73 -0
  253. package/dist/esm/types/socket.js +2 -0
  254. package/dist/esm/types/socket.js.map +1 -0
  255. package/package.json +3 -2
  256. package/dist/cjs/hooks/users/useMentions.js.map +0 -1
  257. package/dist/esm/hooks/users/useMentions.js.map +0 -1
@@ -0,0 +1,291 @@
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 __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
13
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
+ if (ar || !(i in from)) {
15
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
+ ar[i] = from[i];
17
+ }
18
+ }
19
+ return to.concat(ar || Array.prototype.slice.call(from));
20
+ };
21
+ import { jsx as _jsx } from "react/jsx-runtime";
22
+ import { createContext, useCallback, useContext, useEffect, useRef, useState, } from "react";
23
+ import { io } from "socket.io-client";
24
+ import { useReplykeDispatch, useReplykeSelector } from "../store/hooks";
25
+ import { selectAccessToken } from "../store/slices/authSlice";
26
+ import { selectUser } from "../store/slices/userSlice";
27
+ import { selectUser as selectAuthUser } from "../store/slices/authSlice";
28
+ import useProject from "../hooks/projects/useProject";
29
+ import { BASE_URL } from "../config/axios";
30
+ import { upsertMessage, upsertConversationPreview, incrementUnread, setSocketConnected, setTypingUsers, updateReactions, setConversation, } from "../store/slices/chatSlice";
31
+ export var ChatContext = createContext({
32
+ socket: null,
33
+ connected: false,
34
+ registerActiveConversation: function () { },
35
+ unregisterActiveConversation: function () { },
36
+ });
37
+ // ─── Hook ────────────────────────────────────────────────────────────────────
38
+ export function useChatContext() {
39
+ return useContext(ChatContext);
40
+ }
41
+ /** Derive the socket.io server URL from the REST API base URL. */
42
+ function getSocketUrl() {
43
+ // socket.io mounts at the origin; strip the path from BASE_URL
44
+ try {
45
+ return new URL(BASE_URL).origin;
46
+ }
47
+ catch (_a) {
48
+ return "https://api.replyke.com";
49
+ }
50
+ }
51
+ export var ChatProvider = function (_a) {
52
+ var _b;
53
+ var children = _a.children;
54
+ var dispatch = useReplykeDispatch();
55
+ var projectId = useProject().projectId;
56
+ var accessToken = useReplykeSelector(selectAccessToken);
57
+ var user = useReplykeSelector(selectUser);
58
+ var authUser = useReplykeSelector(selectAuthUser);
59
+ var currentUser = user || authUser;
60
+ // Keep mutable refs for values the socket handlers need without closing over stale state
61
+ var currentUserIdRef = useRef((_b = currentUser === null || currentUser === void 0 ? void 0 : currentUser.id) !== null && _b !== void 0 ? _b : null);
62
+ useEffect(function () {
63
+ var _a;
64
+ currentUserIdRef.current = (_a = currentUser === null || currentUser === void 0 ? void 0 : currentUser.id) !== null && _a !== void 0 ? _a : null;
65
+ }, [currentUser]);
66
+ // Fresh snapshot of messages for socket handlers that need to find a message by id
67
+ var messagesRef = useRef({});
68
+ var allMessages = useReplykeSelector(function (state) { return state.replyke.chat.messages; });
69
+ useEffect(function () {
70
+ messagesRef.current = allMessages;
71
+ }, [allMessages]);
72
+ // Fresh snapshot of conversations for conversation:updated merging
73
+ var conversationsRef = useRef({});
74
+ var allConversations = useReplykeSelector(function (state) { return state.replyke.chat.conversations; });
75
+ useEffect(function () {
76
+ conversationsRef.current = allConversations;
77
+ }, [allConversations]);
78
+ // Socket state (tracked in React state so context consumers re-render when it changes)
79
+ var _c = useState(null), socketState = _c[0], setSocketState = _c[1];
80
+ var _d = useState(false), connected = _d[0], setConnected = _d[1];
81
+ // Mutable refs that don't need to trigger re-renders
82
+ var socketRef = useRef(null);
83
+ var prevTokenRef = useRef(null);
84
+ // Set of conversationIds currently open — prevents unread bumps for active views
85
+ var activeConversationIds = useRef(new Set());
86
+ // Typing timers per conversation: conversationId → Map<userId, timer>
87
+ var typingTimers = useRef(new Map());
88
+ var registerActiveConversation = useCallback(function (id) {
89
+ activeConversationIds.current.add(id);
90
+ }, []);
91
+ var unregisterActiveConversation = useCallback(function (id) {
92
+ activeConversationIds.current.delete(id);
93
+ }, []);
94
+ // Helper: cancel a pending typing-timeout for a user in a conversation
95
+ var clearTypingTimer = useCallback(function (conversationId, userId) {
96
+ var convMap = typingTimers.current.get(conversationId);
97
+ if (!convMap)
98
+ return;
99
+ var timer = convMap.get(userId);
100
+ if (timer !== undefined) {
101
+ clearTimeout(timer);
102
+ convMap.delete(userId);
103
+ }
104
+ }, []);
105
+ // Helper: find a message by id across all loaded conversation buckets
106
+ var findMessage = useCallback(function (messageId) {
107
+ var _a;
108
+ for (var _i = 0, _b = Object.values(messagesRef.current); _i < _b.length; _i++) {
109
+ var bucket = _b[_i];
110
+ var found = (_a = bucket.items) === null || _a === void 0 ? void 0 : _a.find(function (m) { return m.id === messageId; });
111
+ if (found)
112
+ return found;
113
+ }
114
+ return null;
115
+ }, []);
116
+ // Helper: remove a userId from the Redux typing list for a conversation
117
+ var removeTypingUser = useCallback(function (conversationId, userId) {
118
+ // We can't use the selector inside a callback without re-reading,
119
+ // so we derive the current array from the state ref we keep in messagesRef.
120
+ // Actually for typing we need the current typingUsers — but that's a separate ref.
121
+ // Simplest: dispatch with the current stored typing users derived from our own
122
+ // typing timer map (we know who is in the map = who is typing).
123
+ var convMap = typingTimers.current.get(conversationId);
124
+ var typingUserIds = convMap ? Array.from(convMap.keys()) : [];
125
+ dispatch(setTypingUsers({
126
+ conversationId: conversationId,
127
+ userIds: typingUserIds.filter(function (id) { return id !== userId; }),
128
+ }));
129
+ }, [dispatch]);
130
+ // ── Main socket creation effect ─────────────────────────────────────────────
131
+ var hasToken = Boolean(accessToken);
132
+ useEffect(function () {
133
+ if (!projectId || !accessToken)
134
+ return;
135
+ var socketUrl = getSocketUrl();
136
+ var socket = io(socketUrl, {
137
+ auth: { token: accessToken },
138
+ query: { projectId: projectId },
139
+ autoConnect: true,
140
+ });
141
+ socketRef.current = socket;
142
+ setSocketState(socket);
143
+ prevTokenRef.current = accessToken;
144
+ // ── Connection state ────────────────────────────────────────────────────
145
+ socket.on("connect", function () {
146
+ setConnected(true);
147
+ dispatch(setSocketConnected(true));
148
+ });
149
+ socket.on("disconnect", function () {
150
+ setConnected(false);
151
+ dispatch(setSocketConnected(false));
152
+ });
153
+ // ── message:created ─────────────────────────────────────────────────────
154
+ socket.on("message:created", function (message) {
155
+ dispatch(upsertMessage(message));
156
+ dispatch(upsertConversationPreview({
157
+ conversationId: message.conversationId,
158
+ patch: {
159
+ lastMessageAt: message.createdAt,
160
+ lastMessage: message,
161
+ },
162
+ }));
163
+ if (!activeConversationIds.current.has(message.conversationId)) {
164
+ dispatch(incrementUnread(message.conversationId));
165
+ }
166
+ });
167
+ // ── message:updated ─────────────────────────────────────────────────────
168
+ socket.on("message:updated", function (payload) {
169
+ var existing = findMessage(payload.messageId);
170
+ if (existing) {
171
+ dispatch(upsertMessage(__assign(__assign({}, existing), { content: payload.content, gif: payload.gif, mentions: payload.mentions, metadata: payload.metadata, editedAt: payload.editedAt })));
172
+ }
173
+ });
174
+ // ── message:deleted ─────────────────────────────────────────────────────
175
+ socket.on("message:deleted", function (payload) {
176
+ var existing = findMessage(payload.messageId);
177
+ if (existing) {
178
+ dispatch(upsertMessage(__assign(__assign({}, existing), { userDeletedAt: payload.userDeletedAt, content: null, gif: null, mentions: [], metadata: {}, files: undefined })));
179
+ }
180
+ });
181
+ // ── message:removed ─────────────────────────────────────────────────────
182
+ socket.on("message:removed", function (payload) {
183
+ var existing = findMessage(payload.messageId);
184
+ if (existing) {
185
+ dispatch(upsertMessage(__assign(__assign({}, existing), { moderationStatus: "removed" })));
186
+ }
187
+ });
188
+ // ── message:reaction ────────────────────────────────────────────────────
189
+ socket.on("message:reaction", function (payload) {
190
+ var _a;
191
+ dispatch(updateReactions({
192
+ conversationId: payload.conversationId,
193
+ messageId: payload.messageId,
194
+ reactionCounts: payload.reactionCounts,
195
+ userId: payload.userId,
196
+ emoji: payload.emoji,
197
+ delta: payload.delta,
198
+ currentUserId: (_a = currentUserIdRef.current) !== null && _a !== void 0 ? _a : "",
199
+ }));
200
+ });
201
+ // ── thread:reply_count ──────────────────────────────────────────────────
202
+ socket.on("thread:reply_count", function (payload) {
203
+ var existing = findMessage(payload.messageId);
204
+ if (existing) {
205
+ dispatch(upsertMessage(__assign(__assign({}, existing), { threadReplyCount: payload.threadReplyCount })));
206
+ }
207
+ });
208
+ // ── typing:start ────────────────────────────────────────────────────────
209
+ socket.on("typing:start", function (_a) {
210
+ var userId = _a.userId, conversationId = _a.conversationId;
211
+ // Ignore self-loop (multiple tabs)
212
+ if (userId === currentUserIdRef.current)
213
+ return;
214
+ // Reset the 5-second auto-timeout for this user
215
+ clearTypingTimer(conversationId, userId);
216
+ if (!typingTimers.current.has(conversationId)) {
217
+ typingTimers.current.set(conversationId, new Map());
218
+ }
219
+ var convMap = typingTimers.current.get(conversationId);
220
+ // Add to Redux typing list if not already present
221
+ var currentTyping = Array.from(convMap.keys());
222
+ if (!currentTyping.includes(userId)) {
223
+ dispatch(setTypingUsers({
224
+ conversationId: conversationId,
225
+ userIds: __spreadArray(__spreadArray([], currentTyping, true), [userId], false),
226
+ }));
227
+ }
228
+ // Set timeout to auto-remove after 5 seconds without a keep-alive
229
+ var timer = setTimeout(function () {
230
+ var _a;
231
+ removeTypingUser(conversationId, userId);
232
+ (_a = typingTimers.current.get(conversationId)) === null || _a === void 0 ? void 0 : _a.delete(userId);
233
+ }, 5000);
234
+ convMap.set(userId, timer);
235
+ });
236
+ // ── typing:stop ─────────────────────────────────────────────────────────
237
+ socket.on("typing:stop", function (_a) {
238
+ var userId = _a.userId, conversationId = _a.conversationId;
239
+ clearTypingTimer(conversationId, userId);
240
+ removeTypingUser(conversationId, userId);
241
+ });
242
+ // ── conversation:updated ────────────────────────────────────────────────
243
+ socket.on("conversation:updated", function (patch) {
244
+ var _a;
245
+ var existing = (_a = conversationsRef.current[patch.id]) === null || _a === void 0 ? void 0 : _a.data;
246
+ if (existing) {
247
+ dispatch(setConversation(__assign(__assign({}, existing), patch)));
248
+ }
249
+ });
250
+ // ── Cleanup ─────────────────────────────────────────────────────────────
251
+ return function () {
252
+ socket.removeAllListeners();
253
+ socket.disconnect();
254
+ socketRef.current = null;
255
+ setSocketState(null);
256
+ setConnected(false);
257
+ dispatch(setSocketConnected(false));
258
+ // Clear all pending typing timers
259
+ Array.from(typingTimers.current.values()).forEach(function (convMap) {
260
+ Array.from(convMap.values()).forEach(function (timer) {
261
+ clearTimeout(timer);
262
+ });
263
+ });
264
+ typingTimers.current.clear();
265
+ };
266
+ // eslint-disable-next-line react-hooks/exhaustive-deps
267
+ }, [projectId, hasToken]);
268
+ // ── Token refresh effect ────────────────────────────────────────────────────
269
+ // When the access token rotates (same socket, new credentials), update socket.auth
270
+ // and force a fresh handshake. Must NOT re-create the socket — that would clear all
271
+ // room memberships. Instead: update auth object, then disconnect().connect().
272
+ useEffect(function () {
273
+ var socket = socketRef.current;
274
+ if (!socket || !accessToken)
275
+ return;
276
+ if (prevTokenRef.current === accessToken)
277
+ return;
278
+ prevTokenRef.current = accessToken;
279
+ // socket.auth must be updated BEFORE disconnect().connect() —
280
+ // Socket.io auto-reconnect reuses the original auth object.
281
+ socket.auth = { token: accessToken };
282
+ socket.disconnect().connect();
283
+ }, [accessToken]);
284
+ return (_jsx(ChatContext.Provider, { value: {
285
+ socket: socketState,
286
+ connected: connected,
287
+ registerActiveConversation: registerActiveConversation,
288
+ unregisterActiveConversation: unregisterActiveConversation,
289
+ }, children: children }));
290
+ };
291
+ //# sourceMappingURL=chat-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-context.js","sourceRoot":"","sources":["../../../src/context/chat-context.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import React, { ReactNode } from "react";
2
+ import { UseConversationDataValues } from "../hooks/chat/useConversationData";
3
+ export interface ConversationContextValue extends UseConversationDataValues {
4
+ conversationId: string;
5
+ }
6
+ export declare const ConversationContext: React.Context<Partial<ConversationContextValue>>;
7
+ export declare function useConversationContext(): Partial<ConversationContextValue>;
8
+ export interface ConversationProviderProps {
9
+ conversationId: string;
10
+ /** Called when the conversation is deleted by an admin */
11
+ onDeleted?: () => void;
12
+ children: ReactNode;
13
+ }
14
+ export declare const ConversationProvider: React.FC<ConversationProviderProps>;
@@ -0,0 +1,223 @@
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 { jsx as _jsx } from "react/jsx-runtime";
49
+ import { createContext, useCallback, useContext, useEffect, useRef, } from "react";
50
+ import { useChatContext } from "./chat-context";
51
+ import { useReplykeDispatch, useReplykeSelector } from "../store/hooks";
52
+ import { selectNewestMessageId } from "../store/slices/chatSlice";
53
+ import useConversationData from "../hooks/chat/useConversationData";
54
+ import useMarkConversationAsRead from "../hooks/chat/useMarkConversationAsRead";
55
+ import useAxiosPrivate from "../config/useAxiosPrivate";
56
+ import useProject from "../hooks/projects/useProject";
57
+ import { upsertMessage } from "../store/slices/chatSlice";
58
+ import { handleError } from "../utils/handleError";
59
+ export var ConversationContext = createContext({});
60
+ export function useConversationContext() {
61
+ return useContext(ConversationContext);
62
+ }
63
+ export var ConversationProvider = function (_a) {
64
+ var conversationId = _a.conversationId, onDeleted = _a.onDeleted, children = _a.children;
65
+ var dispatch = useReplykeDispatch();
66
+ var projectId = useProject().projectId;
67
+ var axios = useAxiosPrivate();
68
+ var _b = useChatContext(), socket = _b.socket, registerActiveConversation = _b.registerActiveConversation, unregisterActiveConversation = _b.unregisterActiveConversation;
69
+ // Read the newest message id from Redux for reconnect catch-up
70
+ var newestMessageId = useReplykeSelector(selectNewestMessageId(conversationId));
71
+ var newestMessageIdRef = useRef(newestMessageId);
72
+ useEffect(function () {
73
+ newestMessageIdRef.current = newestMessageId;
74
+ }, [newestMessageId]);
75
+ var mark = useMarkConversationAsRead({ conversationId: conversationId });
76
+ var catchUpMessages = useCallback(function (afterTimestamp) { return __awaiter(void 0, void 0, void 0, function () {
77
+ var response, messages, err_1;
78
+ return __generator(this, function (_a) {
79
+ switch (_a.label) {
80
+ case 0:
81
+ if (!projectId || !conversationId)
82
+ return [2 /*return*/];
83
+ _a.label = 1;
84
+ case 1:
85
+ _a.trys.push([1, 3, , 4]);
86
+ return [4 /*yield*/, axios.get("/".concat(projectId, "/v7/chat/conversations/").concat(conversationId, "/messages"), { params: { after: afterTimestamp, limit: 100, sort: "asc" } })];
87
+ case 2:
88
+ response = _a.sent();
89
+ messages = response.data.messages;
90
+ messages.forEach(function (msg) { return dispatch(upsertMessage(msg)); });
91
+ return [3 /*break*/, 4];
92
+ case 3:
93
+ err_1 = _a.sent();
94
+ handleError(err_1, "Failed to fetch missed messages");
95
+ return [3 /*break*/, 4];
96
+ case 4: return [2 /*return*/];
97
+ }
98
+ });
99
+ }); }, [projectId, conversationId, axios, dispatch]);
100
+ // Keep a ref to the messages state so socket handlers can find latest messages
101
+ var messagesRef = useRef([]);
102
+ var reduxMessages = useReplykeSelector(function (state) { var _a, _b; return (_b = (_a = state.replyke.chat.messages[conversationId]) === null || _a === void 0 ? void 0 : _a.items) !== null && _b !== void 0 ? _b : []; });
103
+ useEffect(function () {
104
+ messagesRef.current = reduxMessages;
105
+ }, [reduxMessages]);
106
+ // ── Conversation data (messages, send, members, etc.) ─────────────────────
107
+ // Called before the socket effects so upsertMember / removeMemberLocally are
108
+ // available as stable callbacks in the member event handlers below.
109
+ var data = useConversationData({ conversationId: conversationId });
110
+ // ── Room join / leave ──────────────────────────────────────────────────────
111
+ useEffect(function () {
112
+ if (!socket || !conversationId)
113
+ return;
114
+ var room = conversationId;
115
+ // Register this conversation as active (suppresses unread increments in ChatProvider)
116
+ registerActiveConversation(room);
117
+ // Join the Socket.io room
118
+ socket.emit("join:conversation", { conversationId: conversationId });
119
+ // Mark as read on mount (catches up any unread before the view was opened)
120
+ var newestId = newestMessageIdRef.current;
121
+ if (newestId) {
122
+ mark(newestId);
123
+ }
124
+ return function () {
125
+ socket.emit("leave:conversation", { conversationId: conversationId });
126
+ unregisterActiveConversation(room);
127
+ };
128
+ }, [socket, conversationId, registerActiveConversation, unregisterActiveConversation, mark]);
129
+ // ── Reconnect handler ──────────────────────────────────────────────────────
130
+ // On reconnects (not the initial connect), re-join the room and catch up on
131
+ // messages that arrived during the disconnection window.
132
+ useEffect(function () {
133
+ if (!socket || !conversationId)
134
+ return;
135
+ // Track whether the initial connect has been observed so we can distinguish
136
+ // it from subsequent reconnects (socket.on("connect") fires on both).
137
+ var hasConnectedOnceRef = { current: socket.connected };
138
+ var handleConnect = function () { return __awaiter(void 0, void 0, void 0, function () {
139
+ var newest, newestMsg;
140
+ return __generator(this, function (_a) {
141
+ switch (_a.label) {
142
+ case 0:
143
+ if (!hasConnectedOnceRef.current) {
144
+ // Initial connect — the mount effect already joined the room.
145
+ hasConnectedOnceRef.current = true;
146
+ return [2 /*return*/];
147
+ }
148
+ // True reconnect: re-join the room and catch up on missed messages.
149
+ socket.emit("join:conversation", { conversationId: conversationId });
150
+ newest = newestMessageIdRef.current;
151
+ if (!newest) return [3 /*break*/, 2];
152
+ newestMsg = messagesRef.current.find(function (m) { return m.id === newest; });
153
+ if (!newestMsg) return [3 /*break*/, 2];
154
+ return [4 /*yield*/, catchUpMessages(new Date(newestMsg.createdAt).toISOString())];
155
+ case 1:
156
+ _a.sent();
157
+ _a.label = 2;
158
+ case 2: return [2 /*return*/];
159
+ }
160
+ });
161
+ }); };
162
+ socket.on("connect", handleConnect);
163
+ return function () {
164
+ socket.off("connect", handleConnect);
165
+ };
166
+ }, [socket, conversationId, catchUpMessages]);
167
+ // ── conversation:deleted ───────────────────────────────────────────────────
168
+ useEffect(function () {
169
+ if (!socket || !conversationId)
170
+ return;
171
+ var handleDeleted = function (_a) {
172
+ var deletedId = _a.conversationId;
173
+ if (deletedId !== conversationId)
174
+ return;
175
+ socket.emit("leave:conversation", { conversationId: conversationId });
176
+ unregisterActiveConversation(conversationId);
177
+ onDeleted === null || onDeleted === void 0 ? void 0 : onDeleted();
178
+ };
179
+ socket.on("conversation:deleted", handleDeleted);
180
+ return function () {
181
+ socket.off("conversation:deleted", handleDeleted);
182
+ };
183
+ }, [socket, conversationId, unregisterActiveConversation, onDeleted]);
184
+ // ── Member join / leave ────────────────────────────────────────────────────
185
+ // Update local members state when the server broadcasts member changes.
186
+ useEffect(function () {
187
+ if (!socket || !conversationId)
188
+ return;
189
+ var handleMemberJoined = function (payload) {
190
+ if (payload.conversationId !== conversationId)
191
+ return;
192
+ data.upsertMember(payload.member);
193
+ };
194
+ var handleMemberLeft = function (payload) {
195
+ if (payload.conversationId !== conversationId)
196
+ return;
197
+ data.removeMemberLocally(payload.userId);
198
+ };
199
+ socket.on("member:joined", handleMemberJoined);
200
+ socket.on("member:left", handleMemberLeft);
201
+ return function () {
202
+ socket.off("member:joined", handleMemberJoined);
203
+ socket.off("member:left", handleMemberLeft);
204
+ };
205
+ }, [socket, conversationId, data.upsertMember, data.removeMemberLocally]);
206
+ // ── Mark read on new messages ──────────────────────────────────────────────
207
+ // While this conversation is mounted, each incoming message is immediately marked read.
208
+ useEffect(function () {
209
+ if (!socket || !conversationId)
210
+ return;
211
+ var handleMessage = function (message) {
212
+ if (message.conversationId !== conversationId)
213
+ return;
214
+ mark(message.id);
215
+ };
216
+ socket.on("message:created", handleMessage);
217
+ return function () {
218
+ socket.off("message:created", handleMessage);
219
+ };
220
+ }, [socket, conversationId, mark]);
221
+ return (_jsx(ConversationContext.Provider, { value: __assign(__assign({}, data), { conversationId: conversationId }), children: children }));
222
+ };
223
+ //# sourceMappingURL=conversation-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-context.js","sourceRoot":"","sources":["../../../src/context/conversation-context.tsx"],"names":[],"mappings":"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"}
@@ -4,3 +4,6 @@ export { ReplykeIntegrationProvider } from "./replyke-integration-context";
4
4
  export { EntityProvider } from "./entity-context";
5
5
  export { CommentSectionProvider } from "./comment-section-context";
6
6
  export { SpaceProvider } from "./space-context";
7
+ export { ChatProvider, ChatContext, useChatContext, type ChatContextValue, type ChatProviderProps, } from "./chat-context";
8
+ export { ConversationProvider, ConversationContext, useConversationContext, type ConversationContextValue, type ConversationProviderProps, } from "./conversation-context";
9
+ export { MessageThreadProvider, MessageThreadContext, useMessageThreadContext, type MessageThreadContextValue, type MessageThreadProviderProps, } from "./message-thread-context";
@@ -4,4 +4,7 @@ export { ReplykeIntegrationProvider } from "./replyke-integration-context";
4
4
  export { EntityProvider } from "./entity-context";
5
5
  export { CommentSectionProvider } from "./comment-section-context";
6
6
  export { SpaceProvider } from "./space-context";
7
+ export { ChatProvider, ChatContext, useChatContext, } from "./chat-context";
8
+ export { ConversationProvider, ConversationContext, useConversationContext, } from "./conversation-context";
9
+ export { MessageThreadProvider, MessageThreadContext, useMessageThreadContext, } from "./message-thread-context";
7
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/context/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/context/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EACL,YAAY,EACZ,WAAW,EACX,cAAc,GAGf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,GAGvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,GAGxB,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import React, { ReactNode } from "react";
2
+ import { UseMessageThreadValues } from "../hooks/chat/messages/useMessageThread";
3
+ export interface MessageThreadContextValue extends UseMessageThreadValues {
4
+ messageId: string;
5
+ }
6
+ export declare const MessageThreadContext: React.Context<Partial<MessageThreadContextValue>>;
7
+ export declare function useMessageThreadContext(): Partial<MessageThreadContextValue>;
8
+ export interface MessageThreadProviderProps {
9
+ messageId: string;
10
+ conversationId: string;
11
+ children: ReactNode;
12
+ }
13
+ export declare const MessageThreadProvider: React.FC<MessageThreadProviderProps>;
@@ -0,0 +1,24 @@
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 { jsx as _jsx } from "react/jsx-runtime";
13
+ import { createContext, useContext } from "react";
14
+ import useMessageThread from "../hooks/chat/messages/useMessageThread";
15
+ export var MessageThreadContext = createContext({});
16
+ export function useMessageThreadContext() {
17
+ return useContext(MessageThreadContext);
18
+ }
19
+ export var MessageThreadProvider = function (_a) {
20
+ var messageId = _a.messageId, conversationId = _a.conversationId, children = _a.children;
21
+ var data = useMessageThread({ messageId: messageId, conversationId: conversationId });
22
+ return (_jsx(MessageThreadContext.Provider, { value: __assign(__assign({}, data), { messageId: messageId }), children: children }));
23
+ };
24
+ //# sourceMappingURL=message-thread-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-thread-context.js","sourceRoot":"","sources":["../../../src/context/message-thread-context.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAc,EAAE,aAAa,EAAa,UAAU,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,gBAEN,MAAM,yCAAyC,CAAC;AAQjD,MAAM,CAAC,IAAM,oBAAoB,GAAG,aAAa,CAE/C,EAAE,CAAC,CAAC;AAEN,MAAM,UAAU,uBAAuB;IACrC,OAAO,UAAU,CAAC,oBAAoB,CAAC,CAAC;AAC1C,CAAC;AAUD,MAAM,CAAC,IAAM,qBAAqB,GAAyC,UAAC,EAI3E;QAHC,SAAS,eAAA,EACT,cAAc,oBAAA,EACd,QAAQ,cAAA;IAER,IAAM,IAAI,GAAG,gBAAgB,CAAC,EAAE,SAAS,WAAA,EAAE,cAAc,gBAAA,EAAE,CAAC,CAAC;IAE7D,OAAO,CACL,KAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,wBAAO,IAAI,KAAE,SAAS,WAAA,eACvD,QAAQ,GACqB,CACjC,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ export { default as useConversations } from "./useConversations";
2
+ export type { UseConversationsProps, UseConversationsValues, } from "./useConversations";
3
+ export { default as useConversation } from "./useConversation";
4
+ export type { UseConversationProps, UseConversationValues, UpdateConversationParams, } from "./useConversation";
5
+ export { default as useCreateDirectConversation } from "./useCreateDirectConversation";
6
+ export type { CreateDirectConversationProps } from "./useCreateDirectConversation";
7
+ export { default as useSpaceConversation } from "./useSpaceConversation";
8
+ export type { UseSpaceConversationProps, UseSpaceConversationValues, } from "./useSpaceConversation";
9
+ export { default as useConversationMembers } from "./useConversationMembers";
10
+ export type { UseConversationMembersProps, UseConversationMembersValues, } from "./useConversationMembers";