hazo_chat 1.1.0 → 2.0.2

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 (135) hide show
  1. package/README.md +161 -152
  2. package/SETUP_CHECKLIST.md +191 -587
  3. package/package.json +17 -7
  4. package/dist/components/hazo_chat/hazo_chat.d.ts +0 -16
  5. package/dist/components/hazo_chat/hazo_chat.d.ts.map +0 -1
  6. package/dist/components/hazo_chat/hazo_chat.js +0 -155
  7. package/dist/components/hazo_chat/hazo_chat.js.map +0 -1
  8. package/dist/components/hazo_chat/hazo_chat_attachment_preview.d.ts +0 -17
  9. package/dist/components/hazo_chat/hazo_chat_attachment_preview.d.ts.map +0 -1
  10. package/dist/components/hazo_chat/hazo_chat_attachment_preview.js +0 -60
  11. package/dist/components/hazo_chat/hazo_chat_attachment_preview.js.map +0 -1
  12. package/dist/components/hazo_chat/hazo_chat_context.d.ts +0 -36
  13. package/dist/components/hazo_chat/hazo_chat_context.d.ts.map +0 -1
  14. package/dist/components/hazo_chat/hazo_chat_context.js +0 -249
  15. package/dist/components/hazo_chat/hazo_chat_context.js.map +0 -1
  16. package/dist/components/hazo_chat/hazo_chat_document_viewer.d.ts +0 -15
  17. package/dist/components/hazo_chat/hazo_chat_document_viewer.d.ts.map +0 -1
  18. package/dist/components/hazo_chat/hazo_chat_document_viewer.js +0 -111
  19. package/dist/components/hazo_chat/hazo_chat_document_viewer.js.map +0 -1
  20. package/dist/components/hazo_chat/hazo_chat_header.d.ts +0 -16
  21. package/dist/components/hazo_chat/hazo_chat_header.d.ts.map +0 -1
  22. package/dist/components/hazo_chat/hazo_chat_header.js +0 -24
  23. package/dist/components/hazo_chat/hazo_chat_header.js.map +0 -1
  24. package/dist/components/hazo_chat/hazo_chat_input.d.ts +0 -18
  25. package/dist/components/hazo_chat/hazo_chat_input.d.ts.map +0 -1
  26. package/dist/components/hazo_chat/hazo_chat_input.js +0 -134
  27. package/dist/components/hazo_chat/hazo_chat_input.js.map +0 -1
  28. package/dist/components/hazo_chat/hazo_chat_messages.d.ts +0 -17
  29. package/dist/components/hazo_chat/hazo_chat_messages.d.ts.map +0 -1
  30. package/dist/components/hazo_chat/hazo_chat_messages.js +0 -109
  31. package/dist/components/hazo_chat/hazo_chat_messages.js.map +0 -1
  32. package/dist/components/hazo_chat/hazo_chat_reference_list.d.ts +0 -16
  33. package/dist/components/hazo_chat/hazo_chat_reference_list.d.ts.map +0 -1
  34. package/dist/components/hazo_chat/hazo_chat_reference_list.js +0 -59
  35. package/dist/components/hazo_chat/hazo_chat_reference_list.js.map +0 -1
  36. package/dist/components/hazo_chat/hazo_chat_sidebar.d.ts +0 -18
  37. package/dist/components/hazo_chat/hazo_chat_sidebar.d.ts.map +0 -1
  38. package/dist/components/hazo_chat/hazo_chat_sidebar.js +0 -72
  39. package/dist/components/hazo_chat/hazo_chat_sidebar.js.map +0 -1
  40. package/dist/components/hazo_chat/index.d.ts +0 -16
  41. package/dist/components/hazo_chat/index.d.ts.map +0 -1
  42. package/dist/components/hazo_chat/index.js +0 -19
  43. package/dist/components/hazo_chat/index.js.map +0 -1
  44. package/dist/components/index.d.ts +0 -9
  45. package/dist/components/index.d.ts.map +0 -1
  46. package/dist/components/index.js +0 -11
  47. package/dist/components/index.js.map +0 -1
  48. package/dist/components/ui/avatar.d.ts +0 -13
  49. package/dist/components/ui/avatar.d.ts.map +0 -1
  50. package/dist/components/ui/avatar.js +0 -28
  51. package/dist/components/ui/avatar.js.map +0 -1
  52. package/dist/components/ui/badge.d.ts +0 -16
  53. package/dist/components/ui/badge.d.ts.map +0 -1
  54. package/dist/components/ui/badge.js +0 -36
  55. package/dist/components/ui/badge.js.map +0 -1
  56. package/dist/components/ui/button.d.ts +0 -18
  57. package/dist/components/ui/button.d.ts.map +0 -1
  58. package/dist/components/ui/button.js +0 -47
  59. package/dist/components/ui/button.js.map +0 -1
  60. package/dist/components/ui/chat_bubble.d.ts +0 -19
  61. package/dist/components/ui/chat_bubble.d.ts.map +0 -1
  62. package/dist/components/ui/chat_bubble.js +0 -101
  63. package/dist/components/ui/chat_bubble.js.map +0 -1
  64. package/dist/components/ui/index.d.ts +0 -18
  65. package/dist/components/ui/index.d.ts.map +0 -1
  66. package/dist/components/ui/index.js +0 -20
  67. package/dist/components/ui/index.js.map +0 -1
  68. package/dist/components/ui/input.d.ts +0 -11
  69. package/dist/components/ui/input.d.ts.map +0 -1
  70. package/dist/components/ui/input.js +0 -18
  71. package/dist/components/ui/input.js.map +0 -1
  72. package/dist/components/ui/loading_skeleton.d.ts +0 -19
  73. package/dist/components/ui/loading_skeleton.d.ts.map +0 -1
  74. package/dist/components/ui/loading_skeleton.js +0 -30
  75. package/dist/components/ui/loading_skeleton.js.map +0 -1
  76. package/dist/components/ui/scroll-area.d.ts +0 -12
  77. package/dist/components/ui/scroll-area.d.ts.map +0 -1
  78. package/dist/components/ui/scroll-area.js +0 -25
  79. package/dist/components/ui/scroll-area.js.map +0 -1
  80. package/dist/components/ui/separator.d.ts +0 -11
  81. package/dist/components/ui/separator.d.ts.map +0 -1
  82. package/dist/components/ui/separator.js +0 -18
  83. package/dist/components/ui/separator.js.map +0 -1
  84. package/dist/components/ui/skeleton.d.ts +0 -9
  85. package/dist/components/ui/skeleton.d.ts.map +0 -1
  86. package/dist/components/ui/skeleton.js +0 -16
  87. package/dist/components/ui/skeleton.js.map +0 -1
  88. package/dist/components/ui/textarea.d.ts +0 -11
  89. package/dist/components/ui/textarea.d.ts.map +0 -1
  90. package/dist/components/ui/textarea.js +0 -18
  91. package/dist/components/ui/textarea.js.map +0 -1
  92. package/dist/components/ui/tooltip.d.ts +0 -14
  93. package/dist/components/ui/tooltip.d.ts.map +0 -1
  94. package/dist/components/ui/tooltip.js +0 -30
  95. package/dist/components/ui/tooltip.js.map +0 -1
  96. package/dist/hooks/index.d.ts +0 -10
  97. package/dist/hooks/index.d.ts.map +0 -1
  98. package/dist/hooks/index.js +0 -10
  99. package/dist/hooks/index.js.map +0 -1
  100. package/dist/hooks/use_chat_messages.d.ts +0 -25
  101. package/dist/hooks/use_chat_messages.d.ts.map +0 -1
  102. package/dist/hooks/use_chat_messages.js +0 -430
  103. package/dist/hooks/use_chat_messages.js.map +0 -1
  104. package/dist/hooks/use_chat_references.d.ts +0 -17
  105. package/dist/hooks/use_chat_references.d.ts.map +0 -1
  106. package/dist/hooks/use_chat_references.js +0 -133
  107. package/dist/hooks/use_chat_references.js.map +0 -1
  108. package/dist/hooks/use_file_upload.d.ts +0 -23
  109. package/dist/hooks/use_file_upload.d.ts.map +0 -1
  110. package/dist/hooks/use_file_upload.js +0 -212
  111. package/dist/hooks/use_file_upload.js.map +0 -1
  112. package/dist/index.d.ts +0 -13
  113. package/dist/index.d.ts.map +0 -1
  114. package/dist/index.js +0 -17
  115. package/dist/index.js.map +0 -1
  116. package/dist/lib/config.d.ts +0 -41
  117. package/dist/lib/config.d.ts.map +0 -1
  118. package/dist/lib/config.js +0 -93
  119. package/dist/lib/config.js.map +0 -1
  120. package/dist/lib/constants.d.ts +0 -39
  121. package/dist/lib/constants.d.ts.map +0 -1
  122. package/dist/lib/constants.js +0 -70
  123. package/dist/lib/constants.js.map +0 -1
  124. package/dist/lib/index.d.ts +0 -9
  125. package/dist/lib/index.d.ts.map +0 -1
  126. package/dist/lib/index.js +0 -9
  127. package/dist/lib/index.js.map +0 -1
  128. package/dist/lib/utils.d.ts +0 -17
  129. package/dist/lib/utils.d.ts.map +0 -1
  130. package/dist/lib/utils.js +0 -20
  131. package/dist/lib/utils.js.map +0 -1
  132. package/dist/types/index.d.ts +0 -367
  133. package/dist/types/index.d.ts.map +0 -1
  134. package/dist/types/index.js +0 -8
  135. package/dist/types/index.js.map +0 -1
