@workhive/api 1.1.0 → 1.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.
- package/dist/client.d.ts +64 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +134 -5
- package/dist/context.d.ts +47 -1
- package/dist/context.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +10 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +8 -0
- package/dist/hooks/use-contact-lead-submissions.d.ts +4 -0
- package/dist/hooks/use-contact-lead-submissions.d.ts.map +1 -0
- package/dist/hooks/use-contact-lead-submissions.js +10 -0
- package/dist/hooks/use-contact-meetings.d.ts +6 -0
- package/dist/hooks/use-contact-meetings.d.ts.map +1 -0
- package/dist/hooks/use-contact-meetings.js +10 -0
- package/dist/hooks/use-delete-inbox-thread.d.ts +4 -0
- package/dist/hooks/use-delete-inbox-thread.d.ts.map +1 -0
- package/dist/hooks/use-delete-inbox-thread.js +12 -0
- package/dist/hooks/use-inbox-calls.d.ts +6 -0
- package/dist/hooks/use-inbox-calls.d.ts.map +1 -0
- package/dist/hooks/use-inbox-calls.js +11 -0
- package/dist/hooks/use-inbox-messages.d.ts.map +1 -1
- package/dist/hooks/use-inbox-messages.js +2 -0
- package/dist/hooks/use-inbox-threads.d.ts +4 -1
- package/dist/hooks/use-inbox-threads.d.ts.map +1 -1
- package/dist/hooks/use-inbox-threads.js +3 -3
- package/dist/hooks/use-mark-inbox-thread-read.d.ts +7 -0
- package/dist/hooks/use-mark-inbox-thread-read.d.ts.map +1 -0
- package/dist/hooks/use-mark-inbox-thread-read.js +34 -0
- package/dist/hooks/use-mark-inbox-thread-unread.d.ts +7 -0
- package/dist/hooks/use-mark-inbox-thread-unread.d.ts.map +1 -0
- package/dist/hooks/use-mark-inbox-thread-unread.js +34 -0
- package/dist/hooks/use-message-snippets.d.ts +6 -0
- package/dist/hooks/use-message-snippets.d.ts.map +1 -0
- package/dist/hooks/use-message-snippets.js +13 -0
- package/dist/hooks/use-send-inbox-message.d.ts +8 -2
- package/dist/hooks/use-send-inbox-message.d.ts.map +1 -1
- package/dist/hooks/use-send-inbox-message.js +99 -1
- package/dist/hooks/use-update-inbox-thread-status.d.ts +11 -0
- package/dist/hooks/use-update-inbox-thread-status.d.ts.map +1 -0
- package/dist/hooks/use-update-inbox-thread-status.js +34 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/types.d.ts +130 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/client.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* WorkHive API client – base URL + auth, methods for each route.
|
|
3
3
|
* Used by both SaaS and mobile; mobile passes EXPO_PUBLIC_API_URL and Supabase getToken.
|
|
4
4
|
*/
|
|
5
|
-
import type { LeadSubmissionsResponse, TaskListItem, Meeting, CreateMeetingPayload, PipelineCard, PostMeetingBookedPromptResponse, Pipeline, PipelineStage, TeamMembersResponse, MeResponse, RescheduleMeetingPayload, GetAvailabilitySlotsParams, GetAvailabilitySlotsResponse, EventType, PhoneNumbersResponse, InboxThreadsResponse, InboxMessagesResponse, SendInboxMessagePayload, SendInboxMessageResponse } from './types';
|
|
5
|
+
import type { LeadSubmissionsResponse, ContactLeadSubmissionsResponse, TaskListItem, Meeting, CreateMeetingPayload, PipelineCard, PostMeetingBookedPromptResponse, Pipeline, PipelineStage, TeamMembersResponse, MeResponse, RescheduleMeetingPayload, GetAvailabilitySlotsParams, GetAvailabilitySlotsResponse, EventType, PhoneNumbersResponse, InboxThreadsResponse, InboxMessagesResponse, InboxCallsResponse, InboxCallEvent, CreateInboxCallPayload, VoiceTokenResponse, UploadInboxMediaResponse, SendInboxMessagePayload, SendInboxMessageResponse, MessageSnippet, MessageSnippetsResponse, CreateMessageSnippetPayload, UpdateMessageSnippetPayload, InboxGifsResponse } from './types';
|
|
6
6
|
export type ApiClientConfig = {
|
|
7
7
|
baseURL: string;
|
|
8
8
|
getToken: () => Promise<string | null>;
|
|
@@ -22,6 +22,10 @@ export declare function createApiClient(config: ApiClientConfig): {
|
|
|
22
22
|
sortOrder?: "asc" | "desc";
|
|
23
23
|
showArchivedOnly?: boolean;
|
|
24
24
|
}): Promise<LeadSubmissionsResponse>;
|
|
25
|
+
getContactLeadSubmissions(contactId: string): Promise<ContactLeadSubmissionsResponse>;
|
|
26
|
+
getContactMeetings(contactId: string): Promise<{
|
|
27
|
+
meetings: Meeting[];
|
|
28
|
+
}>;
|
|
25
29
|
getTasks(params?: {
|
|
26
30
|
status?: string;
|
|
27
31
|
related_card_id?: string;
|
|
@@ -112,12 +116,69 @@ export declare function createApiClient(config: ApiClientConfig): {
|
|
|
112
116
|
eventTypes: EventType[];
|
|
113
117
|
}>;
|
|
114
118
|
getPhoneNumbers(): Promise<PhoneNumbersResponse>;
|
|
115
|
-
/**
|
|
116
|
-
|
|
119
|
+
/** POST /api/phone-numbers/[id]/voice-token – Twilio Voice Access Token for Device SDK. */
|
|
120
|
+
postVoiceToken(phoneNumberId: string): Promise<VoiceTokenResponse>;
|
|
121
|
+
/** POST /api/phone-numbers/[id]/upload-media – upload files for outbound MMS; returns signed URLs + attachment metadata. */
|
|
122
|
+
uploadInboxMedia(phoneNumberId: string, formData: FormData): Promise<UploadInboxMediaResponse>;
|
|
123
|
+
/** List conversation threads for an inbox (phone number). Optional status filter: active (Open) or archived (Done). */
|
|
124
|
+
getInboxThreads(phoneNumberId: string, params?: {
|
|
125
|
+
status?: "active" | "archived";
|
|
126
|
+
}): Promise<InboxThreadsResponse>;
|
|
127
|
+
/** List call events for an inbox (phone number). Same auth as getInboxThreads. */
|
|
128
|
+
getInboxCalls(phoneNumberId: string): Promise<InboxCallsResponse>;
|
|
117
129
|
/** List messages for a thread. */
|
|
118
130
|
getInboxThreadMessages(threadId: string): Promise<InboxMessagesResponse>;
|
|
131
|
+
/** Create an outbound call event record (before starting Twilio call). Returns the created call event. */
|
|
132
|
+
createInboxCall(payload: CreateInboxCallPayload): Promise<InboxCallEvent>;
|
|
133
|
+
/** URL for streaming call recording playback. Use with Bearer auth; response is audio stream (e.g. audio/mpeg), not JSON. */
|
|
134
|
+
getInboxCallRecordingUrl(callEventId: string): string;
|
|
119
135
|
/** Send an outbound message from an inbox (SMS). */
|
|
120
136
|
sendInboxMessage(phoneNumberId: string, body: SendInboxMessagePayload): Promise<SendInboxMessageResponse>;
|
|
137
|
+
/** Mark a thread as read for the current user (e.g. when opening the conversation). */
|
|
138
|
+
markInboxThreadRead(threadId: string): Promise<{
|
|
139
|
+
ok: true;
|
|
140
|
+
}>;
|
|
141
|
+
/** Mark a thread as unread for the current user. */
|
|
142
|
+
markInboxThreadUnread(threadId: string): Promise<{
|
|
143
|
+
ok: true;
|
|
144
|
+
}>;
|
|
145
|
+
/** Update thread status: active = Open, archived = Done. */
|
|
146
|
+
updateInboxThreadStatus(threadId: string, status: "active" | "archived"): Promise<{
|
|
147
|
+
ok: true;
|
|
148
|
+
status: string;
|
|
149
|
+
}>;
|
|
150
|
+
/** Delete a conversation thread (and its messages via cascade). */
|
|
151
|
+
deleteInboxThread(threadId: string): Promise<{
|
|
152
|
+
ok: true;
|
|
153
|
+
}>;
|
|
154
|
+
/** Get trending GIFs for inbox composer (GET /api/inbox/gifs/trending). */
|
|
155
|
+
getInboxGifsTrending(params?: {
|
|
156
|
+
limit?: number;
|
|
157
|
+
offset?: number;
|
|
158
|
+
rating?: string;
|
|
159
|
+
lang?: string;
|
|
160
|
+
}): Promise<InboxGifsResponse>;
|
|
161
|
+
/** Search GIFs for inbox composer (GET /api/inbox/gifs/search). Requires q. */
|
|
162
|
+
getInboxGifsSearch(q: string, params?: {
|
|
163
|
+
limit?: number;
|
|
164
|
+
offset?: number;
|
|
165
|
+
rating?: string;
|
|
166
|
+
lang?: string;
|
|
167
|
+
}): Promise<InboxGifsResponse>;
|
|
168
|
+
/** List message snippets for the current org. */
|
|
169
|
+
getMessageSnippets(): Promise<MessageSnippetsResponse>;
|
|
170
|
+
/** Create a message snippet. */
|
|
171
|
+
createMessageSnippet(body: CreateMessageSnippetPayload): Promise<{
|
|
172
|
+
snippet: MessageSnippet;
|
|
173
|
+
}>;
|
|
174
|
+
/** Update a message snippet. */
|
|
175
|
+
updateMessageSnippet(id: string, body: UpdateMessageSnippetPayload): Promise<{
|
|
176
|
+
snippet: MessageSnippet;
|
|
177
|
+
}>;
|
|
178
|
+
/** Delete a message snippet. */
|
|
179
|
+
deleteMessageSnippet(id: string): Promise<{
|
|
180
|
+
ok: true;
|
|
181
|
+
}>;
|
|
121
182
|
};
|
|
122
183
|
export type ApiClient = ReturnType<typeof createApiClient>;
|
|
123
184
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAEV,uBAAuB,EACvB,YAAY,EACZ,OAAO,EACP,oBAAoB,EACpB,YAAY,EACZ,+BAA+B,EAC/B,QAAQ,EACR,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,EAC5B,SAAS,EACT,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -21,8 +21,41 @@ export function createApiClient(config) {
|
|
|
21
21
|
},
|
|
22
22
|
});
|
|
23
23
|
if (!res.ok) {
|
|
24
|
-
const
|
|
25
|
-
|
|
24
|
+
const text = await res.text();
|
|
25
|
+
let err = {};
|
|
26
|
+
try {
|
|
27
|
+
if (text.length > 0)
|
|
28
|
+
err = JSON.parse(text);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// Server returned non-JSON (e.g. HTML error page); avoid "Unexpected token '<'" in Sentry
|
|
32
|
+
}
|
|
33
|
+
throw new Error(err.error || res.statusText || 'Request failed');
|
|
34
|
+
}
|
|
35
|
+
return res.json();
|
|
36
|
+
}
|
|
37
|
+
/** POST with FormData; do not set Content-Type so browser sets multipart boundary. */
|
|
38
|
+
async function requestForm(path, formData) {
|
|
39
|
+
const token = await getToken();
|
|
40
|
+
const url = buildUrl(baseURL, path);
|
|
41
|
+
const res = await fetch(url, {
|
|
42
|
+
method: 'POST',
|
|
43
|
+
body: formData,
|
|
44
|
+
headers: {
|
|
45
|
+
...(token ? { Authorization: `Bearer ${token}` } : {}),
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
if (!res.ok) {
|
|
49
|
+
const text = await res.text();
|
|
50
|
+
let err = {};
|
|
51
|
+
try {
|
|
52
|
+
if (text.length > 0)
|
|
53
|
+
err = JSON.parse(text);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// Server returned non-JSON
|
|
57
|
+
}
|
|
58
|
+
throw new Error(err.error || res.statusText || 'Request failed');
|
|
26
59
|
}
|
|
27
60
|
return res.json();
|
|
28
61
|
}
|
|
@@ -59,6 +92,15 @@ export function createApiClient(config) {
|
|
|
59
92
|
return request(`/api/lead-submissions?${search}`);
|
|
60
93
|
},
|
|
61
94
|
// -------------------------------------------------------------------------
|
|
95
|
+
// Contact-scoped (GET /api/contacts/[id]/lead-submissions, .../meetings)
|
|
96
|
+
// -------------------------------------------------------------------------
|
|
97
|
+
getContactLeadSubmissions(contactId) {
|
|
98
|
+
return request(`/api/contacts/${encodeURIComponent(contactId)}/lead-submissions`);
|
|
99
|
+
},
|
|
100
|
+
getContactMeetings(contactId) {
|
|
101
|
+
return request(`/api/contacts/${encodeURIComponent(contactId)}/meetings`);
|
|
102
|
+
},
|
|
103
|
+
// -------------------------------------------------------------------------
|
|
62
104
|
// Tasks (GET /api/tasks)
|
|
63
105
|
// -------------------------------------------------------------------------
|
|
64
106
|
getTasks(params) {
|
|
@@ -238,17 +280,42 @@ export function createApiClient(config) {
|
|
|
238
280
|
getPhoneNumbers() {
|
|
239
281
|
return request('/api/phone-numbers');
|
|
240
282
|
},
|
|
283
|
+
/** POST /api/phone-numbers/[id]/voice-token – Twilio Voice Access Token for Device SDK. */
|
|
284
|
+
postVoiceToken(phoneNumberId) {
|
|
285
|
+
return request(`/api/phone-numbers/${encodeURIComponent(phoneNumberId)}/voice-token`, { method: 'POST' });
|
|
286
|
+
},
|
|
287
|
+
/** POST /api/phone-numbers/[id]/upload-media – upload files for outbound MMS; returns signed URLs + attachment metadata. */
|
|
288
|
+
uploadInboxMedia(phoneNumberId, formData) {
|
|
289
|
+
return requestForm(`/api/phone-numbers/${encodeURIComponent(phoneNumberId)}/upload-media`, formData);
|
|
290
|
+
},
|
|
241
291
|
// -------------------------------------------------------------------------
|
|
242
292
|
// Inbox: threads, messages, send (use shared API; no raw fetch in app)
|
|
243
293
|
// -------------------------------------------------------------------------
|
|
244
|
-
/** List conversation threads for an inbox (phone number). */
|
|
245
|
-
getInboxThreads(phoneNumberId) {
|
|
246
|
-
|
|
294
|
+
/** List conversation threads for an inbox (phone number). Optional status filter: active (Open) or archived (Done). */
|
|
295
|
+
getInboxThreads(phoneNumberId, params) {
|
|
296
|
+
const path = `/api/phone-numbers/${encodeURIComponent(phoneNumberId)}/threads` +
|
|
297
|
+
(params?.status ? `?status=${encodeURIComponent(params.status)}` : '');
|
|
298
|
+
return request(path);
|
|
299
|
+
},
|
|
300
|
+
/** List call events for an inbox (phone number). Same auth as getInboxThreads. */
|
|
301
|
+
getInboxCalls(phoneNumberId) {
|
|
302
|
+
return request(`/api/phone-numbers/${encodeURIComponent(phoneNumberId)}/calls`);
|
|
247
303
|
},
|
|
248
304
|
/** List messages for a thread. */
|
|
249
305
|
getInboxThreadMessages(threadId) {
|
|
250
306
|
return request(`/api/inbox/threads/${encodeURIComponent(threadId)}/messages`);
|
|
251
307
|
},
|
|
308
|
+
/** Create an outbound call event record (before starting Twilio call). Returns the created call event. */
|
|
309
|
+
createInboxCall(payload) {
|
|
310
|
+
return request('/api/inbox/calls', {
|
|
311
|
+
method: 'POST',
|
|
312
|
+
body: JSON.stringify(payload),
|
|
313
|
+
});
|
|
314
|
+
},
|
|
315
|
+
/** URL for streaming call recording playback. Use with Bearer auth; response is audio stream (e.g. audio/mpeg), not JSON. */
|
|
316
|
+
getInboxCallRecordingUrl(callEventId) {
|
|
317
|
+
return buildUrl(baseURL, `/api/inbox/calls/${encodeURIComponent(callEventId)}/recording`);
|
|
318
|
+
},
|
|
252
319
|
/** Send an outbound message from an inbox (SMS). */
|
|
253
320
|
sendInboxMessage(phoneNumberId, body) {
|
|
254
321
|
return request(`/api/phone-numbers/${encodeURIComponent(phoneNumberId)}/send`, {
|
|
@@ -256,5 +323,67 @@ export function createApiClient(config) {
|
|
|
256
323
|
body: JSON.stringify(body),
|
|
257
324
|
});
|
|
258
325
|
},
|
|
326
|
+
/** Mark a thread as read for the current user (e.g. when opening the conversation). */
|
|
327
|
+
markInboxThreadRead(threadId) {
|
|
328
|
+
return request(`/api/inbox/threads/${encodeURIComponent(threadId)}/read`, { method: 'POST' });
|
|
329
|
+
},
|
|
330
|
+
/** Mark a thread as unread for the current user. */
|
|
331
|
+
markInboxThreadUnread(threadId) {
|
|
332
|
+
return request(`/api/inbox/threads/${encodeURIComponent(threadId)}/unread`, { method: 'POST' });
|
|
333
|
+
},
|
|
334
|
+
/** Update thread status: active = Open, archived = Done. */
|
|
335
|
+
updateInboxThreadStatus(threadId, status) {
|
|
336
|
+
return request(`/api/inbox/threads/${encodeURIComponent(threadId)}`, { method: 'PATCH', body: JSON.stringify({ status }) });
|
|
337
|
+
},
|
|
338
|
+
/** Delete a conversation thread (and its messages via cascade). */
|
|
339
|
+
deleteInboxThread(threadId) {
|
|
340
|
+
return request(`/api/inbox/threads/${encodeURIComponent(threadId)}`, { method: 'DELETE' });
|
|
341
|
+
},
|
|
342
|
+
/** Get trending GIFs for inbox composer (GET /api/inbox/gifs/trending). */
|
|
343
|
+
getInboxGifsTrending(params) {
|
|
344
|
+
const sp = new URLSearchParams();
|
|
345
|
+
if (params?.limit != null)
|
|
346
|
+
sp.set('limit', String(params.limit));
|
|
347
|
+
if (params?.offset != null)
|
|
348
|
+
sp.set('offset', String(params.offset));
|
|
349
|
+
if (params?.rating)
|
|
350
|
+
sp.set('rating', params.rating);
|
|
351
|
+
if (params?.lang)
|
|
352
|
+
sp.set('lang', params.lang);
|
|
353
|
+
const qs = sp.toString();
|
|
354
|
+
return request(`/api/inbox/gifs/trending${qs ? `?${qs}` : ''}`);
|
|
355
|
+
},
|
|
356
|
+
/** Search GIFs for inbox composer (GET /api/inbox/gifs/search). Requires q. */
|
|
357
|
+
getInboxGifsSearch(q, params) {
|
|
358
|
+
const sp = new URLSearchParams({ q: q.trim() });
|
|
359
|
+
if (params?.limit != null)
|
|
360
|
+
sp.set('limit', String(params.limit));
|
|
361
|
+
if (params?.offset != null)
|
|
362
|
+
sp.set('offset', String(params.offset));
|
|
363
|
+
if (params?.rating)
|
|
364
|
+
sp.set('rating', params.rating);
|
|
365
|
+
if (params?.lang)
|
|
366
|
+
sp.set('lang', params.lang);
|
|
367
|
+
return request(`/api/inbox/gifs/search?${sp.toString()}`);
|
|
368
|
+
},
|
|
369
|
+
// -------------------------------------------------------------------------
|
|
370
|
+
// Message snippets (Settings → Messaging; Inbox picker)
|
|
371
|
+
// -------------------------------------------------------------------------
|
|
372
|
+
/** List message snippets for the current org. */
|
|
373
|
+
getMessageSnippets() {
|
|
374
|
+
return request('/api/settings/messaging/snippets');
|
|
375
|
+
},
|
|
376
|
+
/** Create a message snippet. */
|
|
377
|
+
createMessageSnippet(body) {
|
|
378
|
+
return request('/api/settings/messaging/snippets', { method: 'POST', body: JSON.stringify(body) });
|
|
379
|
+
},
|
|
380
|
+
/** Update a message snippet. */
|
|
381
|
+
updateMessageSnippet(id, body) {
|
|
382
|
+
return request(`/api/settings/messaging/snippets/${encodeURIComponent(id)}`, { method: 'PATCH', body: JSON.stringify(body) });
|
|
383
|
+
},
|
|
384
|
+
/** Delete a message snippet. */
|
|
385
|
+
deleteMessageSnippet(id) {
|
|
386
|
+
return request(`/api/settings/messaging/snippets/${encodeURIComponent(id)}`, { method: 'DELETE' });
|
|
387
|
+
},
|
|
259
388
|
};
|
|
260
389
|
}
|
package/dist/context.d.ts
CHANGED
|
@@ -17,6 +17,10 @@ export declare const ApiProvider: import("react").Provider<{
|
|
|
17
17
|
sortOrder?: "asc" | "desc";
|
|
18
18
|
showArchivedOnly?: boolean;
|
|
19
19
|
}): Promise<import("./types").LeadSubmissionsResponse>;
|
|
20
|
+
getContactLeadSubmissions(contactId: string): Promise<import("./types").ContactLeadSubmissionsResponse>;
|
|
21
|
+
getContactMeetings(contactId: string): Promise<{
|
|
22
|
+
meetings: import("./types").Meeting[];
|
|
23
|
+
}>;
|
|
20
24
|
getTasks(params?: {
|
|
21
25
|
status?: string;
|
|
22
26
|
related_card_id?: string;
|
|
@@ -96,9 +100,51 @@ export declare const ApiProvider: import("react").Provider<{
|
|
|
96
100
|
eventTypes: import("./types").EventType[];
|
|
97
101
|
}>;
|
|
98
102
|
getPhoneNumbers(): Promise<import("./types").PhoneNumbersResponse>;
|
|
99
|
-
|
|
103
|
+
postVoiceToken(phoneNumberId: string): Promise<import("./types").VoiceTokenResponse>;
|
|
104
|
+
uploadInboxMedia(phoneNumberId: string, formData: FormData): Promise<import("./types").UploadInboxMediaResponse>;
|
|
105
|
+
getInboxThreads(phoneNumberId: string, params?: {
|
|
106
|
+
status?: "active" | "archived";
|
|
107
|
+
}): Promise<import("./types").InboxThreadsResponse>;
|
|
108
|
+
getInboxCalls(phoneNumberId: string): Promise<import("./types").InboxCallsResponse>;
|
|
100
109
|
getInboxThreadMessages(threadId: string): Promise<import("./types").InboxMessagesResponse>;
|
|
110
|
+
createInboxCall(payload: import("./types").CreateInboxCallPayload): Promise<import("./types").InboxCallEvent>;
|
|
111
|
+
getInboxCallRecordingUrl(callEventId: string): string;
|
|
101
112
|
sendInboxMessage(phoneNumberId: string, body: import("./types").SendInboxMessagePayload): Promise<import("./types").SendInboxMessageResponse>;
|
|
113
|
+
markInboxThreadRead(threadId: string): Promise<{
|
|
114
|
+
ok: true;
|
|
115
|
+
}>;
|
|
116
|
+
markInboxThreadUnread(threadId: string): Promise<{
|
|
117
|
+
ok: true;
|
|
118
|
+
}>;
|
|
119
|
+
updateInboxThreadStatus(threadId: string, status: "active" | "archived"): Promise<{
|
|
120
|
+
ok: true;
|
|
121
|
+
status: string;
|
|
122
|
+
}>;
|
|
123
|
+
deleteInboxThread(threadId: string): Promise<{
|
|
124
|
+
ok: true;
|
|
125
|
+
}>;
|
|
126
|
+
getInboxGifsTrending(params?: {
|
|
127
|
+
limit?: number;
|
|
128
|
+
offset?: number;
|
|
129
|
+
rating?: string;
|
|
130
|
+
lang?: string;
|
|
131
|
+
}): Promise<import("./types").InboxGifsResponse>;
|
|
132
|
+
getInboxGifsSearch(q: string, params?: {
|
|
133
|
+
limit?: number;
|
|
134
|
+
offset?: number;
|
|
135
|
+
rating?: string;
|
|
136
|
+
lang?: string;
|
|
137
|
+
}): Promise<import("./types").InboxGifsResponse>;
|
|
138
|
+
getMessageSnippets(): Promise<import("./types").MessageSnippetsResponse>;
|
|
139
|
+
createMessageSnippet(body: import("./types").CreateMessageSnippetPayload): Promise<{
|
|
140
|
+
snippet: import("./types").MessageSnippet;
|
|
141
|
+
}>;
|
|
142
|
+
updateMessageSnippet(id: string, body: import("./types").UpdateMessageSnippetPayload): Promise<{
|
|
143
|
+
snippet: import("./types").MessageSnippet;
|
|
144
|
+
}>;
|
|
145
|
+
deleteMessageSnippet(id: string): Promise<{
|
|
146
|
+
ok: true;
|
|
147
|
+
}>;
|
|
102
148
|
} | null>;
|
|
103
149
|
export declare function useApiClient(): ApiClient;
|
|
104
150
|
//# sourceMappingURL=context.d.ts.map
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAIzC,eAAO,MAAM,WAAW;;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAIzC,eAAO,MAAM,WAAW;;WASgmF,CAAC;YAA6C,CAAC;aAAoB,CAAC;cAAqB,CAAC;cAAqB,CAAC;cAAyD,CAAC;gBAAuB,CAAC;mBAA4B,CAAC;cAAuB,CAAC;cAAqB,CAAC;iBAAiD,CAAC;wBAAuC,CAAC;;;;;;;cAA65D,CAAC;uBAA8B,CAAC;aAAoB,CAAC;cAAqB,CAAC;eAAsB,CAAC;kBAAyB,CAAC;;;;;;aAA8wB,CAAC;;;;;cAAub,CAAC;uBAA8B,CAAC;cAAqB,CAAC;kBAAyB,CAAC;gBAAuB,CAAC;;;;;;;;;;;;;;gBAA2yD,CAAC;;;sBAAke,CAAC;;;;;;;cAAm8B,CAAC;;;;;;;oBAAm5B,CAAC;;;;;;;;;;cAA2lD,CAAC;;;;;;;;;;YAA0+B,CAAC;;;;;;;;;;cAAyoF,CAAC;;;;;;;;;;;;;;;;;;;;;aAAosG,CAAC;cAAqB,CAAC;cAAqB,CAAC;YAAmB,CAAC;;;aAA+nB,CAAC;cAAuB,CAAC;cAAuB,CAAC;YAAqB,CAAC;;;;;;;;;;;;SAT3/mB,CAAA;AAE9C,wBAAgB,YAAY,IAAI,SAAS,CAMxC"}
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { useLeads } from './use-leads';
|
|
2
2
|
export type { GetLeadSubmissionsParams } from './use-leads';
|
|
3
|
+
export { useContactLeadSubmissions } from './use-contact-lead-submissions';
|
|
4
|
+
export { useContactMeetings } from './use-contact-meetings';
|
|
3
5
|
export { useTasks } from './use-tasks';
|
|
4
6
|
export type { GetTasksParams } from './use-tasks';
|
|
5
7
|
export { useMeetings } from './use-meetings';
|
|
@@ -11,6 +13,14 @@ export { useTeamMembers } from './use-team-members';
|
|
|
11
13
|
export { useMe } from './use-me';
|
|
12
14
|
export { usePhoneNumbers } from './use-phone-numbers';
|
|
13
15
|
export { useInboxThreads } from './use-inbox-threads';
|
|
16
|
+
export type { GetInboxThreadsParams } from './use-inbox-threads';
|
|
14
17
|
export { useInboxMessages } from './use-inbox-messages';
|
|
18
|
+
export { useInboxCalls } from './use-inbox-calls';
|
|
19
|
+
export type { UseInboxCallsOptions } from './use-inbox-calls';
|
|
15
20
|
export { useSendInboxMessage } from './use-send-inbox-message';
|
|
21
|
+
export { useMarkInboxThreadRead } from './use-mark-inbox-thread-read';
|
|
22
|
+
export { useMarkInboxThreadUnread } from './use-mark-inbox-thread-unread';
|
|
23
|
+
export { useUpdateInboxThreadStatus } from './use-update-inbox-thread-status';
|
|
24
|
+
export { useDeleteInboxThread } from './use-delete-inbox-thread';
|
|
25
|
+
export { useMessageSnippets } from './use-message-snippets';
|
|
16
26
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,YAAY,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,YAAY,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA"}
|
package/dist/hooks/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { useLeads } from './use-leads';
|
|
2
|
+
export { useContactLeadSubmissions } from './use-contact-lead-submissions';
|
|
3
|
+
export { useContactMeetings } from './use-contact-meetings';
|
|
2
4
|
export { useTasks } from './use-tasks';
|
|
3
5
|
export { useMeetings } from './use-meetings';
|
|
4
6
|
export { usePipelines } from './use-pipelines';
|
|
@@ -8,4 +10,10 @@ export { useMe } from './use-me';
|
|
|
8
10
|
export { usePhoneNumbers } from './use-phone-numbers';
|
|
9
11
|
export { useInboxThreads } from './use-inbox-threads';
|
|
10
12
|
export { useInboxMessages } from './use-inbox-messages';
|
|
13
|
+
export { useInboxCalls } from './use-inbox-calls';
|
|
11
14
|
export { useSendInboxMessage } from './use-send-inbox-message';
|
|
15
|
+
export { useMarkInboxThreadRead } from './use-mark-inbox-thread-read';
|
|
16
|
+
export { useMarkInboxThreadUnread } from './use-mark-inbox-thread-unread';
|
|
17
|
+
export { useUpdateInboxThreadStatus } from './use-update-inbox-thread-status';
|
|
18
|
+
export { useDeleteInboxThread } from './use-delete-inbox-thread';
|
|
19
|
+
export { useMessageSnippets } from './use-message-snippets';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function useContactLeadSubmissions(contactId: string | null, options?: {
|
|
2
|
+
enabled?: boolean;
|
|
3
|
+
}): import("@tanstack/react-query").UseQueryResult<import("..").ContactLeadSubmissionsResponse, Error>;
|
|
4
|
+
//# sourceMappingURL=use-contact-lead-submissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-contact-lead-submissions.d.ts","sourceRoot":"","sources":["../../src/hooks/use-contact-lead-submissions.ts"],"names":[],"mappings":"AAGA,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,sGAQhC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { useQuery } from '@tanstack/react-query';
|
|
2
|
+
import { useApiClient } from '../context';
|
|
3
|
+
export function useContactLeadSubmissions(contactId, options) {
|
|
4
|
+
const client = useApiClient();
|
|
5
|
+
return useQuery({
|
|
6
|
+
queryKey: ['contact-lead-submissions', contactId],
|
|
7
|
+
queryFn: () => client.getContactLeadSubmissions(contactId),
|
|
8
|
+
enabled: (options?.enabled !== false) && !!contactId,
|
|
9
|
+
});
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-contact-meetings.d.ts","sourceRoot":"","sources":["../../src/hooks/use-contact-meetings.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE;;UAQhC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { useQuery } from '@tanstack/react-query';
|
|
2
|
+
import { useApiClient } from '../context';
|
|
3
|
+
export function useContactMeetings(contactId, options) {
|
|
4
|
+
const client = useApiClient();
|
|
5
|
+
return useQuery({
|
|
6
|
+
queryKey: ['contact-meetings', contactId],
|
|
7
|
+
queryFn: () => client.getContactMeetings(contactId),
|
|
8
|
+
enabled: (options?.enabled !== false) && !!contactId,
|
|
9
|
+
});
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-delete-inbox-thread.d.ts","sourceRoot":"","sources":["../../src/hooks/use-delete-inbox-thread.ts"],"names":[],"mappings":"AAGA,wBAAgB,oBAAoB;;2BASnC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
|
2
|
+
import { useApiClient } from '../context';
|
|
3
|
+
export function useDeleteInboxThread() {
|
|
4
|
+
const client = useApiClient();
|
|
5
|
+
const queryClient = useQueryClient();
|
|
6
|
+
return useMutation({
|
|
7
|
+
mutationFn: (threadId) => client.deleteInboxThread(threadId),
|
|
8
|
+
onSuccess: () => {
|
|
9
|
+
queryClient.invalidateQueries({ queryKey: ['inbox', 'threads'] });
|
|
10
|
+
},
|
|
11
|
+
});
|
|
12
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type UseInboxCallsOptions = {
|
|
2
|
+
/** When false, the query is disabled (e.g. when Calls tab is not active). */
|
|
3
|
+
enabled?: boolean;
|
|
4
|
+
};
|
|
5
|
+
export declare function useInboxCalls(phoneNumberId: string | undefined, options?: UseInboxCallsOptions): import("@tanstack/react-query").UseQueryResult<import("..").InboxCallsResponse, Error>;
|
|
6
|
+
//# sourceMappingURL=use-inbox-calls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-inbox-calls.d.ts","sourceRoot":"","sources":["../../src/hooks/use-inbox-calls.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,oBAAoB,GAAG;IACjC,6EAA6E;IAC7E,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,wBAAgB,aAAa,CAC3B,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,CAAC,EAAE,oBAAoB,0FAS/B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { useQuery } from '@tanstack/react-query';
|
|
2
|
+
import { useApiClient } from '../context';
|
|
3
|
+
export function useInboxCalls(phoneNumberId, options) {
|
|
4
|
+
const client = useApiClient();
|
|
5
|
+
const enabled = options?.enabled !== false && Boolean(phoneNumberId);
|
|
6
|
+
return useQuery({
|
|
7
|
+
queryKey: ['inbox', 'calls', phoneNumberId],
|
|
8
|
+
queryFn: () => client.getInboxCalls(phoneNumberId),
|
|
9
|
+
enabled,
|
|
10
|
+
});
|
|
11
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-inbox-messages.d.ts","sourceRoot":"","sources":["../../src/hooks/use-inbox-messages.ts"],"names":[],"mappings":"AAGA,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"use-inbox-messages.d.ts","sourceRoot":"","sources":["../../src/hooks/use-inbox-messages.ts"],"names":[],"mappings":"AAGA,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,6FAS5D"}
|
|
@@ -6,5 +6,7 @@ export function useInboxMessages(threadId) {
|
|
|
6
6
|
queryKey: ['inbox', 'messages', threadId],
|
|
7
7
|
queryFn: () => client.getInboxThreadMessages(threadId),
|
|
8
8
|
enabled: Boolean(threadId),
|
|
9
|
+
refetchInterval: threadId ? 30000 : false, // fallback; realtime drives updates
|
|
10
|
+
refetchOnWindowFocus: true,
|
|
9
11
|
});
|
|
10
12
|
}
|
|
@@ -1,2 +1,5 @@
|
|
|
1
|
-
export
|
|
1
|
+
export type GetInboxThreadsParams = {
|
|
2
|
+
status?: 'active' | 'archived';
|
|
3
|
+
};
|
|
4
|
+
export declare function useInboxThreads(phoneNumberId: string | undefined, params?: GetInboxThreadsParams): import("@tanstack/react-query").UseQueryResult<import("..").InboxThreadsResponse, Error>;
|
|
2
5
|
//# sourceMappingURL=use-inbox-threads.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-inbox-threads.d.ts","sourceRoot":"","sources":["../../src/hooks/use-inbox-threads.ts"],"names":[],"mappings":"AAGA,wBAAgB,eAAe,
|
|
1
|
+
{"version":3,"file":"use-inbox-threads.d.ts","sourceRoot":"","sources":["../../src/hooks/use-inbox-threads.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;CAC/B,CAAA;AAED,wBAAgB,eAAe,CAC7B,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,MAAM,CAAC,EAAE,qBAAqB,4FAQ/B"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { useQuery } from '@tanstack/react-query';
|
|
2
2
|
import { useApiClient } from '../context';
|
|
3
|
-
export function useInboxThreads(phoneNumberId) {
|
|
3
|
+
export function useInboxThreads(phoneNumberId, params) {
|
|
4
4
|
const client = useApiClient();
|
|
5
5
|
return useQuery({
|
|
6
|
-
queryKey: ['inbox', 'threads', phoneNumberId],
|
|
7
|
-
queryFn: () => client.getInboxThreads(phoneNumberId),
|
|
6
|
+
queryKey: ['inbox', 'threads', phoneNumberId, params?.status],
|
|
7
|
+
queryFn: () => client.getInboxThreads(phoneNumberId, params),
|
|
8
8
|
enabled: Boolean(phoneNumberId),
|
|
9
9
|
});
|
|
10
10
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { InboxThreadsResponse } from '../types';
|
|
2
|
+
export declare function useMarkInboxThreadRead(): import("@tanstack/react-query").UseMutationResult<{
|
|
3
|
+
ok: true;
|
|
4
|
+
}, Error, string, {
|
|
5
|
+
previous: [readonly unknown[], InboxThreadsResponse | undefined][];
|
|
6
|
+
}>;
|
|
7
|
+
//# sourceMappingURL=use-mark-inbox-thread-read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-mark-inbox-thread-read.d.ts","sourceRoot":"","sources":["../../src/hooks/use-mark-inbox-thread-read.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAIpD,wBAAgB,sBAAsB;;;;GAkCrC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
|
2
|
+
import { useApiClient } from '../context';
|
|
3
|
+
const THREADS_QUERY_KEY_PREFIX = ['inbox', 'threads'];
|
|
4
|
+
export function useMarkInboxThreadRead() {
|
|
5
|
+
const client = useApiClient();
|
|
6
|
+
const queryClient = useQueryClient();
|
|
7
|
+
return useMutation({
|
|
8
|
+
mutationFn: (threadId) => client.markInboxThreadRead(threadId),
|
|
9
|
+
onMutate: async (threadId) => {
|
|
10
|
+
const previous = queryClient.getQueriesData({
|
|
11
|
+
queryKey: THREADS_QUERY_KEY_PREFIX,
|
|
12
|
+
exact: false,
|
|
13
|
+
});
|
|
14
|
+
queryClient.setQueriesData({ queryKey: THREADS_QUERY_KEY_PREFIX, exact: false }, (data) => {
|
|
15
|
+
if (!data?.threads?.length)
|
|
16
|
+
return data;
|
|
17
|
+
return {
|
|
18
|
+
threads: data.threads.map((t) => t.id === threadId ? { ...t, unread_count: 0 } : t),
|
|
19
|
+
};
|
|
20
|
+
});
|
|
21
|
+
return { previous };
|
|
22
|
+
},
|
|
23
|
+
onError: (_err, _variables, context) => {
|
|
24
|
+
if (context?.previous) {
|
|
25
|
+
context.previous.forEach(([queryKey, data]) => {
|
|
26
|
+
queryClient.setQueryData(queryKey, data);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
onSettled: () => {
|
|
31
|
+
queryClient.invalidateQueries({ queryKey: THREADS_QUERY_KEY_PREFIX });
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { InboxThreadsResponse } from '../types';
|
|
2
|
+
export declare function useMarkInboxThreadUnread(): import("@tanstack/react-query").UseMutationResult<{
|
|
3
|
+
ok: true;
|
|
4
|
+
}, Error, string, {
|
|
5
|
+
previous: [readonly unknown[], InboxThreadsResponse | undefined][];
|
|
6
|
+
}>;
|
|
7
|
+
//# sourceMappingURL=use-mark-inbox-thread-unread.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-mark-inbox-thread-unread.d.ts","sourceRoot":"","sources":["../../src/hooks/use-mark-inbox-thread-unread.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAIpD,wBAAgB,wBAAwB;;;;GAkCvC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
|
2
|
+
import { useApiClient } from '../context';
|
|
3
|
+
const THREADS_QUERY_KEY_PREFIX = ['inbox', 'threads'];
|
|
4
|
+
export function useMarkInboxThreadUnread() {
|
|
5
|
+
const client = useApiClient();
|
|
6
|
+
const queryClient = useQueryClient();
|
|
7
|
+
return useMutation({
|
|
8
|
+
mutationFn: (threadId) => client.markInboxThreadUnread(threadId),
|
|
9
|
+
onMutate: async (threadId) => {
|
|
10
|
+
const previous = queryClient.getQueriesData({
|
|
11
|
+
queryKey: THREADS_QUERY_KEY_PREFIX,
|
|
12
|
+
exact: false,
|
|
13
|
+
});
|
|
14
|
+
queryClient.setQueriesData({ queryKey: THREADS_QUERY_KEY_PREFIX, exact: false }, (data) => {
|
|
15
|
+
if (!data?.threads?.length)
|
|
16
|
+
return data;
|
|
17
|
+
return {
|
|
18
|
+
threads: data.threads.map((t) => t.id === threadId ? { ...t, unread_count: (t.unread_count ?? 0) || 1 } : t),
|
|
19
|
+
};
|
|
20
|
+
});
|
|
21
|
+
return { previous };
|
|
22
|
+
},
|
|
23
|
+
onError: (_err, _variables, context) => {
|
|
24
|
+
if (context?.previous) {
|
|
25
|
+
context.previous.forEach(([queryKey, data]) => {
|
|
26
|
+
queryClient.setQueryData(queryKey, data);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
onSettled: () => {
|
|
31
|
+
queryClient.invalidateQueries({ queryKey: THREADS_QUERY_KEY_PREFIX });
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Message snippets for the current org (GET /api/settings/messaging/snippets).
|
|
3
|
+
* Use in Settings Snippets section and Inbox snippet picker.
|
|
4
|
+
*/
|
|
5
|
+
export declare function useMessageSnippets(): import("@tanstack/react-query").UseQueryResult<import("..").MessageSnippetsResponse, Error>;
|
|
6
|
+
//# sourceMappingURL=use-message-snippets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-message-snippets.d.ts","sourceRoot":"","sources":["../../src/hooks/use-message-snippets.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,kBAAkB,gGAMjC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useQuery } from '@tanstack/react-query';
|
|
2
|
+
import { useApiClient } from '../context';
|
|
3
|
+
/**
|
|
4
|
+
* Message snippets for the current org (GET /api/settings/messaging/snippets).
|
|
5
|
+
* Use in Settings Snippets section and Inbox snippet picker.
|
|
6
|
+
*/
|
|
7
|
+
export function useMessageSnippets() {
|
|
8
|
+
const client = useApiClient();
|
|
9
|
+
return useQuery({
|
|
10
|
+
queryKey: ['message-snippets'],
|
|
11
|
+
queryFn: () => client.getMessageSnippets(),
|
|
12
|
+
});
|
|
13
|
+
}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
import type { SendInboxMessagePayload } from '../types';
|
|
1
|
+
import type { InboxMessagesResponse, InboxThreadsResponse, SendInboxMessagePayload } from '../types';
|
|
2
2
|
export declare function useSendInboxMessage(): import("@tanstack/react-query").UseMutationResult<import("..").SendInboxMessageResponse, Error, {
|
|
3
3
|
phoneNumberId: string;
|
|
4
4
|
body: SendInboxMessagePayload;
|
|
5
|
-
},
|
|
5
|
+
}, {
|
|
6
|
+
previousMessages: null;
|
|
7
|
+
previousThreads?: undefined;
|
|
8
|
+
} | {
|
|
9
|
+
previousMessages: readonly [readonly ["inbox", "messages", string], InboxMessagesResponse] | null;
|
|
10
|
+
previousThreads: [readonly unknown[], InboxThreadsResponse | undefined][];
|
|
11
|
+
}>;
|
|
6
12
|
//# sourceMappingURL=use-send-inbox-message.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-send-inbox-message.d.ts","sourceRoot":"","sources":["../../src/hooks/use-send-inbox-message.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"use-send-inbox-message.d.ts","sourceRoot":"","sources":["../../src/hooks/use-send-inbox-message.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACxB,MAAM,UAAU,CAAA;AAkDjB,wBAAgB,mBAAmB;mBAQd,MAAM;UACf,uBAAuB;;;;;;;GA2ElC"}
|
|
@@ -1,15 +1,113 @@
|
|
|
1
1
|
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
|
2
2
|
import { useApiClient } from '../context';
|
|
3
|
+
const THREADS_QUERY_KEY_PREFIX = ['inbox', 'threads'];
|
|
4
|
+
const MESSAGES_QUERY_KEY_PREFIX = ['inbox', 'messages'];
|
|
5
|
+
function buildOptimisticMessage(threadId, body, tempId) {
|
|
6
|
+
const occurredAt = new Date().toISOString();
|
|
7
|
+
const rawMediaUrl = Array.isArray(body.media_url)
|
|
8
|
+
? body.media_url[0] ?? null
|
|
9
|
+
: body.media_url ?? null;
|
|
10
|
+
const hasAttachmentMetas = Boolean(body.attachment_metas?.length);
|
|
11
|
+
// Match backend: only show media_url when no attachment_metas, or first media is external (e.g. GIF)
|
|
12
|
+
const mediaUrl = rawMediaUrl && (!hasAttachmentMetas || body.first_media_is_external) ? rawMediaUrl : null;
|
|
13
|
+
// For upload-only: use first media URL as display URL for the first attachment so the image shows before send completes
|
|
14
|
+
const firstAttachmentDisplayUrl = hasAttachmentMetas && !body.first_media_is_external && rawMediaUrl ? rawMediaUrl : null;
|
|
15
|
+
const attachments = body.attachment_metas?.map((m, i) => ({
|
|
16
|
+
id: `optimistic-att-${tempId}-${i}`,
|
|
17
|
+
message_id: tempId,
|
|
18
|
+
org_id: '',
|
|
19
|
+
file_path: m.file_path,
|
|
20
|
+
file_name: m.file_name,
|
|
21
|
+
mime_type: m.mime_type,
|
|
22
|
+
file_size: 0,
|
|
23
|
+
sort_order: i,
|
|
24
|
+
signed_url: i === 0 ? firstAttachmentDisplayUrl : null,
|
|
25
|
+
}));
|
|
26
|
+
return {
|
|
27
|
+
id: tempId,
|
|
28
|
+
thread_id: threadId,
|
|
29
|
+
org_id: '',
|
|
30
|
+
direction: 'outbound',
|
|
31
|
+
body: body.body ?? '',
|
|
32
|
+
occurred_at: occurredAt,
|
|
33
|
+
status: 'sending',
|
|
34
|
+
provider_message_id: null,
|
|
35
|
+
phone_number_id: null,
|
|
36
|
+
user_id: null,
|
|
37
|
+
card_id: body.card_id ?? null,
|
|
38
|
+
contact_id: body.contact_id ?? null,
|
|
39
|
+
media_url: mediaUrl ?? undefined,
|
|
40
|
+
attachments: attachments?.length ? attachments : undefined,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
3
43
|
export function useSendInboxMessage() {
|
|
4
44
|
const client = useApiClient();
|
|
5
45
|
const queryClient = useQueryClient();
|
|
6
46
|
return useMutation({
|
|
7
47
|
mutationFn: ({ phoneNumberId, body, }) => client.sendInboxMessage(phoneNumberId, body),
|
|
8
|
-
|
|
48
|
+
onMutate: async ({ body }) => {
|
|
49
|
+
const threadId = body.thread_id;
|
|
50
|
+
if (!threadId)
|
|
51
|
+
return { previousMessages: null };
|
|
52
|
+
const messagesKey = [...MESSAGES_QUERY_KEY_PREFIX, threadId];
|
|
53
|
+
const previousMessages = queryClient.getQueryData(messagesKey);
|
|
54
|
+
const tempId = `optimistic-${Date.now()}`;
|
|
55
|
+
const optimisticMessage = buildOptimisticMessage(threadId, body, tempId);
|
|
56
|
+
queryClient.setQueryData(messagesKey, (data) => {
|
|
57
|
+
const messages = data?.messages ?? [];
|
|
58
|
+
return { messages: [...messages, optimisticMessage] };
|
|
59
|
+
});
|
|
60
|
+
const previousThreads = queryClient.getQueriesData({
|
|
61
|
+
queryKey: THREADS_QUERY_KEY_PREFIX,
|
|
62
|
+
exact: false,
|
|
63
|
+
});
|
|
64
|
+
queryClient.setQueriesData({ queryKey: THREADS_QUERY_KEY_PREFIX, exact: false }, (data) => {
|
|
65
|
+
if (!data?.threads?.length)
|
|
66
|
+
return data;
|
|
67
|
+
return {
|
|
68
|
+
threads: data.threads.map((t) => {
|
|
69
|
+
if (t.id !== threadId)
|
|
70
|
+
return t;
|
|
71
|
+
return {
|
|
72
|
+
...t,
|
|
73
|
+
last_message_at: optimisticMessage.occurred_at,
|
|
74
|
+
last_message_preview: optimisticMessage.body?.slice(0, 80) ||
|
|
75
|
+
(optimisticMessage.media_url ? 'Attachment' : null) ||
|
|
76
|
+
t.last_message_preview,
|
|
77
|
+
updated_at: optimisticMessage.occurred_at,
|
|
78
|
+
};
|
|
79
|
+
}),
|
|
80
|
+
};
|
|
81
|
+
});
|
|
82
|
+
return {
|
|
83
|
+
previousMessages: previousMessages
|
|
84
|
+
? [messagesKey, previousMessages]
|
|
85
|
+
: null,
|
|
86
|
+
previousThreads,
|
|
87
|
+
};
|
|
88
|
+
},
|
|
89
|
+
onError: (_err, _variables, context) => {
|
|
90
|
+
if (context?.previousMessages) {
|
|
91
|
+
const [queryKey, data] = context.previousMessages;
|
|
92
|
+
queryClient.setQueryData(queryKey, data);
|
|
93
|
+
}
|
|
94
|
+
if (context?.previousThreads?.length) {
|
|
95
|
+
context.previousThreads.forEach(([queryKey, data]) => {
|
|
96
|
+
queryClient.setQueryData(queryKey, data);
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
onSuccess: (data, { phoneNumberId, body }) => {
|
|
101
|
+
// Invalidate so refetch runs; do not remove the optimistic message here — the refetch
|
|
102
|
+
// replaces the cache with server data, avoiding a flicker where the message disappears
|
|
103
|
+
// before the real one appears.
|
|
9
104
|
queryClient.invalidateQueries({ queryKey: ['inbox', 'threads', phoneNumberId] });
|
|
10
105
|
if (body.thread_id) {
|
|
11
106
|
queryClient.invalidateQueries({ queryKey: ['inbox', 'messages', body.thread_id] });
|
|
12
107
|
}
|
|
108
|
+
if (data?.threadId) {
|
|
109
|
+
queryClient.invalidateQueries({ queryKey: ['inbox', 'messages', data.threadId] });
|
|
110
|
+
}
|
|
13
111
|
},
|
|
14
112
|
});
|
|
15
113
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { InboxThreadsResponse } from '../types';
|
|
2
|
+
export declare function useUpdateInboxThreadStatus(): import("@tanstack/react-query").UseMutationResult<{
|
|
3
|
+
ok: true;
|
|
4
|
+
status: string;
|
|
5
|
+
}, Error, {
|
|
6
|
+
threadId: string;
|
|
7
|
+
status: "active" | "archived";
|
|
8
|
+
}, {
|
|
9
|
+
previous: [readonly unknown[], InboxThreadsResponse | undefined][];
|
|
10
|
+
}>;
|
|
11
|
+
//# sourceMappingURL=use-update-inbox-thread-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-update-inbox-thread-status.d.ts","sourceRoot":"","sources":["../../src/hooks/use-update-inbox-thread-status.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAIpD,wBAAgB,0BAA0B;;;;cAQ1B,MAAM;YACR,QAAQ,GAAG,UAAU;;;GA+BlC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { useMutation, useQueryClient } from '@tanstack/react-query';
|
|
2
|
+
import { useApiClient } from '../context';
|
|
3
|
+
const THREADS_QUERY_KEY_PREFIX = ['inbox', 'threads'];
|
|
4
|
+
export function useUpdateInboxThreadStatus() {
|
|
5
|
+
const client = useApiClient();
|
|
6
|
+
const queryClient = useQueryClient();
|
|
7
|
+
return useMutation({
|
|
8
|
+
mutationFn: ({ threadId, status, }) => client.updateInboxThreadStatus(threadId, status),
|
|
9
|
+
onMutate: async ({ threadId, status }) => {
|
|
10
|
+
const previous = queryClient.getQueriesData({
|
|
11
|
+
queryKey: THREADS_QUERY_KEY_PREFIX,
|
|
12
|
+
exact: false,
|
|
13
|
+
});
|
|
14
|
+
queryClient.setQueriesData({ queryKey: THREADS_QUERY_KEY_PREFIX, exact: false }, (data) => {
|
|
15
|
+
if (!data?.threads?.length)
|
|
16
|
+
return data;
|
|
17
|
+
return {
|
|
18
|
+
threads: data.threads.map((t) => t.id === threadId ? { ...t, status } : t),
|
|
19
|
+
};
|
|
20
|
+
});
|
|
21
|
+
return { previous };
|
|
22
|
+
},
|
|
23
|
+
onError: (_err, _variables, context) => {
|
|
24
|
+
if (context?.previous) {
|
|
25
|
+
context.previous.forEach(([queryKey, data]) => {
|
|
26
|
+
queryClient.setQueryData(queryKey, data);
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
onSettled: () => {
|
|
31
|
+
queryClient.invalidateQueries({ queryKey: THREADS_QUERY_KEY_PREFIX });
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
export { createApiClient } from './client';
|
|
5
5
|
export type { ApiClientConfig, ApiClient } from './client';
|
|
6
6
|
export { ApiProvider, useApiClient } from './context';
|
|
7
|
-
export type { FlattenedLead, LeadSubmissionsResponse, TaskStatus, TaskListItem, TaskCallOutcomeType, TaskChatOutcomeType, TaskOutcomeType, MeetingStatus, MeetingProvider, MeetingMode, Meeting, CreateMeetingPayload, PipelineCard, PostMeetingBookedPromptResponse, Pipeline, PipelineStage, TeamMember, TeamMembersResponse, MeUser, MeMembership, MeOrganization, MeResponse, RescheduleMeetingPayload, GetAvailabilitySlotsParams, GetAvailabilitySlotsResponse, AvailabilitySlot, EventType, EventTypeHost, PhoneNumberRecord, PhoneNumberAssignmentRecord, PhoneNumbersResponse, InboxThreadListItem, InboxThreadsResponse, InboxMessage, InboxMessagesResponse, SendInboxMessagePayload, SendInboxMessageResponse, } from './types';
|
|
8
|
-
export { useLeads, useTasks, useMeetings, usePipelines, useStages, useTeamMembers, useMe, usePhoneNumbers, useInboxThreads, useInboxMessages, useSendInboxMessage, } from './hooks';
|
|
9
|
-
export type { GetLeadSubmissionsParams, GetTasksParams, GetMeetingsParams, GetPipelinesParams, } from './hooks';
|
|
7
|
+
export type { FlattenedLead, LeadSubmissionsResponse, ContactLeadSubmission, ContactLeadSubmissionsResponse, TaskStatus, TaskListItem, TaskCallOutcomeType, TaskChatOutcomeType, TaskOutcomeType, MeetingStatus, MeetingProvider, MeetingMode, Meeting, CreateMeetingPayload, PipelineCard, PostMeetingBookedPromptResponse, Pipeline, PipelineStage, TeamMember, TeamMembersResponse, MeUser, MeMembership, MeOrganization, MeResponse, RescheduleMeetingPayload, GetAvailabilitySlotsParams, GetAvailabilitySlotsResponse, AvailabilitySlot, EventType, EventTypeHost, PhoneNumberRecord, PhoneNumberAssignmentRecord, PhoneNumbersResponse, InboxThreadListItem, InboxThreadsResponse, InboxMessageAttachment, InboxMessage, InboxMessagesResponse, InboxCallEvent, InboxCallListItem, InboxCallsResponse, CreateInboxCallPayload, VoiceTokenResponse, UploadInboxMediaResponse, SendInboxMessagePayload, SendInboxMessageResponse, MessageSnippet, MessageSnippetsResponse, CreateMessageSnippetPayload, UpdateMessageSnippetPayload, InboxGif, InboxGifsResponse, } from './types';
|
|
8
|
+
export { useLeads, useContactLeadSubmissions, useContactMeetings, useTasks, useMeetings, usePipelines, useStages, useTeamMembers, useMe, usePhoneNumbers, useInboxThreads, useInboxMessages, useInboxCalls, useSendInboxMessage, useMarkInboxThreadRead, useMarkInboxThreadUnread, useUpdateInboxThreadStatus, useDeleteInboxThread, useMessageSnippets, } from './hooks';
|
|
9
|
+
export type { GetLeadSubmissionsParams, GetTasksParams, GetMeetingsParams, GetPipelinesParams, GetInboxThreadsParams, UseInboxCallsOptions, } from './hooks';
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC1C,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAG1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAGrD,YAAY,EACV,aAAa,EACb,uBAAuB,EACvB,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,eAAe,EACf,WAAW,EACX,OAAO,EACP,oBAAoB,EACpB,YAAY,EACZ,+BAA+B,EAC/B,QAAQ,EACR,aAAa,EACb,UAAU,EACV,mBAAmB,EACnB,MAAM,EACN,YAAY,EACZ,cAAc,EACd,UAAU,EACV,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,EAC5B,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,2BAA2B,EAC3B,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAC1C,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAG1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAGrD,YAAY,EACV,aAAa,EACb,uBAAuB,EACvB,qBAAqB,EACrB,8BAA8B,EAC9B,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,eAAe,EACf,WAAW,EACX,OAAO,EACP,oBAAoB,EACpB,YAAY,EACZ,+BAA+B,EAC/B,QAAQ,EACR,aAAa,EACb,UAAU,EACV,mBAAmB,EACnB,MAAM,EACN,YAAY,EACZ,cAAc,EACd,UAAU,EACV,wBAAwB,EACxB,0BAA0B,EAC1B,4BAA4B,EAC5B,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,2BAA2B,EAC3B,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,cAAc,EACd,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,QAAQ,EACR,iBAAiB,GAClB,MAAM,SAAS,CAAA;AAGhB,OAAO,EACL,QAAQ,EACR,yBAAyB,EACzB,kBAAkB,EAClB,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,SAAS,EACT,cAAc,EACd,KAAK,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,wBAAwB,EACxB,0BAA0B,EAC1B,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,SAAS,CAAA;AAChB,YAAY,EACV,wBAAwB,EACxB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,SAAS,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -6,4 +6,4 @@ export { createApiClient } from './client';
|
|
|
6
6
|
// Context (React)
|
|
7
7
|
export { ApiProvider, useApiClient } from './context';
|
|
8
8
|
// Hooks
|
|
9
|
-
export { useLeads, useTasks, useMeetings, usePipelines, useStages, useTeamMembers, useMe, usePhoneNumbers, useInboxThreads, useInboxMessages, useSendInboxMessage, } from './hooks';
|
|
9
|
+
export { useLeads, useContactLeadSubmissions, useContactMeetings, useTasks, useMeetings, usePipelines, useStages, useTeamMembers, useMe, usePhoneNumbers, useInboxThreads, useInboxMessages, useInboxCalls, useSendInboxMessage, useMarkInboxThreadRead, useMarkInboxThreadUnread, useUpdateInboxThreadStatus, useDeleteInboxThread, useMessageSnippets, } from './hooks';
|
package/dist/types.d.ts
CHANGED
|
@@ -81,6 +81,21 @@ export interface LeadSubmissionsResponse {
|
|
|
81
81
|
offset: number;
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
|
+
export interface ContactLeadSubmission {
|
|
85
|
+
id: string;
|
|
86
|
+
created_at: string;
|
|
87
|
+
status: string;
|
|
88
|
+
form_id: string;
|
|
89
|
+
card_id: string | null;
|
|
90
|
+
primary_contact_id: string;
|
|
91
|
+
lead_forms: {
|
|
92
|
+
id: string;
|
|
93
|
+
name: string;
|
|
94
|
+
} | null;
|
|
95
|
+
}
|
|
96
|
+
export interface ContactLeadSubmissionsResponse {
|
|
97
|
+
submissions: ContactLeadSubmission[];
|
|
98
|
+
}
|
|
84
99
|
export type TaskStatus = 'todo' | 'in_progress' | 'completed' | 'cancelled';
|
|
85
100
|
export interface TaskListItem {
|
|
86
101
|
id: string;
|
|
@@ -353,6 +368,8 @@ export interface InboxThreadListItem {
|
|
|
353
368
|
contact_display_name?: string | null;
|
|
354
369
|
/** Contact phone number (for SMS threads) */
|
|
355
370
|
contact_phone_number?: string | null;
|
|
371
|
+
/** Contact email (for variable resolution) */
|
|
372
|
+
contact_email?: string | null;
|
|
356
373
|
/** Last message body snippet for preview */
|
|
357
374
|
last_message_preview?: string | null;
|
|
358
375
|
/** Optional unread count for this thread */
|
|
@@ -361,6 +378,19 @@ export interface InboxThreadListItem {
|
|
|
361
378
|
export interface InboxThreadsResponse {
|
|
362
379
|
threads: InboxThreadListItem[];
|
|
363
380
|
}
|
|
381
|
+
/** Single attachment on a message (from message_attachments). */
|
|
382
|
+
export interface InboxMessageAttachment {
|
|
383
|
+
id: string;
|
|
384
|
+
message_id: string;
|
|
385
|
+
org_id: string;
|
|
386
|
+
file_path: string;
|
|
387
|
+
file_name: string;
|
|
388
|
+
mime_type: string;
|
|
389
|
+
file_size: number;
|
|
390
|
+
sort_order: number;
|
|
391
|
+
/** Signed URL for display/download; populated by GET thread messages. */
|
|
392
|
+
signed_url?: string | null;
|
|
393
|
+
}
|
|
364
394
|
/** Single message in a thread. */
|
|
365
395
|
export interface InboxMessage {
|
|
366
396
|
id: string;
|
|
@@ -376,16 +406,83 @@ export interface InboxMessage {
|
|
|
376
406
|
card_id: string | null;
|
|
377
407
|
contact_id: string | null;
|
|
378
408
|
created_at?: string;
|
|
409
|
+
/** Optional URL for MMS media (e.g. GIF). Shown as image in thread. */
|
|
410
|
+
media_url?: string | null;
|
|
411
|
+
/** Attachments (MMS media) stored in inbox-attachments; includes signed_url when returned by GET messages. */
|
|
412
|
+
attachments?: InboxMessageAttachment[];
|
|
413
|
+
}
|
|
414
|
+
/** Single call event in a thread (from call_events table). */
|
|
415
|
+
export interface InboxCallEvent {
|
|
416
|
+
id: string;
|
|
417
|
+
thread_id: string;
|
|
418
|
+
org_id: string;
|
|
419
|
+
contact_id: string | null;
|
|
420
|
+
phone_number_id: string | null;
|
|
421
|
+
user_id: string | null;
|
|
422
|
+
twilio_call_sid: string | null;
|
|
423
|
+
direction: 'inbound' | 'outbound';
|
|
424
|
+
status: string;
|
|
425
|
+
duration_sec: number | null;
|
|
426
|
+
recording_url: string | null;
|
|
427
|
+
/** Twilio AMD: human, machine, fax, etc. Used to show "Voicemail" when machine/fax. */
|
|
428
|
+
answered_by?: string | null;
|
|
429
|
+
/** Full transcript from recording (e.g. Deepgram). */
|
|
430
|
+
transcript_text?: string | null;
|
|
431
|
+
/** Short AI-generated call summary. */
|
|
432
|
+
call_summary?: string | null;
|
|
433
|
+
/** AI-generated next steps (array of strings). */
|
|
434
|
+
call_summary_next_steps?: string[] | null;
|
|
435
|
+
occurred_at: string;
|
|
436
|
+
created_at?: string;
|
|
437
|
+
updated_at?: string;
|
|
379
438
|
}
|
|
380
439
|
export interface InboxMessagesResponse {
|
|
381
440
|
messages: InboxMessage[];
|
|
441
|
+
/** Call events in this thread; merge with messages by occurred_at for timeline. */
|
|
442
|
+
call_events?: InboxCallEvent[];
|
|
443
|
+
}
|
|
444
|
+
/** Call event with optional contact fields (from GET phone-numbers/[id]/calls). */
|
|
445
|
+
export interface InboxCallListItem extends InboxCallEvent {
|
|
446
|
+
contact_display_name?: string | null;
|
|
447
|
+
contact_phone_number?: string | null;
|
|
448
|
+
contact_email?: string | null;
|
|
449
|
+
}
|
|
450
|
+
export interface InboxCallsResponse {
|
|
451
|
+
calls: InboxCallListItem[];
|
|
452
|
+
}
|
|
453
|
+
/** Payload for creating an outbound call event (POST /api/inbox/calls). */
|
|
454
|
+
export interface CreateInboxCallPayload {
|
|
455
|
+
thread_id: string;
|
|
456
|
+
phone_number_id?: string;
|
|
457
|
+
}
|
|
458
|
+
/** Response from POST /api/phone-numbers/[id]/voice-token (Twilio Voice Access Token). */
|
|
459
|
+
export interface VoiceTokenResponse {
|
|
460
|
+
token: string;
|
|
461
|
+
fromNumber: string;
|
|
462
|
+
}
|
|
463
|
+
/** Metadata for one outbound attachment (from upload-media); used to persist message_attachments. */
|
|
464
|
+
export interface OutboundAttachmentMeta {
|
|
465
|
+
file_path: string;
|
|
466
|
+
file_name: string;
|
|
467
|
+
mime_type: string;
|
|
468
|
+
}
|
|
469
|
+
/** Response from POST /api/phone-numbers/[id]/upload-media (signed URLs + attachment metadata). */
|
|
470
|
+
export interface UploadInboxMediaResponse {
|
|
471
|
+
urls: string[];
|
|
472
|
+
attachments?: OutboundAttachmentMeta[];
|
|
382
473
|
}
|
|
383
474
|
/** Payload for sending an outbound message from an inbox. */
|
|
384
475
|
export interface SendInboxMessagePayload {
|
|
385
476
|
/** Recipient E.164 phone number */
|
|
386
477
|
to: string;
|
|
387
|
-
/** Message body */
|
|
478
|
+
/** Message body (required by Twilio; use empty string when sending only media) */
|
|
388
479
|
body: string;
|
|
480
|
+
/** Optional: MMS media URL(s), e.g. GIF from GIPHY. Sent via Twilio MediaUrl. */
|
|
481
|
+
media_url?: string | string[];
|
|
482
|
+
/** Optional: attachment metadata from upload-media; persisted as message_attachments so UI shows all images. */
|
|
483
|
+
attachment_metas?: OutboundAttachmentMeta[];
|
|
484
|
+
/** When true, the first media_url is external (e.g. GIF); store it in message.media_url even when attachment_metas exist. */
|
|
485
|
+
first_media_is_external?: boolean;
|
|
389
486
|
/** Optional: link to existing thread (avoids duplicate thread creation) */
|
|
390
487
|
thread_id?: string;
|
|
391
488
|
/** Optional: contact id (if known) */
|
|
@@ -399,4 +496,36 @@ export interface SendInboxMessageResponse {
|
|
|
399
496
|
threadId?: string;
|
|
400
497
|
error?: string;
|
|
401
498
|
}
|
|
499
|
+
export interface MessageSnippet {
|
|
500
|
+
id: string;
|
|
501
|
+
org_id: string;
|
|
502
|
+
name: string;
|
|
503
|
+
body: string;
|
|
504
|
+
created_at: string;
|
|
505
|
+
updated_at: string;
|
|
506
|
+
}
|
|
507
|
+
export interface MessageSnippetsResponse {
|
|
508
|
+
snippets: MessageSnippet[];
|
|
509
|
+
}
|
|
510
|
+
export interface CreateMessageSnippetPayload {
|
|
511
|
+
name: string;
|
|
512
|
+
body?: string;
|
|
513
|
+
}
|
|
514
|
+
export interface UpdateMessageSnippetPayload {
|
|
515
|
+
name?: string;
|
|
516
|
+
body?: string;
|
|
517
|
+
}
|
|
518
|
+
export interface InboxGif {
|
|
519
|
+
id: string;
|
|
520
|
+
title: string;
|
|
521
|
+
/** Still/lightweight image URL for grid thumbnails. */
|
|
522
|
+
preview_url: string;
|
|
523
|
+
/** Animated GIF URL for message send/display. */
|
|
524
|
+
send_url: string;
|
|
525
|
+
tags: string[];
|
|
526
|
+
}
|
|
527
|
+
export interface InboxGifsResponse {
|
|
528
|
+
gifs: InboxGif[];
|
|
529
|
+
error?: string;
|
|
530
|
+
}
|
|
402
531
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|