@sublay/core 7.1.1 → 7.2.0

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 (151) hide show
  1. package/dist/cjs/hooks/auth/index.d.ts +2 -0
  2. package/dist/cjs/hooks/auth/index.js +5 -1
  3. package/dist/cjs/hooks/auth/index.js.map +1 -1
  4. package/dist/cjs/hooks/auth/useConfirmAccountDeletion.d.ts +14 -0
  5. package/dist/cjs/hooks/auth/useConfirmAccountDeletion.js +36 -0
  6. package/dist/cjs/hooks/auth/useConfirmAccountDeletion.js.map +1 -0
  7. package/dist/cjs/hooks/auth/useRequestAccountDeletion.d.ts +13 -0
  8. package/dist/cjs/hooks/auth/useRequestAccountDeletion.js +30 -0
  9. package/dist/cjs/hooks/auth/useRequestAccountDeletion.js.map +1 -0
  10. package/dist/cjs/hooks/chat/index.d.ts +2 -2
  11. package/dist/cjs/hooks/chat/index.js +4 -1
  12. package/dist/cjs/hooks/chat/index.js.map +1 -1
  13. package/dist/cjs/hooks/chat/messages/index.d.ts +6 -0
  14. package/dist/cjs/hooks/chat/messages/index.js +10 -1
  15. package/dist/cjs/hooks/chat/messages/index.js.map +1 -1
  16. package/dist/cjs/hooks/chat/messages/useChatMessages.d.ts +10 -14
  17. package/dist/cjs/hooks/chat/messages/useChatMessages.js +7 -136
  18. package/dist/cjs/hooks/chat/messages/useChatMessages.js.map +1 -1
  19. package/dist/cjs/hooks/chat/messages/useFetchManyChatMessages.d.ts +45 -0
  20. package/dist/cjs/hooks/chat/messages/useFetchManyChatMessages.js +43 -0
  21. package/dist/cjs/hooks/chat/messages/useFetchManyChatMessages.js.map +1 -0
  22. package/dist/cjs/hooks/chat/messages/useFetchManyChatMessagesWrapper.d.ts +35 -0
  23. package/dist/cjs/hooks/chat/messages/useFetchManyChatMessagesWrapper.js +100 -0
  24. package/dist/cjs/hooks/chat/messages/useFetchManyChatMessagesWrapper.js.map +1 -0
  25. package/dist/cjs/hooks/chat/messages/useLiveChatMessages.d.ts +26 -0
  26. package/dist/cjs/hooks/chat/messages/useLiveChatMessages.js +149 -0
  27. package/dist/cjs/hooks/chat/messages/useLiveChatMessages.js.map +1 -0
  28. package/dist/cjs/hooks/chat/messages/useMessageThread.js +2 -2
  29. package/dist/cjs/hooks/chat/messages/useMessageThread.js.map +1 -1
  30. package/dist/cjs/hooks/chat/useConversationData.js +2 -2
  31. package/dist/cjs/hooks/chat/useConversationData.js.map +1 -1
  32. package/dist/cjs/hooks/spaces/index.d.ts +2 -0
  33. package/dist/cjs/hooks/spaces/index.js +3 -1
  34. package/dist/cjs/hooks/spaces/index.js.map +1 -1
  35. package/dist/cjs/hooks/spaces/useFetchMutualSpaces.d.ts +11 -0
  36. package/dist/cjs/hooks/spaces/useFetchMutualSpaces.js +28 -0
  37. package/dist/cjs/hooks/spaces/useFetchMutualSpaces.js.map +1 -0
  38. package/dist/cjs/hooks/tables/index.d.ts +2 -0
  39. package/dist/cjs/hooks/tables/index.js +10 -0
  40. package/dist/cjs/hooks/tables/index.js.map +1 -0
  41. package/dist/cjs/hooks/tables/useTable.d.ts +37 -0
  42. package/dist/cjs/hooks/tables/useTable.js +115 -0
  43. package/dist/cjs/hooks/tables/useTable.js.map +1 -0
  44. package/dist/cjs/index.d.ts +6 -4
  45. package/dist/cjs/index.js +14 -5
  46. package/dist/cjs/index.js.map +1 -1
  47. package/dist/cjs/interfaces/models/Table.d.ts +29 -0
  48. package/dist/cjs/interfaces/models/Table.js +8 -0
  49. package/dist/cjs/interfaces/models/Table.js.map +1 -0
  50. package/dist/cjs/store/api/appNotificationsApi.d.ts +181 -181
  51. package/dist/cjs/store/api/baseApi.d.ts +2 -2
  52. package/dist/cjs/store/api/baseApi.js +1 -0
  53. package/dist/cjs/store/api/baseApi.js.map +1 -1
  54. package/dist/cjs/store/api/collectionsApi.d.ts +319 -319
  55. package/dist/cjs/store/api/entityListsApi.d.ts +107 -107
  56. package/dist/cjs/store/api/index.d.ts +1 -0
  57. package/dist/cjs/store/api/index.js +2 -0
  58. package/dist/cjs/store/api/index.js.map +1 -1
  59. package/dist/cjs/store/api/spacesApi.d.ts +1021 -1021
  60. package/dist/cjs/store/api/tablesApi.d.ts +2554 -0
  61. package/dist/cjs/store/api/tablesApi.js +84 -0
  62. package/dist/cjs/store/api/tablesApi.js.map +1 -0
  63. package/dist/cjs/store/api/userApi.d.ts +3 -3
  64. package/dist/cjs/store/hooks.d.ts +2 -1
  65. package/dist/cjs/store/index.d.ts +4 -2
  66. package/dist/cjs/store/rootReducer.d.ts +5 -2
  67. package/dist/cjs/store/slices/authThunks.d.ts +4 -0
  68. package/dist/cjs/store/slices/authThunks.js +52 -1
  69. package/dist/cjs/store/slices/authThunks.js.map +1 -1
  70. package/dist/cjs/store/slices/tablesSlice.d.ts +113 -0
  71. package/dist/cjs/store/slices/tablesSlice.js +40 -0
  72. package/dist/cjs/store/slices/tablesSlice.js.map +1 -0
  73. package/dist/cjs/store/sublayReducers.d.ts +2 -0
  74. package/dist/cjs/store/sublayReducers.js +2 -0
  75. package/dist/cjs/store/sublayReducers.js.map +1 -1
  76. package/dist/esm/hooks/auth/index.d.ts +2 -0
  77. package/dist/esm/hooks/auth/index.js +2 -0
  78. package/dist/esm/hooks/auth/index.js.map +1 -1
  79. package/dist/esm/hooks/auth/useConfirmAccountDeletion.d.ts +14 -0
  80. package/dist/esm/hooks/auth/useConfirmAccountDeletion.js +31 -0
  81. package/dist/esm/hooks/auth/useConfirmAccountDeletion.js.map +1 -0
  82. package/dist/esm/hooks/auth/useRequestAccountDeletion.d.ts +13 -0
  83. package/dist/esm/hooks/auth/useRequestAccountDeletion.js +25 -0
  84. package/dist/esm/hooks/auth/useRequestAccountDeletion.js.map +1 -0
  85. package/dist/esm/hooks/chat/index.d.ts +2 -2
  86. package/dist/esm/hooks/chat/index.js +1 -1
  87. package/dist/esm/hooks/chat/index.js.map +1 -1
  88. package/dist/esm/hooks/chat/messages/index.d.ts +6 -0
  89. package/dist/esm/hooks/chat/messages/index.js +6 -0
  90. package/dist/esm/hooks/chat/messages/index.js.map +1 -1
  91. package/dist/esm/hooks/chat/messages/useChatMessages.d.ts +10 -14
  92. package/dist/esm/hooks/chat/messages/useChatMessages.js +7 -136
  93. package/dist/esm/hooks/chat/messages/useChatMessages.js.map +1 -1
  94. package/dist/esm/hooks/chat/messages/useFetchManyChatMessages.d.ts +45 -0
  95. package/dist/esm/hooks/chat/messages/useFetchManyChatMessages.js +38 -0
  96. package/dist/esm/hooks/chat/messages/useFetchManyChatMessages.js.map +1 -0
  97. package/dist/esm/hooks/chat/messages/useFetchManyChatMessagesWrapper.d.ts +35 -0
  98. package/dist/esm/hooks/chat/messages/useFetchManyChatMessagesWrapper.js +95 -0
  99. package/dist/esm/hooks/chat/messages/useFetchManyChatMessagesWrapper.js.map +1 -0
  100. package/dist/esm/hooks/chat/messages/useLiveChatMessages.d.ts +26 -0
  101. package/dist/esm/hooks/chat/messages/useLiveChatMessages.js +144 -0
  102. package/dist/esm/hooks/chat/messages/useLiveChatMessages.js.map +1 -0
  103. package/dist/esm/hooks/chat/messages/useMessageThread.js +2 -2
  104. package/dist/esm/hooks/chat/messages/useMessageThread.js.map +1 -1
  105. package/dist/esm/hooks/chat/useConversationData.js +2 -2
  106. package/dist/esm/hooks/chat/useConversationData.js.map +1 -1
  107. package/dist/esm/hooks/spaces/index.d.ts +2 -0
  108. package/dist/esm/hooks/spaces/index.js +1 -0
  109. package/dist/esm/hooks/spaces/index.js.map +1 -1
  110. package/dist/esm/hooks/spaces/useFetchMutualSpaces.d.ts +11 -0
  111. package/dist/esm/hooks/spaces/useFetchMutualSpaces.js +23 -0
  112. package/dist/esm/hooks/spaces/useFetchMutualSpaces.js.map +1 -0
  113. package/dist/esm/hooks/tables/index.d.ts +2 -0
  114. package/dist/esm/hooks/tables/index.js +2 -0
  115. package/dist/esm/hooks/tables/index.js.map +1 -0
  116. package/dist/esm/hooks/tables/useTable.d.ts +37 -0
  117. package/dist/esm/hooks/tables/useTable.js +109 -0
  118. package/dist/esm/hooks/tables/useTable.js.map +1 -0
  119. package/dist/esm/index.d.ts +6 -4
  120. package/dist/esm/index.js +5 -3
  121. package/dist/esm/index.js.map +1 -1
  122. package/dist/esm/interfaces/models/Table.d.ts +29 -0
  123. package/dist/esm/interfaces/models/Table.js +7 -0
  124. package/dist/esm/interfaces/models/Table.js.map +1 -0
  125. package/dist/esm/store/api/appNotificationsApi.d.ts +181 -181
  126. package/dist/esm/store/api/baseApi.d.ts +2 -2
  127. package/dist/esm/store/api/baseApi.js +1 -0
  128. package/dist/esm/store/api/baseApi.js.map +1 -1
  129. package/dist/esm/store/api/collectionsApi.d.ts +319 -319
  130. package/dist/esm/store/api/entityListsApi.d.ts +107 -107
  131. package/dist/esm/store/api/index.d.ts +1 -0
  132. package/dist/esm/store/api/index.js +2 -0
  133. package/dist/esm/store/api/index.js.map +1 -1
  134. package/dist/esm/store/api/spacesApi.d.ts +1021 -1021
  135. package/dist/esm/store/api/tablesApi.d.ts +2554 -0
  136. package/dist/esm/store/api/tablesApi.js +80 -0
  137. package/dist/esm/store/api/tablesApi.js.map +1 -0
  138. package/dist/esm/store/api/userApi.d.ts +3 -3
  139. package/dist/esm/store/hooks.d.ts +2 -1
  140. package/dist/esm/store/index.d.ts +4 -2
  141. package/dist/esm/store/rootReducer.d.ts +5 -2
  142. package/dist/esm/store/slices/authThunks.d.ts +4 -0
  143. package/dist/esm/store/slices/authThunks.js +51 -0
  144. package/dist/esm/store/slices/authThunks.js.map +1 -1
  145. package/dist/esm/store/slices/tablesSlice.d.ts +113 -0
  146. package/dist/esm/store/slices/tablesSlice.js +36 -0
  147. package/dist/esm/store/slices/tablesSlice.js.map +1 -0
  148. package/dist/esm/store/sublayReducers.d.ts +2 -0
  149. package/dist/esm/store/sublayReducers.js +2 -0
  150. package/dist/esm/store/sublayReducers.js.map +1 -1
  151. package/package.json +10 -3
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = require("react");
7
+ const handleError_1 = require("../../../utils/handleError");
8
+ const useFetchManyChatMessages_1 = __importDefault(require("./useFetchManyChatMessages"));
9
+ /**
10
+ * Batteries-included, self-contained list of conversation messages with
11
+ * cursor pagination — keeps results in local component state, NOT Redux, and
12
+ * does NOT subscribe to socket updates. Use this for read-only / filtered
13
+ * queries (e.g. "messages that have replies"). For the live canonical
14
+ * conversation stream, use `useLiveChatMessages` instead.
15
+ */
16
+ function useFetchManyChatMessagesWrapper(props) {
17
+ const { conversationId, parentId, limit = 50, sort = "desc", includeFiles, filters, } = props;
18
+ const fetchMany = (0, useFetchManyChatMessages_1.default)();
19
+ const [messages, setMessages] = (0, react_1.useState)([]);
20
+ const [loading, setLoading] = (0, react_1.useState)(true);
21
+ const [hasMore, setHasMore] = (0, react_1.useState)(true);
22
+ // Cursor for the next page, in the direction of travel: the oldest loaded
23
+ // timestamp for "desc", the newest for "asc".
24
+ const cursorRef = (0, react_1.useRef)(null);
25
+ const loadingRef = (0, react_1.useRef)(false);
26
+ const hasMoreRef = (0, react_1.useRef)(true);
27
+ // Stable primitive for dependency arrays — `filters` is a fresh object each
28
+ // render unless the caller memoizes it.
29
+ const filtersKey = JSON.stringify(filters ?? {});
30
+ const advanceCursor = (0, react_1.useCallback)((res) => {
31
+ cursorRef.current = sort === "asc" ? res.newestCreatedAt : res.oldestCreatedAt;
32
+ }, [sort]);
33
+ const refetch = (0, react_1.useCallback)(async () => {
34
+ if (!conversationId)
35
+ return;
36
+ loadingRef.current = true;
37
+ setLoading(true);
38
+ hasMoreRef.current = true;
39
+ setHasMore(true);
40
+ try {
41
+ const res = await fetchMany({
42
+ conversationId,
43
+ parentId,
44
+ limit,
45
+ sort,
46
+ includeFiles,
47
+ filters,
48
+ });
49
+ setMessages(res.messages);
50
+ hasMoreRef.current = res.hasMore;
51
+ setHasMore(res.hasMore);
52
+ advanceCursor(res);
53
+ }
54
+ catch (err) {
55
+ (0, handleError_1.handleError)(err, "Failed to fetch messages");
56
+ }
57
+ finally {
58
+ loadingRef.current = false;
59
+ setLoading(false);
60
+ }
61
+ // eslint-disable-next-line react-hooks/exhaustive-deps
62
+ }, [fetchMany, conversationId, parentId, limit, sort, includeFiles, filtersKey, advanceCursor]);
63
+ const loadMore = (0, react_1.useCallback)(async () => {
64
+ if (loadingRef.current || !hasMoreRef.current || !cursorRef.current)
65
+ return;
66
+ loadingRef.current = true;
67
+ setLoading(true);
68
+ try {
69
+ const res = await fetchMany({
70
+ conversationId,
71
+ parentId,
72
+ limit,
73
+ sort,
74
+ includeFiles,
75
+ filters,
76
+ ...(sort === "asc"
77
+ ? { after: cursorRef.current }
78
+ : { before: cursorRef.current }),
79
+ });
80
+ setMessages((prev) => [...prev, ...res.messages]);
81
+ hasMoreRef.current = res.hasMore;
82
+ setHasMore(res.hasMore);
83
+ advanceCursor(res);
84
+ }
85
+ catch (err) {
86
+ (0, handleError_1.handleError)(err, "Failed to load more messages");
87
+ }
88
+ finally {
89
+ loadingRef.current = false;
90
+ setLoading(false);
91
+ }
92
+ // eslint-disable-next-line react-hooks/exhaustive-deps
93
+ }, [fetchMany, conversationId, parentId, limit, sort, includeFiles, filtersKey, advanceCursor]);
94
+ (0, react_1.useEffect)(() => {
95
+ refetch();
96
+ }, [refetch]);
97
+ return { messages, loading, hasMore, loadMore, refetch };
98
+ }
99
+ exports.default = useFetchManyChatMessagesWrapper;
100
+ //# sourceMappingURL=useFetchManyChatMessagesWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFetchManyChatMessagesWrapper.js","sourceRoot":"","sources":["../../../../../src/hooks/chat/messages/useFetchManyChatMessagesWrapper.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { ChatMessage } from "../../../interfaces/models/ChatMessage";
2
+ export interface UseLiveChatMessagesProps {
3
+ conversationId: string;
4
+ parentId?: string | null;
5
+ limit?: number;
6
+ includeFiles?: boolean;
7
+ }
8
+ export interface UseLiveChatMessagesValues {
9
+ messages: ChatMessage[];
10
+ loading: boolean;
11
+ hasMore: boolean;
12
+ loadOlder: () => Promise<void>;
13
+ }
14
+ /**
15
+ * Live, store-backed view of a conversation's messages. Reads from the shared
16
+ * Redux bucket that `ChatProvider` keeps in sync via socket events, so new
17
+ * messages, edits, reactions and reply-count changes appear in real time, and
18
+ * state is shared with `useSendMessage` (optimistic inserts), unread tracking
19
+ * and reconnect catch-up.
20
+ *
21
+ * This is the canonical conversation surface. For a read-only / filtered query
22
+ * that should NOT be polluted by live traffic, use
23
+ * `useFetchManyChatMessagesWrapper` instead.
24
+ */
25
+ declare function useLiveChatMessages({ conversationId, parentId, limit, includeFiles, }: UseLiveChatMessagesProps): UseLiveChatMessagesValues;
26
+ export default useLiveChatMessages;
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = require("react");
7
+ const hooks_1 = require("../../../store/hooks");
8
+ const chatSlice_1 = require("../../../store/slices/chatSlice");
9
+ const useProject_1 = __importDefault(require("../../projects/useProject"));
10
+ const handleError_1 = require("../../../utils/handleError");
11
+ const useFetchManyChatMessages_1 = __importDefault(require("./useFetchManyChatMessages"));
12
+ /**
13
+ * Live, store-backed view of a conversation's messages. Reads from the shared
14
+ * Redux bucket that `ChatProvider` keeps in sync via socket events, so new
15
+ * messages, edits, reactions and reply-count changes appear in real time, and
16
+ * state is shared with `useSendMessage` (optimistic inserts), unread tracking
17
+ * and reconnect catch-up.
18
+ *
19
+ * This is the canonical conversation surface. For a read-only / filtered query
20
+ * that should NOT be polluted by live traffic, use
21
+ * `useFetchManyChatMessagesWrapper` instead.
22
+ */
23
+ function useLiveChatMessages({ conversationId, parentId, limit = 50, includeFiles, }) {
24
+ const dispatch = (0, hooks_1.useSublayDispatch)();
25
+ const { projectId } = (0, useProject_1.default)();
26
+ const fetchMany = (0, useFetchManyChatMessages_1.default)();
27
+ const isThread = Boolean(parentId);
28
+ // Read from the correct Redux bucket
29
+ const mainMessages = (0, hooks_1.useSublaySelector)((0, chatSlice_1.selectMessages)(conversationId));
30
+ const mainLoading = (0, hooks_1.useSublaySelector)((0, chatSlice_1.selectMessagesLoading)(conversationId));
31
+ const mainHasMore = (0, hooks_1.useSublaySelector)((0, chatSlice_1.selectMessagesHasMore)(conversationId));
32
+ const threadMessages = (0, hooks_1.useSublaySelector)((0, chatSlice_1.selectThreadReplies)(parentId ?? ""));
33
+ const threadLoading = (0, hooks_1.useSublaySelector)((0, chatSlice_1.selectThreadLoading)(parentId ?? ""));
34
+ const threadHasMore = (0, hooks_1.useSublaySelector)((0, chatSlice_1.selectThreadHasMore)(parentId ?? ""));
35
+ const messages = isThread ? threadMessages : mainMessages;
36
+ const loading = isThread ? threadLoading : mainLoading;
37
+ const hasMore = isThread ? threadHasMore : mainHasMore;
38
+ // Keep fresh refs to message arrays so loadOlder can read cursors without
39
+ // closing over stale state
40
+ const mainMessagesRef = (0, react_1.useRef)(mainMessages);
41
+ mainMessagesRef.current = mainMessages;
42
+ const threadMessagesRef = (0, react_1.useRef)(threadMessages);
43
+ threadMessagesRef.current = threadMessages;
44
+ // Fetch a page of messages.
45
+ // `before` is an ISO 8601 timestamp — the server queries messages created
46
+ // before this point in time (not a UUID cursor).
47
+ const fetchPage = (0, react_1.useCallback)(async (before) => {
48
+ if (!projectId || !conversationId)
49
+ return;
50
+ try {
51
+ const { messages: items, hasMore: more } = await fetchMany({
52
+ conversationId,
53
+ parentId,
54
+ before,
55
+ limit,
56
+ sort: isThread ? "asc" : "desc",
57
+ includeFiles,
58
+ });
59
+ if (isThread) {
60
+ // Thread replies come back ASC — dispatch as-is
61
+ dispatch((0, chatSlice_1.setThreadReplies)({
62
+ parentMessageId: parentId,
63
+ messages: items,
64
+ hasMore: more,
65
+ }));
66
+ }
67
+ else {
68
+ // Main stream comes back DESC (newest first for cursor efficiency).
69
+ // Redux stores messages ASC — reverse before dispatching.
70
+ const ascending = [...items].reverse();
71
+ ascending.forEach((msg) => dispatch((0, chatSlice_1.upsertMessage)(msg)));
72
+ dispatch((0, chatSlice_1.setMessagesHasMore)({ conversationId, hasMore: more }));
73
+ }
74
+ }
75
+ catch (err) {
76
+ (0, handleError_1.handleError)(err, "Failed to load messages");
77
+ }
78
+ }, [projectId, conversationId, parentId, isThread, limit, includeFiles, fetchMany, dispatch]);
79
+ // Initial fetch on mount
80
+ (0, react_1.useEffect)(() => {
81
+ if (!projectId || !conversationId)
82
+ return;
83
+ const initialFetch = async () => {
84
+ if (isThread) {
85
+ dispatch((0, chatSlice_1.setThreadLoading)({ parentMessageId: parentId, loading: true }));
86
+ }
87
+ else {
88
+ dispatch((0, chatSlice_1.setMessagesLoading)({ conversationId, loading: true }));
89
+ }
90
+ await fetchPage(null);
91
+ if (isThread) {
92
+ dispatch((0, chatSlice_1.setThreadLoading)({ parentMessageId: parentId, loading: false }));
93
+ }
94
+ else {
95
+ dispatch((0, chatSlice_1.setMessagesLoading)({ conversationId, loading: false }));
96
+ }
97
+ };
98
+ initialFetch();
99
+ // Only re-run when the conversation/thread identity changes
100
+ // eslint-disable-next-line react-hooks/exhaustive-deps
101
+ }, [projectId, conversationId, parentId]);
102
+ // Load more messages:
103
+ // - Main stream: fetch older messages using `before` cursor (oldest loaded createdAt)
104
+ // - Thread: fetch newer replies using `after` cursor (newest loaded createdAt), append
105
+ const loadOlder = (0, react_1.useCallback)(async () => {
106
+ if (loading || !hasMore)
107
+ return;
108
+ if (isThread) {
109
+ const currentItems = threadMessagesRef.current;
110
+ const newest = currentItems[currentItems.length - 1];
111
+ if (!newest || !parentId || !projectId || !conversationId)
112
+ return;
113
+ const after = new Date(newest.createdAt).toISOString();
114
+ dispatch((0, chatSlice_1.setThreadLoading)({ parentMessageId: parentId, loading: true }));
115
+ try {
116
+ const { messages: newItems, hasMore: more } = await fetchMany({
117
+ conversationId,
118
+ parentId,
119
+ after,
120
+ limit,
121
+ sort: "asc",
122
+ includeFiles,
123
+ });
124
+ dispatch((0, chatSlice_1.setThreadReplies)({
125
+ parentMessageId: parentId,
126
+ messages: [...currentItems, ...newItems],
127
+ hasMore: more,
128
+ }));
129
+ }
130
+ catch (err) {
131
+ (0, handleError_1.handleError)(err, "Failed to load more thread replies");
132
+ }
133
+ finally {
134
+ dispatch((0, chatSlice_1.setThreadLoading)({ parentMessageId: parentId, loading: false }));
135
+ }
136
+ return;
137
+ }
138
+ const oldest = mainMessagesRef.current[0];
139
+ if (!oldest)
140
+ return;
141
+ const before = new Date(oldest.createdAt).toISOString();
142
+ dispatch((0, chatSlice_1.setMessagesLoading)({ conversationId, loading: true }));
143
+ await fetchPage(before);
144
+ dispatch((0, chatSlice_1.setMessagesLoading)({ conversationId, loading: false }));
145
+ }, [loading, hasMore, isThread, parentId, projectId, conversationId, limit, includeFiles, fetchMany, dispatch, fetchPage]);
146
+ return { messages, loading, hasMore, loadOlder };
147
+ }
148
+ exports.default = useLiveChatMessages;
149
+ //# sourceMappingURL=useLiveChatMessages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLiveChatMessages.js","sourceRoot":"","sources":["../../../../../src/hooks/chat/messages/useLiveChatMessages.tsx"],"names":[],"mappings":"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"}
@@ -3,10 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const useChatMessages_1 = __importDefault(require("./useChatMessages"));
6
+ const useLiveChatMessages_1 = __importDefault(require("./useLiveChatMessages"));
7
7
  const useSendMessage_1 = __importDefault(require("./useSendMessage"));