@@ -1,430 +0,0 @@
1
- /**
2
- * useChatMessages Hook
3
- *
4
- * Manages chat messages with:
5
- * - Cursor-based pagination (infinite scroll)
6
- * - Polling for new messages with configurable interval
7
- * - Optimistic updates for sent messages
8
- * - Soft delete functionality
9
- * - Exponential backoff on errors
10
- *
11
- * Uses hazo_connect's createTableQuery for database operations.
12
- */
13
- 'use client';
14
- import { useState, useEffect, useCallback, useRef } from 'react';
15
- import { createTableQuery } from 'hazo_connect/server';
16
- import { DEFAULT_POLLING_INTERVAL, DEFAULT_MESSAGES_PER_PAGE, MAX_RETRY_ATTEMPTS, RETRY_BASE_DELAY } from '../lib/constants.js';
17
- // ============================================================================
18
- // Hook Implementation
19
- // ============================================================================
20
- export function useChatMessages({ hazo_connect, hazo_auth, reference_id, receiver_user_id, polling_interval = DEFAULT_POLLING_INTERVAL, messages_per_page = DEFAULT_MESSAGES_PER_PAGE }) {
21
- // -------------------------------------------------------------------------
22
- // State
23
- // -------------------------------------------------------------------------
24
- const [messages, set_messages] = useState([]);
25
- const [is_loading, set_is_loading] = useState(true);
26
- const [is_loading_more, set_is_loading_more] = useState(false);
27
- const [has_more, set_has_more] = useState(true);
28
- const [error, set_error] = useState(null);
29
- const [polling_status, set_polling_status] = useState('connected');
30
- const [current_user_id, set_current_user_id] = useState(null);
31
- // -------------------------------------------------------------------------
32
- // Refs
33
- // -------------------------------------------------------------------------
34
- const cursor_ref = useRef(0);
35
- const retry_count_ref = useRef(0);
36
- const user_profiles_cache_ref = useRef(new Map());
37
- const polling_timer_ref = useRef(null);
38
- const is_mounted_ref = useRef(true);
39
- // -------------------------------------------------------------------------
40
- // Get current user on mount
41
- // -------------------------------------------------------------------------
42
- useEffect(() => {
43
- async function get_current_user() {
44
- try {
45
- const auth_user = await hazo_auth.hazo_get_auth();
46
- if (auth_user && is_mounted_ref.current) {
47
- set_current_user_id(auth_user.id);
48
- }
49
- }
50
- catch (err) {
51
- console.error('[useChatMessages] Failed to get current user:', err);
52
- }
53
- }
54
- get_current_user();
55
- return () => {
56
- is_mounted_ref.current = false;
57
- };
58
- }, [hazo_auth]);
59
- // -------------------------------------------------------------------------
60
- // Fetch user profiles
61
- // -------------------------------------------------------------------------
62
- const fetch_user_profiles = useCallback(async (user_ids) => {
63
- const uncached_ids = user_ids.filter((id) => !user_profiles_cache_ref.current.has(id));
64
- if (uncached_ids.length > 0) {
65
- try {
66
- const profiles = await hazo_auth.hazo_get_user_profiles(uncached_ids);
67
- profiles.forEach((profile) => {
68
- user_profiles_cache_ref.current.set(profile.id, profile);
69
- });
70
- }
71
- catch (err) {
72
- console.error('[useChatMessages] Failed to fetch user profiles:', err);
73
- }
74
- }
75
- return user_profiles_cache_ref.current;
76
- }, [hazo_auth]);
77
- // -------------------------------------------------------------------------
78
- // Transform DB messages to ChatMessage
79
- // -------------------------------------------------------------------------
80
- const transform_messages = useCallback(async (db_messages, user_id) => {
81
- // Collect all unique user IDs
82
- const user_ids = new Set();
83
- db_messages.forEach((msg) => {
84
- user_ids.add(msg.sender_user_id);
85
- user_ids.add(msg.receiver_user_id);
86
- });
87
- // Fetch profiles
88
- const profiles = await fetch_user_profiles(Array.from(user_ids));
89
- // Transform messages
90
- return db_messages.map((msg) => ({
91
- ...msg,
92
- sender_profile: profiles.get(msg.sender_user_id),
93
- receiver_profile: profiles.get(msg.receiver_user_id),
94
- is_sender: msg.sender_user_id === user_id,
95
- send_status: 'sent'
96
- }));
97
- }, [fetch_user_profiles]);
98
- // -------------------------------------------------------------------------
99
- // Fetch messages
100
- // -------------------------------------------------------------------------
101
- const fetch_messages = useCallback(async (cursor, limit) => {
102
- if (!reference_id || !current_user_id) {
103
- return [];
104
- }
105
- try {
106
- // Use createTableQuery to get an executable query builder
107
- const query = createTableQuery(hazo_connect, 'hazo_chat')
108
- .select('*')
109
- .where('reference_id', 'eq', reference_id)
110
- .whereOr([
111
- { field: 'sender_user_id', operator: 'eq', value: current_user_id },
112
- { field: 'receiver_user_id', operator: 'eq', value: current_user_id }
113
- ])
114
- .order('created_at', 'desc')
115
- .limit(limit)
116
- .offset(cursor);
117
- // Execute returns data directly
118
- const data = await query.execute('GET');
119
- return data || [];
120
- }
121
- catch (err) {
122
- console.error('[useChatMessages] Fetch error:', err);
123
- throw err;
124
- }
125
- }, [hazo_connect, reference_id, current_user_id]);
126
- // -------------------------------------------------------------------------
127
- // Initial load
128
- // -------------------------------------------------------------------------
129
- const load_initial = useCallback(async () => {
130
- if (!current_user_id || !reference_id) {
131
- set_is_loading(false);
132
- return;
133
- }
134
- set_is_loading(true);
135
- set_error(null);
136
- try {
137
- const db_messages = await fetch_messages(0, messages_per_page);
138
- const transformed = await transform_messages(db_messages, current_user_id);
139
- if (is_mounted_ref.current) {
140
- set_messages(transformed);
141
- set_has_more(db_messages.length === messages_per_page);
142
- cursor_ref.current = db_messages.length;
143
- retry_count_ref.current = 0;
144
- set_polling_status('connected');
145
- }
146
- }
147
- catch (err) {
148
- if (is_mounted_ref.current) {
149
- set_error('Failed to load messages');
150
- set_polling_status('error');
151
- }
152
- }
153
- finally {
154
- if (is_mounted_ref.current) {
155
- set_is_loading(false);
156
- }
157
- }
158
- }, [current_user_id, reference_id, fetch_messages, transform_messages, messages_per_page]);
159
- // -------------------------------------------------------------------------
160
- // Load more (pagination)
161
- // -------------------------------------------------------------------------
162
- const load_more = useCallback(async () => {
163
- if (!current_user_id || !has_more || is_loading_more) {
164
- return;
165
- }
166
- set_is_loading_more(true);
167
- try {
168
- const db_messages = await fetch_messages(cursor_ref.current, messages_per_page);
169
- const transformed = await transform_messages(db_messages, current_user_id);
170
- if (is_mounted_ref.current) {
171
- set_messages((prev) => [...prev, ...transformed]);
172
- set_has_more(db_messages.length === messages_per_page);
173
- cursor_ref.current += db_messages.length;
174
- }
175
- }
176
- catch (err) {
177
- console.error('[useChatMessages] Load more error:', err);
178
- }
179
- finally {
180
- if (is_mounted_ref.current) {
181
- set_is_loading_more(false);
182
- }
183
- }
184
- }, [current_user_id, has_more, is_loading_more, fetch_messages, transform_messages, messages_per_page]);
185
- // -------------------------------------------------------------------------
186
- // Poll for new messages
187
- // -------------------------------------------------------------------------
188
- const poll_for_new_messages = useCallback(async () => {
189
- if (!current_user_id || !reference_id) {
190
- return;
191
- }
192
- try {
193
- // Only fetch messages newer than the newest one we have
194
- const newest_timestamp = messages.length > 0 ? messages[0].created_at : null;
195
- // Build query using createTableQuery
196
- let query = createTableQuery(hazo_connect, 'hazo_chat')
197
- .select('*')
198
- .where('reference_id', 'eq', reference_id)
199
- .whereOr([
200
- { field: 'sender_user_id', operator: 'eq', value: current_user_id },
201
- { field: 'receiver_user_id', operator: 'eq', value: current_user_id }
202
- ])
203
- .order('created_at', 'desc');
204
- // If we have messages, only fetch newer ones
205
- if (newest_timestamp) {
206
- query = query.where('created_at', 'gt', newest_timestamp);
207
- }
208
- // Execute with limit
209
- const data = await query.limit(50).execute('GET');
210
- const new_messages = data || [];
211
- if (new_messages.length > 0 && is_mounted_ref.current) {
212
- const transformed = await transform_messages(new_messages, current_user_id);
213
- set_messages((prev) => {
214
- // Filter out any optimistic messages that now have real versions
215
- const filtered = prev.filter((msg) => !new_messages.some((nm) => nm.id === msg.id));
216
- return [...transformed, ...filtered];
217
- });
218
- cursor_ref.current += new_messages.length;
219
- }
220
- retry_count_ref.current = 0;
221
- if (is_mounted_ref.current) {
222
- set_polling_status('connected');
223
- }
224
- }
225
- catch (err) {
226
- console.error('[useChatMessages] Polling error:', err);
227
- retry_count_ref.current += 1;
228
- if (is_mounted_ref.current) {
229
- if (retry_count_ref.current >= MAX_RETRY_ATTEMPTS) {
230
- set_polling_status('error');
231
- }
232
- else {
233
- set_polling_status('reconnecting');
234
- }
235
- }
236
- }
237
- }, [current_user_id, reference_id, messages, hazo_connect, transform_messages]);
238
- // -------------------------------------------------------------------------
239
- // Start polling
240
- // -------------------------------------------------------------------------
241
- useEffect(() => {
242
- if (!current_user_id || !reference_id) {
243
- return;
244
- }
245
- // Clear any existing timer
246
- if (polling_timer_ref.current) {
247
- clearInterval(polling_timer_ref.current);
248
- }
249
- // Calculate delay with exponential backoff
250
- const get_poll_delay = () => {
251
- if (retry_count_ref.current === 0) {
252
- return polling_interval;
253
- }
254
- return Math.min(polling_interval * Math.pow(2, retry_count_ref.current), RETRY_BASE_DELAY * 30 // Cap at 30 seconds
255
- );
256
- };
257
- const start_polling = () => {
258
- polling_timer_ref.current = setInterval(() => {
259
- poll_for_new_messages();
260
- }, get_poll_delay());
261
- };
262
- start_polling();
263
- return () => {
264
- if (polling_timer_ref.current) {
265
- clearInterval(polling_timer_ref.current);
266
- }
267
- };
268
- }, [current_user_id, reference_id, polling_interval, poll_for_new_messages]);
269
- // -------------------------------------------------------------------------
270
- // Initial load effect
271
- // -------------------------------------------------------------------------
272
- useEffect(() => {
273
- load_initial();
274
- }, [load_initial]);
275
- // -------------------------------------------------------------------------
276
- // Send message
277
- // -------------------------------------------------------------------------
278
- const send_message = useCallback(async (payload) => {
279
- if (!current_user_id) {
280
- set_error('Not authenticated');
281
- return false;
282
- }
283
- // Create optimistic message
284
- const optimistic_id = `optimistic-${Date.now()}`;
285
- const optimistic_message = {
286
- id: optimistic_id,
287
- reference_id: payload.reference_id,
288
- reference_type: payload.reference_type,
289
- sender_user_id: current_user_id,
290
- receiver_user_id: payload.receiver_user_id,
291
- message_text: payload.message_text,
292
- reference_list: payload.reference_list || null,
293
- read_at: null,
294
- deleted_at: null,
295
- created_at: new Date().toISOString(),
296
- changed_at: new Date().toISOString(),
297
- sender_profile: user_profiles_cache_ref.current.get(current_user_id),
298
- receiver_profile: user_profiles_cache_ref.current.get(payload.receiver_user_id),
299
- is_sender: true,
300
- send_status: 'sending'
301
- };
302
- // Add optimistic message to state
303
- set_messages((prev) => [optimistic_message, ...prev]);
304
- try {
305
- const insert_data = {
306
- reference_id: payload.reference_id,
307
- reference_type: payload.reference_type,
308
- sender_user_id: current_user_id,
309
- receiver_user_id: payload.receiver_user_id,
310
- message_text: payload.message_text,
311
- reference_list: payload.reference_list || null
312
- };
313
- // Use createTableQuery for insert - execute with POST and body
314
- const query = createTableQuery(hazo_connect, 'hazo_chat');
315
- const data = await query.execute('POST', insert_data);
316
- const result = Array.isArray(data) ? data[0] : data;
317
- // Replace optimistic message with real one
318
- if (result && is_mounted_ref.current) {
319
- const real_message = {
320
- ...result,
321
- sender_profile: user_profiles_cache_ref.current.get(current_user_id),
322
- receiver_profile: user_profiles_cache_ref.current.get(payload.receiver_user_id),
323
- is_sender: true,
324
- send_status: 'sent'
325
- };
326
- set_messages((prev) => prev.map((msg) => msg.id === optimistic_id ? real_message : msg));
327
- }
328
- return true;
329
- }
330
- catch (err) {
331
- console.error('[useChatMessages] Send error:', err);
332
- // Mark optimistic message as failed
333
- if (is_mounted_ref.current) {
334
- set_messages((prev) => prev.map((msg) => msg.id === optimistic_id
335
- ? { ...msg, send_status: 'failed' }
336
- : msg));
337
- }
338
- return false;
339
- }
340
- }, [current_user_id, hazo_connect]);
341
- // -------------------------------------------------------------------------
342
- // Delete message (soft delete)
343
- // -------------------------------------------------------------------------
344
- const delete_message = useCallback(async (message_id) => {
345
- if (!current_user_id) {
346
- return false;
347
- }
348
- // Find the message to verify ownership
349
- const message = messages.find((m) => m.id === message_id);
350
- if (!message || message.sender_user_id !== current_user_id) {
351
- set_error('Cannot delete this message');
352
- return false;
353
- }
354
- // Optimistic update
355
- set_messages((prev) => prev.map((msg) => msg.id === message_id
356
- ? { ...msg, deleted_at: new Date().toISOString(), message_text: null }
357
- : msg));
358
- try {
359
- const update_data = { deleted_at: new Date().toISOString() };
360
- const query = createTableQuery(hazo_connect, 'hazo_chat')
361
- .where('id', 'eq', message_id)
362
- .where('sender_user_id', 'eq', current_user_id);
363
- await query.execute('PATCH', update_data);
364
- return true;
365
- }
366
- catch (err) {
367
- console.error('[useChatMessages] Delete error:', err);
368
- // Rollback on error
369
- if (is_mounted_ref.current) {
370
- set_messages((prev) => prev.map((msg) => msg.id === message_id
371
- ? { ...msg, deleted_at: message.deleted_at, message_text: message.message_text }
372
- : msg));
373
- }
374
- return false;
375
- }
376
- }, [current_user_id, messages, hazo_connect]);
377
- // -------------------------------------------------------------------------
378
- // Mark as read
379
- // -------------------------------------------------------------------------
380
- const mark_as_read = useCallback(async (message_id) => {
381
- if (!current_user_id) {
382
- return;
383
- }
384
- const message = messages.find((m) => m.id === message_id);
385
- if (!message || message.read_at || message.sender_user_id === current_user_id) {
386
- return;
387
- }
388
- try {
389
- const update_data = { read_at: new Date().toISOString() };
390
- const query = createTableQuery(hazo_connect, 'hazo_chat')
391
- .where('id', 'eq', message_id)
392
- .where('receiver_user_id', 'eq', current_user_id);
393
- await query.execute('PATCH', update_data);
394
- // Update local state
395
- if (is_mounted_ref.current) {
396
- set_messages((prev) => prev.map((msg) => msg.id === message_id
397
- ? { ...msg, read_at: new Date().toISOString() }
398
- : msg));
399
- }
400
- }
401
- catch (err) {
402
- console.error('[useChatMessages] Mark as read error:', err);
403
- }
404
- }, [current_user_id, messages, hazo_connect]);
405
- // -------------------------------------------------------------------------
406
- // Refresh
407
- // -------------------------------------------------------------------------
408
- const refresh = useCallback(() => {
409
- cursor_ref.current = 0;
410
- set_messages([]);
411
- load_initial();
412
- }, [load_initial]);
413
- // -------------------------------------------------------------------------
414
- // Return
415
- // -------------------------------------------------------------------------
416
- return {
417
- messages,
418
- is_loading,
419
- is_loading_more,
420
- has_more,
421
- error,
422
- polling_status,
423
- load_more,
424
- send_message,
425
- delete_message,
426
- mark_as_read,
427
- refresh
428
- };
429
- }
430
- //# sourceMappingURL=use_chat_messages.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use_chat_messages.js","sourceRoot":"","sources":["../../src/hooks/use_chat_messages.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- /**
2
- * useChatReferences Hook
3
- *
4
- * Manages chat references with:
5
- * - Aggregating references from messages and props
6
- * - Selection state management
7
- * - Finding source message for a reference
8
- */
9
- import type { ChatReferenceItem, ChatMessage, ReferenceItem, UseChatReferencesReturn } from '../types/index.js';
10
- interface UseChatReferencesParams {
11
- messages: ChatMessage[];
12
- initial_references?: ReferenceItem[];
13
- on_selection_change?: (reference: ChatReferenceItem | null) => void;
14
- }
15
- export declare function useChatReferences({ messages, initial_references, on_selection_change }: UseChatReferencesParams): UseChatReferencesReturn;
16
- export {};
17
- //# sourceMappingURL=use_chat_references.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use_chat_references.d.ts","sourceRoot":"","sources":["../../src/hooks/use_chat_references.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EACV,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,uBAAuB,EACxB,MAAM,mBAAmB,CAAC;AAM3B,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,kBAAkB,CAAC,EAAE,aAAa,EAAE,CAAC;IACrC,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,GAAG,IAAI,KAAK,IAAI,CAAC;CACrE;AAMD,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,kBAAuB,EACvB,mBAAmB,EACpB,EAAE,uBAAuB,GAAG,uBAAuB,CA6InD"}
@@ -1,133 +0,0 @@
1
- /**
2
- * useChatReferences Hook
3
- *
4
- * Manages chat references with:
5
- * - Aggregating references from messages and props
6
- * - Selection state management
7
- * - Finding source message for a reference
8
- */
9
- 'use client';
10
- import { useState, useCallback, useMemo, useEffect } from 'react';
11
- // ============================================================================
12
- // Hook Implementation
13
- // ============================================================================
14
- export function useChatReferences({ messages, initial_references = [], on_selection_change }) {
15
- // -------------------------------------------------------------------------
16
- // State
17
- // -------------------------------------------------------------------------
18
- const [selected_reference, set_selected_reference_state] = useState(null);
19
- // -------------------------------------------------------------------------
20
- // Aggregate all references
21
- // -------------------------------------------------------------------------
22
- const references = useMemo(() => {
23
- const reference_map = new Map();
24
- // Add initial references (from props)
25
- initial_references.forEach((ref) => {
26
- const chat_ref = {
27
- ...ref,
28
- scope: ref.scope || 'field'
29
- };
30
- reference_map.set(ref.id, chat_ref);
31
- });
32
- // Add references from messages
33
- messages.forEach((message) => {
34
- if (message.reference_list && Array.isArray(message.reference_list)) {
35
- message.reference_list.forEach((ref) => {
36
- // Update scope to 'chat' and add message_id
37
- const existing = reference_map.get(ref.id);
38
- if (existing) {
39
- // If reference already exists, it's now in both chat and field
40
- reference_map.set(ref.id, {
41
- ...existing,
42
- message_id: message.id
43
- });
44
- }
45
- else {
46
- reference_map.set(ref.id, {
47
- ...ref,
48
- scope: 'chat',
49
- message_id: message.id
50
- });
51
- }
52
- });
53
- }
54
- });
55
- return Array.from(reference_map.values());
56
- }, [messages, initial_references]);
57
- // -------------------------------------------------------------------------
58
- // Message lookup for references
59
- // -------------------------------------------------------------------------
60
- const reference_to_message_map = useMemo(() => {
61
- const map = new Map();
62
- messages.forEach((message) => {
63
- if (message.reference_list && Array.isArray(message.reference_list)) {
64
- message.reference_list.forEach((ref) => {
65
- // Store the first message that contains this reference
66
- if (!map.has(ref.id)) {
67
- map.set(ref.id, message.id);
68
- }
69
- });
70
- }
71
- });
72
- return map;
73
- }, [messages]);
74
- // -------------------------------------------------------------------------
75
- // Select reference
76
- // -------------------------------------------------------------------------
77
- const select_reference = useCallback((reference) => {
78
- // If same reference, toggle off
79
- if (selected_reference?.id === reference.id) {
80
- set_selected_reference_state(null);
81
- on_selection_change?.(null);
82
- return;
83
- }
84
- // Ensure message_id is set if available
85
- const ref_with_message = {
86
- ...reference,
87
- message_id: reference.message_id || reference_to_message_map.get(reference.id)
88
- };
89
- set_selected_reference_state(ref_with_message);
90
- on_selection_change?.(ref_with_message);
91
- }, [selected_reference, reference_to_message_map, on_selection_change]);
92
- // -------------------------------------------------------------------------
93
- // Clear selection
94
- // -------------------------------------------------------------------------
95
- const clear_selection = useCallback(() => {
96
- set_selected_reference_state(null);
97
- on_selection_change?.(null);
98
- }, [on_selection_change]);
99
- // -------------------------------------------------------------------------
100
- // Add new reference
101
- // -------------------------------------------------------------------------
102
- const add_reference = useCallback((reference) => {
103
- // This is typically handled by the context or parent component
104
- // Here we just select the newly added reference
105
- select_reference(reference);
106
- }, [select_reference]);
107
- // -------------------------------------------------------------------------
108
- // Get message ID for reference
109
- // -------------------------------------------------------------------------
110
- const get_message_for_reference = useCallback((reference_id) => {
111
- return reference_to_message_map.get(reference_id) || null;
112
- }, [reference_to_message_map]);
113
- // -------------------------------------------------------------------------
114
- // Clear selection if selected reference is removed
115
- // -------------------------------------------------------------------------
116
- useEffect(() => {
117
- if (selected_reference && !references.some((r) => r.id === selected_reference.id)) {
118
- set_selected_reference_state(null);
119
- }
120
- }, [references, selected_reference]);
121
- // -------------------------------------------------------------------------
122
- // Return
123
- // -------------------------------------------------------------------------
124
- return {
125
- references,
126
- selected_reference,
127
- select_reference,
128
- clear_selection,
129
- add_reference,
130
- get_message_for_reference
131
- };
132
- }
133
- //# sourceMappingURL=use_chat_references.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use_chat_references.js","sourceRoot":"","sources":["../../src/hooks/use_chat_references.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- /**
2
- * useFileUpload Hook
3
- *
4
- * Manages file uploads with:
5
- * - File validation (size, type)
6
- * - Preview generation for images
7
- * - Upload progress tracking
8
- * - Batch upload support
9
- */
10
- import type { UploadedFile, UseFileUploadReturn } from '../types/index.js';
11
- interface UseFileUploadParams {
12
- /** Path/bucket for uploaded files */
13
- upload_location: string;
14
- /** Maximum file size in MB */
15
- max_file_size_mb?: number;
16
- /** Allowed file extensions */
17
- allowed_types?: string[];
18
- /** Upload function to call for each file */
19
- upload_function?: (file: File, location: string) => Promise<UploadedFile>;
20
- }
21
- export declare function useFileUpload({ upload_location, max_file_size_mb, allowed_types, upload_function }: UseFileUploadParams): UseFileUploadReturn;
22
- export {};
23
- //# sourceMappingURL=use_file_upload.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"use_file_upload.d.ts","sourceRoot":"","sources":["../../src/hooks/use_file_upload.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAEV,YAAY,EAEZ,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAW3B,UAAU,mBAAmB;IAC3B,qCAAqC;IACrC,eAAe,EAAE,MAAM,CAAC;IACxB,8BAA8B;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8BAA8B;IAC9B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,4CAA4C;IAC5C,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;CAC3E;AA4DD,wBAAgB,aAAa,CAAC,EAC5B,eAAe,EACf,gBAA2C,EAC3C,aAAqC,EACrC,eAAyC,EAC1C,EAAE,mBAAmB,GAAG,mBAAmB,CA+M3C"}