8
8
  function useMessageThread({ conversationId, messageId, }) {
9
- const { messages, loading, hasMore, loadOlder } = (0, useChatMessages_1.default)({
9
+ const { messages, loading, hasMore, loadOlder } = (0, useLiveChatMessages_1.default)({
10
10
  conversationId,
11
11
  parentId: messageId,
12
12
  });
@@ -1 +1 @@
1
- {"version":3,"file":"useMessageThread.js","sourceRoot":"","sources":["../../../../../src/hooks/chat/messages/useMessageThread.tsx"],"names":[],"mappings":";;;;;AACA,wEAAgD;AAChD,sEAAqE;AAerE,SAAS,gBAAgB,CAAC,EACxB,cAAc,EACd,SAAS,GACa;IACtB,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAA,yBAAe,EAAC;QAChE,cAAc;QACd,QAAQ,EAAE,SAAS;KACpB,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,IAAA,wBAAc,EAAC,EAAE,cAAc,EAAE,CAAC,CAAC;IAEhD,MAAM,SAAS,GAAG,CAAC,MAAkD,EAAE,EAAE,CACvE,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,CAAC;IAElD,OAAO;QACL,OAAO,EAAE,QAAQ;QACjB,OAAO;QACP,OAAO;QACP,QAAQ,EAAE,SAAS;QACnB,SAAS;KACV,CAAC;AACJ,CAAC;AAED,kBAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"useMessageThread.js","sourceRoot":"","sources":["../../../../../src/hooks/chat/messages/useMessageThread.tsx"],"names":[],"mappings":";;;;;AACA,gFAAwD;AACxD,sEAAqE;AAerE,SAAS,gBAAgB,CAAC,EACxB,cAAc,EACd,SAAS,GACa;IACtB,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAA,6BAAmB,EAAC;QACpE,cAAc;QACd,QAAQ,EAAE,SAAS;KACpB,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,IAAA,wBAAc,EAAC,EAAE,cAAc,EAAE,CAAC,CAAC;IAEhD,MAAM,SAAS,GAAG,CAAC,MAAkD,EAAE,EAAE,CACvE,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,CAAC;IAElD,OAAO;QACL,OAAO,EAAE,QAAQ;QACjB,OAAO;QACP,OAAO;QACP,QAAQ,EAAE,SAAS;QACnB,SAAS;KACV,CAAC;AACJ,CAAC;AAED,kBAAe,gBAAgB,CAAC"}
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const useChatMessages_1 = __importDefault(require("./messages/useChatMessages"));
6
+ const useLiveChatMessages_1 = __importDefault(require("./messages/useLiveChatMessages"));
7
7
  const useSendMessage_1 = __importDefault(require("./messages/useSendMessage"));
8
8
  const useConversationMembers_1 = __importDefault(require("./conversations/useConversationMembers"));
9
9
  const useMarkConversationAsRead_1 = __importDefault(require("./useMarkConversationAsRead"));
@@ -13,7 +13,7 @@ const useTypingIndicator_1 = __importDefault(require("./useTypingIndicator"));
13
13
  * Combines messages, send, members, read-state, and typing indicators into one object.
14
14
  */
15
15
  function useConversationData({ conversationId, }) {
16
- const { messages, loading: messagesLoading, hasMore, loadOlder } = (0, useChatMessages_1.default)({
16
+ const { messages, loading: messagesLoading, hasMore, loadOlder } = (0, useLiveChatMessages_1.default)({
17
17
  conversationId,
18
18
  });
19
19
  const send = (0, useSendMessage_1.default)({ conversationId });
@@ -1 +1 @@
1
- {"version":3,"file":"useConversationData.js","sourceRoot":"","sources":["../../../../src/hooks/chat/useConversationData.tsx"],"names":[],"mappings":";;;;;AAAA,iFAAyD;AACzD,+EAAuD;AAEvD,oGAEgD;AAChD,4FAAoE;AACpE,8EAAsD;AAoCtD;;;GAGG;AACH,SAAS,mBAAmB,CAAC,EAC3B,cAAc,GACW;IACzB,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAA,yBAAe,EAAC;QACjF,cAAc;KACf,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,IAAA,wBAAc,EAAC,EAAE,cAAc,EAAE,CAAC,CAAC;IAEhD,MAAM,EACJ,OAAO,EACP,OAAO,EAAE,cAAc,EACvB,SAAS,EACT,YAAY,EACZ,KAAK,EACL,UAAU,EACV,YAAY,EACZ,mBAAmB,GACpB,GAAG,IAAA,gCAAsB,EAAC,EAAE,cAAc,EAAE,CAAC,CAAC;IAE/C,MAAM,IAAI,GAAG,IAAA,mCAAyB,EAAC,EAAE,cAAc,EAAE,CAAC,CAAC;IAE3D,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,IAAA,4BAAkB,EAAC;QAClE,cAAc;KACf,CAAC,CAAC;IAEH,OAAO;QACL,QAAQ;QACR,eAAe;QACf,OAAO;QACP,SAAS;QACT,IAAI;QACJ,OAAO;QACP,cAAc;QACd,SAAS;QACT,YAAY;QACZ,KAAK;QACL,UAAU;QACV,YAAY;QACZ,mBAAmB;QACnB,IAAI;QACJ,WAAW;QACX,WAAW;QACX,UAAU;KACX,CAAC;AACJ,CAAC;AAED,kBAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"useConversationData.js","sourceRoot":"","sources":["../../../../src/hooks/chat/useConversationData.tsx"],"names":[],"mappings":";;;;;AAAA,yFAAiE;AACjE,+EAAuD;AAEvD,oGAEgD;AAChD,4FAAoE;AACpE,8EAAsD;AAoCtD;;;GAGG;AACH,SAAS,mBAAmB,CAAC,EAC3B,cAAc,GACW;IACzB,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAA,6BAAmB,EAAC;QACrF,cAAc;KACf,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,IAAA,wBAAc,EAAC,EAAE,cAAc,EAAE,CAAC,CAAC;IAEhD,MAAM,EACJ,OAAO,EACP,OAAO,EAAE,cAAc,EACvB,SAAS,EACT,YAAY,EACZ,KAAK,EACL,UAAU,EACV,YAAY,EACZ,mBAAmB,GACpB,GAAG,IAAA,gCAAsB,EAAC,EAAE,cAAc,EAAE,CAAC,CAAC;IAE/C,MAAM,IAAI,GAAG,IAAA,mCAAyB,EAAC,EAAE,cAAc,EAAE,CAAC,CAAC;IAE3D,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,IAAA,4BAAkB,EAAC;QAClE,cAAc;KACf,CAAC,CAAC;IAEH,OAAO;QACL,QAAQ;QACR,eAAe;QACf,OAAO;QACP,SAAS;QACT,IAAI;QACJ,OAAO;QACP,cAAc;QACd,SAAS;QACT,YAAY;QACZ,KAAK;QACL,UAAU;QACV,YAAY;QACZ,mBAAmB;QACnB,IAAI;QACJ,WAAW;QACX,WAAW;QACX,UAAU;KACX,CAAC;AACJ,CAAC;AAED,kBAAe,mBAAmB,CAAC"}
@@ -29,6 +29,8 @@ export { default as useFetchSpaceTeam } from "./useFetchSpaceTeam";
29
29
  export type { FetchSpaceTeamProps } from "./useFetchSpaceTeam";
30
30
  export { default as useFetchUserSpaces } from "./useFetchUserSpaces";
31
31
  export type { FetchUserSpacesProps } from "./useFetchUserSpaces";
32
+ export { default as useFetchMutualSpaces } from "./useFetchMutualSpaces";
33
+ export type { FetchMutualSpacesProps } from "./useFetchMutualSpaces";
32
34
  export { default as useCheckMyMembership } from "./useCheckMyMembership";
33
35
  export type { CheckMyMembershipProps } from "./useCheckMyMembership";
34
36
  export { default as useUpdateMemberRole } from "./useUpdateMemberRole";
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.useReorderRules = exports.useFetchManyRules = exports.useFetchRule = exports.useDeleteRule = exports.useUpdateRule = exports.useCreateRule = exports.useUpdateDigestConfig = exports.useFetchDigestConfig = exports.useCheckSlugAvailability = exports.useSpacePermissions = exports.useSpaceMentions = exports.useModerateSpaceComment = exports.useModerateSpaceEntity = exports.useUnbanMember = exports.useRemoveMember = exports.useDeclineMember = exports.useApproveMember = exports.useUpdateMemberRole = exports.useCheckMyMembership = exports.useFetchUserSpaces = exports.useFetchSpaceTeam = exports.useFetchSpaceMembers = exports.useLeaveSpace = exports.useJoinSpace = exports.useDeleteSpace = exports.useUpdateSpace = exports.useCreateSpace = exports.useFetchManySpaces = exports.useFetchSpaceChildren = exports.useFetchSpaceBreadcrumb = exports.useFetchSpaceBySlug = exports.useFetchSpaceByShortId = exports.useFetchSpace = exports.useSpaceData = exports.useSpace = void 0;
6
+ exports.useReorderRules = exports.useFetchManyRules = exports.useFetchRule = exports.useDeleteRule = exports.useUpdateRule = exports.useCreateRule = exports.useUpdateDigestConfig = exports.useFetchDigestConfig = exports.useCheckSlugAvailability = exports.useSpacePermissions = exports.useSpaceMentions = exports.useModerateSpaceComment = exports.useModerateSpaceEntity = exports.useUnbanMember = exports.useRemoveMember = exports.useDeclineMember = exports.useApproveMember = exports.useUpdateMemberRole = exports.useCheckMyMembership = exports.useFetchMutualSpaces = exports.useFetchUserSpaces = exports.useFetchSpaceTeam = exports.useFetchSpaceMembers = exports.useLeaveSpace = exports.useJoinSpace = exports.useDeleteSpace = exports.useUpdateSpace = exports.useCreateSpace = exports.useFetchManySpaces = exports.useFetchSpaceChildren = exports.useFetchSpaceBreadcrumb = exports.useFetchSpaceBySlug = exports.useFetchSpaceByShortId = exports.useFetchSpace = exports.useSpaceData = exports.useSpace = void 0;
7
7
  // Single space hooks
8
8
  var useSpace_1 = require("./useSpace");
9
9
  Object.defineProperty(exports, "useSpace", { enumerable: true, get: function () { return __importDefault(useSpace_1).default; } });
@@ -40,6 +40,8 @@ var useFetchSpaceTeam_1 = require("./useFetchSpaceTeam");
40
40
  Object.defineProperty(exports, "useFetchSpaceTeam", { enumerable: true, get: function () { return __importDefault(useFetchSpaceTeam_1).default; } });
41
41
  var useFetchUserSpaces_1 = require("./useFetchUserSpaces");
42
42
  Object.defineProperty(exports, "useFetchUserSpaces", { enumerable: true, get: function () { return __importDefault(useFetchUserSpaces_1).default; } });
43
+ var useFetchMutualSpaces_1 = require("./useFetchMutualSpaces");
44
+ Object.defineProperty(exports, "useFetchMutualSpaces", { enumerable: true, get: function () { return __importDefault(useFetchMutualSpaces_1).default; } });
43
45
  var useCheckMyMembership_1 = require("./useCheckMyMembership");
44
46
  Object.defineProperty(exports, "useCheckMyMembership", { enumerable: true, get: function () { return __importDefault(useCheckMyMembership_1).default; } });
45
47
  // Member management hooks
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/hooks/spaces/index.ts"],"names":[],"mappings":";;;;;;AAAA,qBAAqB;AACrB,uCAAiD;AAAxC,qHAAA,OAAO,OAAY;AAC5B,+CAAyD;AAAhD,6HAAA,OAAO,OAAgB;AAGhC,cAAc;AACd,iDAA2D;AAAlD,+HAAA,OAAO,OAAiB;AAEjC,mEAA6E;AAApE,iJAAA,OAAO,OAA0B;AAE1C,6DAAuE;AAA9D,2IAAA,OAAO,OAAuB;AAEvC,qEAA+E;AAAtE,mJAAA,OAAO,OAA2B;AAE3C,iEAA2E;AAAlE,+IAAA,OAAO,OAAyB;AAEzC,2DAAqE;AAA5D,yIAAA,OAAO,OAAsB;AAGtC,aAAa;AACb,mDAA6D;AAApD,iIAAA,OAAO,OAAkB;AAElC,mDAA6D;AAApD,iIAAA,OAAO,OAAkB;AAElC,mDAA6D;AAApD,iIAAA,OAAO,OAAkB;AAGlC,mBAAmB;AACnB,+CAAyD;AAAhD,6HAAA,OAAO,OAAgB;AAEhC,iDAA2D;AAAlD,+HAAA,OAAO,OAAiB;AAEjC,+DAAyE;AAAhE,6IAAA,OAAO,OAAwB;AAExC,yDAAmE;AAA1D,uIAAA,OAAO,OAAqB;AAErC,2DAAqE;AAA5D,yIAAA,OAAO,OAAsB;AAEtC,+DAAyE;AAAhE,6IAAA,OAAO,OAAwB;AAGxC,0BAA0B;AAC1B,6DAAuE;AAA9D,2IAAA,OAAO,OAAuB;AAEvC,uDAAiE;AAAxD,qIAAA,OAAO,OAAoB;AAEpC,uDAAiE;AAAxD,qIAAA,OAAO,OAAoB;AAEpC,qDAA+D;AAAtD,mIAAA,OAAO,OAAmB;AAEnC,mDAA6D;AAApD,iIAAA,OAAO,OAAkB;AAGlC,mBAAmB;AACnB,mEAA6E;AAApE,iJAAA,OAAO,OAA0B;AAE1C,qEAA+E;AAAtE,mJAAA,OAAO,OAA2B;AAG3C,gBAAgB;AAChB,uDAAiE;AAAxD,qIAAA,OAAO,OAAoB;AAMpC,eAAe;AACf,6DAAuE;AAA9D,2IAAA,OAAO,OAAuB;AAKvC,uEAAiF;AAAxE,qJAAA,OAAO,OAA4B;AAG5C,sBAAsB;AACtB,+DAAyE;AAAhE,6IAAA,OAAO,OAAwB;AAExC,iEAA2E;AAAlE,+IAAA,OAAO,OAAyB;AAGzC,wBAAwB;AACxB,iCAOiB;AANf,sGAAA,aAAa,OAAA;AACb,sGAAA,aAAa,OAAA;AACb,sGAAA,aAAa,OAAA;AACb,qGAAA,YAAY,OAAA;AACZ,0GAAA,iBAAiB,OAAA;AACjB,wGAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/hooks/spaces/index.ts"],"names":[],"mappings":";;;;;;AAAA,qBAAqB;AACrB,uCAAiD;AAAxC,qHAAA,OAAO,OAAY;AAC5B,+CAAyD;AAAhD,6HAAA,OAAO,OAAgB;AAGhC,cAAc;AACd,iDAA2D;AAAlD,+HAAA,OAAO,OAAiB;AAEjC,mEAA6E;AAApE,iJAAA,OAAO,OAA0B;AAE1C,6DAAuE;AAA9D,2IAAA,OAAO,OAAuB;AAEvC,qEAA+E;AAAtE,mJAAA,OAAO,OAA2B;AAE3C,iEAA2E;AAAlE,+IAAA,OAAO,OAAyB;AAEzC,2DAAqE;AAA5D,yIAAA,OAAO,OAAsB;AAGtC,aAAa;AACb,mDAA6D;AAApD,iIAAA,OAAO,OAAkB;AAElC,mDAA6D;AAApD,iIAAA,OAAO,OAAkB;AAElC,mDAA6D;AAApD,iIAAA,OAAO,OAAkB;AAGlC,mBAAmB;AACnB,+CAAyD;AAAhD,6HAAA,OAAO,OAAgB;AAEhC,iDAA2D;AAAlD,+HAAA,OAAO,OAAiB;AAEjC,+DAAyE;AAAhE,6IAAA,OAAO,OAAwB;AAExC,yDAAmE;AAA1D,uIAAA,OAAO,OAAqB;AAErC,2DAAqE;AAA5D,yIAAA,OAAO,OAAsB;AAEtC,+DAAyE;AAAhE,6IAAA,OAAO,OAAwB;AAExC,+DAAyE;AAAhE,6IAAA,OAAO,OAAwB;AAGxC,0BAA0B;AAC1B,6DAAuE;AAA9D,2IAAA,OAAO,OAAuB;AAEvC,uDAAiE;AAAxD,qIAAA,OAAO,OAAoB;AAEpC,uDAAiE;AAAxD,qIAAA,OAAO,OAAoB;AAEpC,qDAA+D;AAAtD,mIAAA,OAAO,OAAmB;AAEnC,mDAA6D;AAApD,iIAAA,OAAO,OAAkB;AAGlC,mBAAmB;AACnB,mEAA6E;AAApE,iJAAA,OAAO,OAA0B;AAE1C,qEAA+E;AAAtE,mJAAA,OAAO,OAA2B;AAG3C,gBAAgB;AAChB,uDAAiE;AAAxD,qIAAA,OAAO,OAAoB;AAMpC,eAAe;AACf,6DAAuE;AAA9D,2IAAA,OAAO,OAAuB;AAKvC,uEAAiF;AAAxE,qJAAA,OAAO,OAA4B;AAG5C,sBAAsB;AACtB,+DAAyE;AAAhE,6IAAA,OAAO,OAAwB;AAExC,iEAA2E;AAAlE,+IAAA,OAAO,OAAyB;AAGzC,wBAAwB;AACxB,iCAOiB;AANf,sGAAA,aAAa,OAAA;AACb,sGAAA,aAAa,OAAA;AACb,sGAAA,aAAa,OAAA;AACb,qGAAA,YAAY,OAAA;AACZ,0GAAA,iBAAiB,OAAA;AACjB,wGAAA,eAAe,OAAA"}
@@ -0,0 +1,11 @@
1
+ import { Space, SpaceIncludeParam } from "../../interfaces/models/Space";
2
+ import { PaginatedResponse } from "../../interfaces/PaginatedResponse";
3
+ export interface FetchMutualSpacesProps {
4
+ /** The OTHER user — spaces shared with this user are returned. */
5
+ userId: string;
6
+ page?: number;
7
+ limit?: number;
8
+ include?: SpaceIncludeParam;
9
+ }
10
+ declare function useFetchMutualSpaces(): (params: FetchMutualSpacesProps) => Promise<PaginatedResponse<Space>>;
11
+ export default useFetchMutualSpaces;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = require("react");
7
+ const useProject_1 = __importDefault(require("../projects/useProject"));
8
+ const useAxiosPrivate_1 = __importDefault(require("../../config/useAxiosPrivate"));
9
+ function useFetchMutualSpaces() {
10
+ const { projectId } = (0, useProject_1.default)();
11
+ const axios = (0, useAxiosPrivate_1.default)();
12
+ const fetchMutualSpaces = (0, react_1.useCallback)(async (params) => {
13
+ if (!projectId) {
14
+ throw new Error("No projectId available.");
15
+ }
16
+ const { userId, include, ...rest } = params;
17
+ const response = await axios.get(`/${projectId}/spaces/mutual/${userId}`, {
18
+ params: {
19
+ ...rest,
20
+ include: Array.isArray(include) ? include.join(",") : include,
21
+ },
22
+ });
23
+ return response.data;
24
+ }, [projectId, axios]);
25
+ return fetchMutualSpaces;
26
+ }
27
+ exports.default = useFetchMutualSpaces;
28
+ //# sourceMappingURL=useFetchMutualSpaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFetchMutualSpaces.js","sourceRoot":"","sources":["../../../../src/hooks/spaces/useFetchMutualSpaces.tsx"],"names":[],"mappings":";;;;;AAAA,iCAAoC;AACpC,wEAAgD;AAChD,mFAA2D;AAY3D,SAAS,oBAAoB;IAG3B,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,oBAAU,GAAE,CAAC;IACnC,MAAM,KAAK,GAAG,IAAA,yBAAe,GAAE,CAAC;IAEhC,MAAM,iBAAiB,GAAG,IAAA,mBAAW,EACnC,KAAK,EAAE,MAA8B,EAAE,EAAE;QACvC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;QAE5C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAC9B,IAAI,SAAS,kBAAkB,MAAM,EAAE,EACvC;YACE,MAAM,EAAE;gBACN,GAAG,IAAI;gBACP,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO;aAC9D;SACF,CACF,CAAC;QAEF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC,EACD,CAAC,SAAS,EAAE,KAAK,CAAC,CACnB,CAAC;IAEF,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,kBAAe,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { useTable, default } from "./useTable";
2
+ export type { UseTableOptions, UseTableValues } from "./useTable";
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = exports.useTable = void 0;
7
+ var useTable_1 = require("./useTable");
8
+ Object.defineProperty(exports, "useTable", { enumerable: true, get: function () { return useTable_1.useTable; } });
9
+ Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(useTable_1).default; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/hooks/tables/index.ts"],"names":[],"mappings":";;;;;;AAAA,uCAA+C;AAAtC,oGAAA,QAAQ,OAAA;AAAE,oHAAA,OAAO,OAAA"}
@@ -0,0 +1,37 @@
1
+ import type { PaginationMetadata } from "../../interfaces/PaginatedResponse";
2
+ import type { DbFilter, TableRow } from "../../interfaces/models/Table";
3
+ import { type TableViewState } from "../../store/slices/tablesSlice";
4
+ export type UseTableOptions = Partial<TableViewState>;
5
+ export interface UseTableValues<T extends TableRow = TableRow> {
6
+ rows: T[];
7
+ pagination: PaginationMetadata | null;
8
+ loading: boolean;
9
+ error: unknown;
10
+ refetch: () => void;
11
+ view: TableViewState;
12
+ setView: (view: Partial<TableViewState>) => void;
13
+ setPage: (page: number) => void;
14
+ setFilters: (filters: DbFilter[]) => void;
15
+ setSort: (sortBy: string | undefined, sortDir?: "asc" | "desc") => void;
16
+ setIncludeDeleted: (includeDeleted: boolean) => void;
17
+ createRow: (data: Record<string, unknown>) => Promise<T>;
18
+ updateRow: (rowId: string, data: Record<string, unknown>) => Promise<T>;
19
+ deleteRow: (rowId: string, opts?: {
20
+ force?: boolean;
21
+ }) => Promise<{
22
+ deleted: boolean;
23
+ soft: boolean;
24
+ }>;
25
+ restoreRow: (rowId: string) => Promise<T>;
26
+ }
27
+ /**
28
+ * React hook for a custom table's rows, backed by RTK Query against the `/db`
29
+ * surface. Returns rows + loading/refetch state plus CRUD actions. The query
30
+ * knobs (page/limit/sort/filters/includeDeleted) live in the `tables` slice so
31
+ * multiple consumers of the same table share one view.
32
+ *
33
+ * Core is hook-only — `@sublay/core` has no imperative client object (React
34
+ * hooks + Redux only), so this hook is the custom-table surface.
35
+ */
36
+ export declare function useTable<T extends TableRow = TableRow>(tableName: string, options?: UseTableOptions): UseTableValues<T>;
37
+ export default useTable;
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.useTable = useTable;
7
+ const react_1 = require("react");
8
+ const hooks_1 = require("../../store/hooks");
9
+ const useProject_1 = __importDefault(require("../projects/useProject"));
10
+ const tablesSlice_1 = require("../../store/slices/tablesSlice");
11
+ const tablesApi_1 = require("../../store/api/tablesApi");
12
+ const DEFAULT_VIEW = {
13
+ page: 1,
14
+ limit: 20,
15
+ sortBy: undefined,
16
+ sortDir: undefined,
17
+ filters: [],
18
+ includeDeleted: false,
19
+ };
20
+ /**
21
+ * React hook for a custom table's rows, backed by RTK Query against the `/db`
22
+ * surface. Returns rows + loading/refetch state plus CRUD actions. The query
23
+ * knobs (page/limit/sort/filters/includeDeleted) live in the `tables` slice so
24
+ * multiple consumers of the same table share one view.
25
+ *
26
+ * Core is hook-only — `@sublay/core` has no imperative client object (React
27
+ * hooks + Redux only), so this hook is the custom-table surface.
28
+ */
29
+ function useTable(tableName, options = {}) {
30
+ const dispatch = (0, hooks_1.useSublayDispatch)();
31
+ const { projectId } = (0, useProject_1.default)();
32
+ const storedView = (0, hooks_1.useSublaySelector)((state) => (0, tablesSlice_1.selectTableView)(state, tableName));
33
+ const view = storedView ?? { ...DEFAULT_VIEW, ...options };
34
+ // Seed the slice view once (idempotent — initializeTableView no-ops if set).
35
+ (0, react_1.useEffect)(() => {
36
+ dispatch((0, tablesSlice_1.initializeTableView)({ tableName, view: options }));
37
+ // eslint-disable-next-line react-hooks/exhaustive-deps
38
+ }, [tableName]);
39
+ const { data, isLoading, error, refetch } = (0, tablesApi_1.useFetchTableRowsQuery)({
40
+ projectId: projectId,
41
+ tableName,
42
+ page: view.page,
43
+ limit: view.limit,
44
+ sortBy: view.sortBy,
45
+ sortDir: view.sortDir,
46
+ filters: view.filters,
47
+ includeDeleted: view.includeDeleted,
48
+ }, { skip: !projectId });
49
+ const [createRowMutation] = (0, tablesApi_1.useCreateRowMutation)();
50
+ const [updateRowMutation] = (0, tablesApi_1.useUpdateRowMutation)();
51
+ const [deleteRowMutation] = (0, tablesApi_1.useDeleteRowMutation)();
52
+ const [restoreRowMutation] = (0, tablesApi_1.useRestoreRowMutation)();
53
+ const update = (0, react_1.useCallback)((next) => dispatch((0, tablesSlice_1.setTableView)({ tableName, view: next })), [dispatch, tableName]);
54
+ const createRow = (0, react_1.useCallback)(async (rowData) => {
55
+ const res = await createRowMutation({
56
+ projectId: projectId,
57
+ tableName,
58
+ data: rowData,
59
+ }).unwrap();
60
+ return res.row;
61
+ }, [createRowMutation, projectId, tableName]);
62
+ const updateRow = (0, react_1.useCallback)(async (rowId, rowData) => {
63
+ const res = await updateRowMutation({
64
+ projectId: projectId,
65
+ tableName,
66
+ rowId,
67
+ data: rowData,
68
+ }).unwrap();
69
+ return res.row;
70
+ }, [updateRowMutation, projectId, tableName]);
71
+ const deleteRow = (0, react_1.useCallback)(async (rowId, opts) => deleteRowMutation({
72
+ projectId: projectId,
73
+ tableName,
74
+ rowId,
75
+ force: opts?.force,
76
+ }).unwrap(), [deleteRowMutation, projectId, tableName]);
77
+ const restoreRow = (0, react_1.useCallback)(async (rowId) => {
78
+ const res = await restoreRowMutation({
79
+ projectId: projectId,
80
+ tableName,
81
+ rowId,
82
+ }).unwrap();
83
+ return res.row;
84
+ }, [restoreRowMutation, projectId, tableName]);
85
+ return (0, react_1.useMemo)(() => ({
86
+ rows: data?.data ?? [],
87
+ pagination: data?.pagination ?? null,
88
+ loading: isLoading,
89
+ error,
90
+ refetch,
91
+ view,
92
+ setView: update,
93
+ setPage: (page) => update({ page }),
94
+ setFilters: (filters) => update({ filters, page: 1 }),
95
+ setSort: (sortBy, sortDir) => update({ sortBy, sortDir, page: 1 }),
96
+ setIncludeDeleted: (includeDeleted) => update({ includeDeleted, page: 1 }),
97
+ createRow,
98
+ updateRow,
99
+ deleteRow,
100
+ restoreRow,
101
+ }), [
102
+ data,
103
+ isLoading,
104
+ error,
105
+ refetch,
106
+ view,
107
+ update,
108
+ createRow,
109
+ updateRow,
110
+ deleteRow,
111
+ restoreRow,
112
+ ]);
113
+ }
114
+ exports.default = useTable;
115
+ //# sourceMappingURL=useTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTable.js","sourceRoot":"","sources":["../../../../src/hooks/tables/useTable.ts"],"names":[],"mappings":"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"}