@epam/ai-dial-chat-hooks 1.3.0-dev.294 → 1.3.0-dev.296
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/package.json +17 -17
- package/project/projects-api-client.d.ts +9 -11
- package/project/projects-api-client.d.ts.map +1 -1
- package/project/projects-api-client.js +4 -3
- package/project/use-project-conversations.d.ts +15 -13
- package/project/use-project-conversations.d.ts.map +1 -1
- package/project/use-project-conversations.js +127 -110
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@epam/ai-dial-chat-hooks",
|
|
3
3
|
"description": "Framework-level React hooks extracted from AI DIAL Chat for building custom chat interfaces",
|
|
4
|
-
"version": "1.3.0-dev.
|
|
4
|
+
"version": "1.3.0-dev.296",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./index.js",
|
|
@@ -131,7 +131,7 @@
|
|
|
131
131
|
}
|
|
132
132
|
},
|
|
133
133
|
"dependencies": {
|
|
134
|
-
"@epam/ai-dial-chat-api-client": "1.3.0-dev.
|
|
134
|
+
"@epam/ai-dial-chat-api-client": "1.3.0-dev.296",
|
|
135
135
|
"dompurify": "3.4.17",
|
|
136
136
|
"fflate": "^0.8.3",
|
|
137
137
|
"lru-cache": "^10.4.3",
|
|
@@ -140,23 +140,23 @@
|
|
|
140
140
|
},
|
|
141
141
|
"peerDependencies": {
|
|
142
142
|
"react": "^19.2.8",
|
|
143
|
-
"@epam/ai-dial-attachment-canvas": "1.3.0-dev.
|
|
144
|
-
"@epam/ai-dial-attachment-input": "1.3.0-dev.
|
|
145
|
-
"@epam/ai-dial-catalog": "1.3.0-dev.
|
|
146
|
-
"@epam/ai-dial-chat-overlay": "1.3.0-dev.
|
|
147
|
-
"@epam/ai-dial-chat-shared": "1.3.0-dev.
|
|
148
|
-
"@epam/ai-dial-conversation-input": "1.3.0-dev.
|
|
149
|
-
"@epam/ai-dial-mcp-apps": "1.3.0-dev.
|
|
150
|
-
"@epam/ai-dial-projects": "1.3.0-dev.
|
|
151
|
-
"@epam/ai-dial-publish-panel": "1.3.0-dev.
|
|
152
|
-
"@epam/ai-dial-quotations": "1.3.0-dev.
|
|
143
|
+
"@epam/ai-dial-attachment-canvas": "1.3.0-dev.296",
|
|
144
|
+
"@epam/ai-dial-attachment-input": "1.3.0-dev.296",
|
|
145
|
+
"@epam/ai-dial-catalog": "1.3.0-dev.296",
|
|
146
|
+
"@epam/ai-dial-chat-overlay": "1.3.0-dev.296",
|
|
147
|
+
"@epam/ai-dial-chat-shared": "1.3.0-dev.296",
|
|
148
|
+
"@epam/ai-dial-conversation-input": "1.3.0-dev.296",
|
|
149
|
+
"@epam/ai-dial-mcp-apps": "1.3.0-dev.296",
|
|
150
|
+
"@epam/ai-dial-projects": "1.3.0-dev.296",
|
|
151
|
+
"@epam/ai-dial-publish-panel": "1.3.0-dev.296",
|
|
152
|
+
"@epam/ai-dial-quotations": "1.3.0-dev.296",
|
|
153
153
|
"@epam/ai-dial-react-file-manager": "^0.4.0-dev.25",
|
|
154
|
-
"@epam/ai-dial-scheduled-tasks": "1.3.0-dev.
|
|
155
|
-
"@epam/ai-dial-share": "1.3.0-dev.
|
|
156
|
-
"@epam/ai-dial-skill-editor": "1.3.0-dev.
|
|
157
|
-
"@epam/ai-dial-source-panel": "1.3.0-dev.
|
|
154
|
+
"@epam/ai-dial-scheduled-tasks": "1.3.0-dev.296",
|
|
155
|
+
"@epam/ai-dial-share": "1.3.0-dev.296",
|
|
156
|
+
"@epam/ai-dial-skill-editor": "1.3.0-dev.296",
|
|
157
|
+
"@epam/ai-dial-source-panel": "1.3.0-dev.296",
|
|
158
158
|
"@epam/ai-dial-ui-kit": "^0.16.0-dev.67",
|
|
159
|
-
"@epam/ai-dial-usage-dashboard": "1.3.0-dev.
|
|
159
|
+
"@epam/ai-dial-usage-dashboard": "1.3.0-dev.296",
|
|
160
160
|
"@modelcontextprotocol/sdk": "^1.32.2",
|
|
161
161
|
"@epam/pdf-highlighter-kit": "^0.0.19"
|
|
162
162
|
},
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AttachmentDto, ConversationResponseDto, CreateConversationDto, CreateProjectResponseDto, ListProjectsResponseDto, ProjectArtifactListResponseDto, ProjectConversationListResponseDto, ProjectDetailsDto, RenameConversationResponseDto, UpdateProjectResponseDto } from '@epam/ai-dial-chat-api-client';
|
|
1
|
+
import { AttachmentDto, ConversationResponseDto, CreateConversationDto, CreateProjectResponseDto, ListProjectsResponseDto, ProjectArtifactListResponseDto, ProjectConversationListResponseDto, ProjectConversationTitlesResponseDto, ProjectDetailsDto, RenameConversationResponseDto, UpdateProjectResponseDto } from '@epam/ai-dial-chat-api-client';
|
|
2
2
|
import { RequestSkill } from '@epam/ai-dial-chat-shared';
|
|
3
3
|
/** A generated-client `Raw` answer, of which only the native response is read. */
|
|
4
4
|
interface RawApiResponse {
|
|
@@ -40,9 +40,13 @@ export interface ProjectsConfiguredClient {
|
|
|
40
40
|
}, options?: RequestInit) => Promise<RawApiResponse>;
|
|
41
41
|
listProjectConversations: (request: {
|
|
42
42
|
id: string;
|
|
43
|
-
limit?: number;
|
|
44
|
-
offset?: number;
|
|
45
43
|
}, options?: RequestInit) => Promise<ProjectConversationListResponseDto>;
|
|
44
|
+
getProjectConversationTitles: (request: {
|
|
45
|
+
id: string;
|
|
46
|
+
projectConversationTitlesBodyDto: {
|
|
47
|
+
names: string[];
|
|
48
|
+
};
|
|
49
|
+
}, options?: RequestInit) => Promise<ProjectConversationTitlesResponseDto>;
|
|
46
50
|
listProjectArtifacts: (request: {
|
|
47
51
|
id: string;
|
|
48
52
|
}, options?: RequestInit) => Promise<ProjectArtifactListResponseDto>;
|
|
@@ -110,13 +114,6 @@ export interface ProjectUpdateRequest {
|
|
|
110
114
|
/** The loaded project's `contentVersion`; a conversation written meanwhile does not change it. */
|
|
111
115
|
contentVersion: string;
|
|
112
116
|
}
|
|
113
|
-
/** One page of a project's conversations, newest first. */
|
|
114
|
-
export interface ProjectConversationListPage {
|
|
115
|
-
/** Page size, `1..100`; the BFF defaults to 50. */
|
|
116
|
-
limit?: number;
|
|
117
|
-
/** Conversations to skip; the next page starts at the count already loaded. */
|
|
118
|
-
offset?: number;
|
|
119
|
-
}
|
|
120
117
|
/** The first message of a new top-level or project conversation. */
|
|
121
118
|
export interface ConversationCreateRequest {
|
|
122
119
|
/** The first user message. */
|
|
@@ -143,7 +140,8 @@ export interface ProjectsApiClient {
|
|
|
143
140
|
downloadProjectContextFile: (id: string, fileName: string, signal?: AbortSignal) => Promise<Response>;
|
|
144
141
|
/** Lists the files the agents saved under the project's `artifacts/` folder, newest first. */
|
|
145
142
|
listProjectArtifacts: (projectId: string, signal?: AbortSignal) => Promise<ProjectArtifactListResponseDto>;
|
|
146
|
-
listProjectConversations: (projectId: string, signal?: AbortSignal
|
|
143
|
+
listProjectConversations: (projectId: string, signal?: AbortSignal) => Promise<ProjectConversationListResponseDto>;
|
|
144
|
+
getProjectConversationTitles: (projectId: string, names: string[], signal?: AbortSignal) => Promise<ProjectConversationTitlesResponseDto>;
|
|
147
145
|
createProjectConversation: (projectId: string, request: ConversationCreateRequest) => Promise<ConversationResponseDto>;
|
|
148
146
|
getProjectConversation: (conversationId: string, signal?: AbortSignal) => Promise<ConversationResponseDto>;
|
|
149
147
|
saveProjectConversation: (conversationId: string, conversation: ConversationResponseDto) => Promise<ConversationResponseDto>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects-api-client.d.ts","sourceRoot":"","sources":["../../src/project/projects-api-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,8BAA8B,EAC9B,kCAAkC,EAClC,iBAAiB,EACjB,6BAA6B,EAC7B,wBAAwB,EACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAE9D,kFAAkF;AAClF,UAAU,cAAc;IACtB,GAAG,EAAE,QAAQ,CAAC;CACf;AAED,4FAA4F;AAC5F,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,CAAC,OAAO,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC1E,UAAU,EAAE,CACV,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EACvB,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAChC,aAAa,EAAE,CACb,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;KAChB,EACD,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACvC,aAAa,EAAE,CACb,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;KAChB,EACD,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACvC,aAAa,EAAE,CAAC,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,kBAAkB,EAAE,CAClB,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EACvB,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B,sBAAsB,EAAE,CACtB,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EACzC,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B,wBAAwB,EAAE,CACxB,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"projects-api-client.d.ts","sourceRoot":"","sources":["../../src/project/projects-api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -51,10 +51,11 @@ var e = (e) => {
|
|
|
51
51
|
fileName: r
|
|
52
52
|
}, ...n(i))).raw,
|
|
53
53
|
listProjectArtifacts: (t, r) => e.listProjectArtifacts({ id: t }, ...n(r)),
|
|
54
|
-
listProjectConversations: (t, r
|
|
54
|
+
listProjectConversations: (t, r) => e.listProjectConversations({ id: t }, ...n(r)),
|
|
55
|
+
getProjectConversationTitles: (t, r, i) => e.getProjectConversationTitles({
|
|
55
56
|
id: t,
|
|
56
|
-
|
|
57
|
-
}, ...n(
|
|
57
|
+
projectConversationTitlesBodyDto: { names: r }
|
|
58
|
+
}, ...n(i)),
|
|
58
59
|
createProjectConversation: (t, n) => e.createProjectConversation({
|
|
59
60
|
id: t,
|
|
60
61
|
createConversationDto: r(n)
|
|
@@ -2,28 +2,30 @@ import { ProjectConversationListItem } from '@epam/ai-dial-projects';
|
|
|
2
2
|
import { ProjectsApiClient } from './projects-api-client';
|
|
3
3
|
/**
|
|
4
4
|
* Loads a project's conversations for its Chats list and keeps them in local
|
|
5
|
-
* state
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
5
|
+
* state. DIAL Core cannot page them in display order, so the whole list is
|
|
6
|
+
* read once per project (and on retry) and paged here: the list shows the
|
|
7
|
+
* first 20, and `loadMore` shows 20 more after reading the titles the list
|
|
8
|
+
* left pending. `refresh` silently re-reads the whole list for live updates,
|
|
9
|
+
* and rename, delete and `markViewed` update it in place. Requests are
|
|
10
|
+
* aborted when the project changes or the view unmounts. Rename, delete and
|
|
11
|
+
* `loadMore` reject on failure for the caller's toast.
|
|
10
12
|
*
|
|
11
13
|
* @param client - Configured project requests, from `createProjectsApiClient`; it must be referentially stable, because a new object reloads the list.
|
|
12
14
|
* @param projectId - The project's DIAL id, or `null` while none is known.
|
|
13
15
|
*/
|
|
14
|
-
export declare const useProjectConversations: (client: Pick<ProjectsApiClient, "listProjectConversations" | "renameProjectConversation" | "deleteProjectConversation" | "markProjectConversationViewed">, projectId: string | null) => {
|
|
15
|
-
retry: () => void;
|
|
16
|
-
loadMore: () => Promise<void>;
|
|
17
|
-
rename: (id: string, newTitle: string) => Promise<void>;
|
|
18
|
-
remove: (id: string) => Promise<void>;
|
|
19
|
-
refresh: () => Promise<void>;
|
|
20
|
-
markViewed: (id: string) => void;
|
|
16
|
+
export declare const useProjectConversations: (client: Pick<ProjectsApiClient, "listProjectConversations" | "getProjectConversationTitles" | "renameProjectConversation" | "deleteProjectConversation" | "markProjectConversationViewed">, projectId: string | null) => {
|
|
21
17
|
items: ProjectConversationListItem[];
|
|
22
18
|
isLoading: boolean;
|
|
23
19
|
hasError: boolean;
|
|
24
20
|
/** More conversations exist after `items`. */
|
|
25
21
|
hasMore: boolean;
|
|
26
|
-
/** The next
|
|
22
|
+
/** The titles of the next conversations are being read. */
|
|
27
23
|
isLoadingMore: boolean;
|
|
24
|
+
retry: () => void;
|
|
25
|
+
loadMore: () => Promise<void>;
|
|
26
|
+
rename: (id: string, newTitle: string) => Promise<void>;
|
|
27
|
+
remove: (id: string) => Promise<void>;
|
|
28
|
+
refresh: () => Promise<void>;
|
|
29
|
+
markViewed: (id: string) => void;
|
|
28
30
|
};
|
|
29
31
|
//# sourceMappingURL=use-project-conversations.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-project-conversations.d.ts","sourceRoot":"","sources":["../../src/project/use-project-conversations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"use-project-conversations.d.ts","sourceRoot":"","sources":["../../src/project/use-project-conversations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAE1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AA+F/D;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,uBAAuB,GAClC,QAAQ,IAAI,CACV,iBAAiB,EACf,0BAA0B,GAC1B,8BAA8B,GAC9B,2BAA2B,GAC3B,2BAA2B,GAC3B,+BAA+B,CAClC,EACD,WAAW,MAAM,GAAG,IAAI;;;;IA6NtB,8CAA8C;;IAE9C,2DAA2D;;;;iBA1ChD,MAAM,YAAY,MAAM;iBAaxB,MAAM;;qBAlCZ,MAAM;CAwEd,CAAC"}
|
|
@@ -1,182 +1,199 @@
|
|
|
1
|
-
import { useCallback as e, useEffect as t,
|
|
1
|
+
import { useCallback as e, useEffect as t, useMemo as n, useRef as r, useState as i } from "react";
|
|
2
2
|
//#region src/project/use-project-conversations.ts
|
|
3
|
-
var
|
|
4
|
-
|
|
3
|
+
var a = 20, o = 100, s = {
|
|
4
|
+
rows: [],
|
|
5
|
+
visibleCount: a,
|
|
5
6
|
isLoading: !0,
|
|
6
7
|
hasError: !1,
|
|
7
|
-
hasMore: !1,
|
|
8
8
|
isLoadingMore: !1
|
|
9
|
-
},
|
|
10
|
-
...
|
|
9
|
+
}, c = {
|
|
10
|
+
...s,
|
|
11
11
|
isLoading: !1
|
|
12
|
-
},
|
|
13
|
-
let
|
|
12
|
+
}, l = (e, t) => e.map(({ id: e, name: n, title: r, author: i, updatedAt: a, isUnread: o, isTitlePending: s }) => {
|
|
13
|
+
let c = o;
|
|
14
14
|
if (t.has(e)) {
|
|
15
15
|
let n = t.get(e);
|
|
16
|
-
|
|
16
|
+
a != null && n != null && a > n ? t.delete(e) : c = !1;
|
|
17
17
|
}
|
|
18
18
|
return {
|
|
19
19
|
id: e,
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
name: n,
|
|
21
|
+
title: r,
|
|
22
|
+
authorName: i,
|
|
23
|
+
isTitlePending: s === !0,
|
|
24
|
+
...c ? { isUnread: !0 } : {}
|
|
23
25
|
};
|
|
24
|
-
}),
|
|
25
|
-
|
|
26
|
+
}), u = (e, t) => {
|
|
27
|
+
if (t.length === 0) return e;
|
|
28
|
+
let n = new Map(t.map((e) => [e.id, e]));
|
|
29
|
+
return e.map((e) => n.get(e.id) ?? e);
|
|
30
|
+
}, d = ({ id: e, title: t, authorName: n, isUnread: r }) => ({
|
|
31
|
+
id: e,
|
|
32
|
+
title: t,
|
|
33
|
+
authorName: n,
|
|
34
|
+
...r ? { isUnread: !0 } : {}
|
|
35
|
+
}), f = (f, p) => {
|
|
36
|
+
let [m, h] = i(s), [g, _] = i(0), v = r(null), y = r(null), b = r(!1), x = r(/* @__PURE__ */ new Map()), S = r(/* @__PURE__ */ new Map()), C = r(m);
|
|
26
37
|
t(() => {
|
|
27
|
-
|
|
38
|
+
C.current = m;
|
|
28
39
|
});
|
|
29
|
-
let
|
|
30
|
-
for (let { id: t, updatedAt: n } of e)
|
|
31
|
-
}, [])
|
|
40
|
+
let w = e((e) => {
|
|
41
|
+
for (let { id: t, updatedAt: n } of e) S.current.set(t, n);
|
|
42
|
+
}, []), T = e(async (e, t) => {
|
|
43
|
+
if (p == null) return [];
|
|
44
|
+
let n = e.filter((e) => e.isTitlePending).map((e) => e.name), r = [];
|
|
45
|
+
for (let e = 0; e < n.length; e += o) {
|
|
46
|
+
let { items: i } = await f.getProjectConversationTitles(p, n.slice(e, e + o), t);
|
|
47
|
+
r.push(...i);
|
|
48
|
+
}
|
|
49
|
+
return w(r), l(r, x.current);
|
|
50
|
+
}, [
|
|
51
|
+
f,
|
|
52
|
+
p,
|
|
53
|
+
w
|
|
54
|
+
]), E = e(async (e, t, n) => {
|
|
55
|
+
try {
|
|
56
|
+
let r = await T(e.slice(0, t), n);
|
|
57
|
+
if (n.aborted) return;
|
|
58
|
+
h((e) => ({
|
|
59
|
+
...e,
|
|
60
|
+
rows: u(e.rows, r)
|
|
61
|
+
}));
|
|
62
|
+
} catch {}
|
|
63
|
+
}, [T]);
|
|
32
64
|
t(() => {
|
|
33
|
-
if (
|
|
34
|
-
|
|
65
|
+
if (x.current = /* @__PURE__ */ new Map(), S.current = /* @__PURE__ */ new Map(), p == null) {
|
|
66
|
+
h(c);
|
|
35
67
|
return;
|
|
36
68
|
}
|
|
37
69
|
let e = new AbortController();
|
|
38
|
-
return
|
|
39
|
-
|
|
70
|
+
return v.current = e, (async () => {
|
|
71
|
+
h((e) => ({
|
|
40
72
|
...e,
|
|
41
73
|
isLoading: !0,
|
|
42
74
|
hasError: !1,
|
|
43
75
|
isLoadingMore: !1
|
|
44
76
|
}));
|
|
45
77
|
try {
|
|
46
|
-
let t = await
|
|
78
|
+
let { items: t } = await f.listProjectConversations(p, e.signal);
|
|
47
79
|
if (e.signal.aborted) return;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
hasError: !1,
|
|
52
|
-
hasMore: t.hasMore,
|
|
53
|
-
isLoadingMore: !1
|
|
80
|
+
w(t), h({
|
|
81
|
+
...c,
|
|
82
|
+
rows: l(t, x.current)
|
|
54
83
|
});
|
|
55
84
|
} catch {
|
|
56
85
|
if (e.signal.aborted) return;
|
|
57
|
-
|
|
58
|
-
...
|
|
86
|
+
h({
|
|
87
|
+
...c,
|
|
59
88
|
hasError: !0
|
|
60
89
|
});
|
|
61
90
|
}
|
|
62
91
|
})(), () => {
|
|
63
|
-
e.abort(),
|
|
92
|
+
e.abort(), y.current?.abort();
|
|
64
93
|
};
|
|
65
94
|
}, [
|
|
66
|
-
|
|
67
|
-
u,
|
|
95
|
+
f,
|
|
68
96
|
p,
|
|
69
|
-
|
|
97
|
+
g,
|
|
98
|
+
w
|
|
70
99
|
]);
|
|
71
|
-
let
|
|
72
|
-
let e =
|
|
73
|
-
if (
|
|
74
|
-
|
|
75
|
-
|
|
100
|
+
let D = e(() => _((e) => e + 1), []), O = e(async () => {
|
|
101
|
+
let e = v.current, t = C.current;
|
|
102
|
+
if (p == null || e == null || b.current) return;
|
|
103
|
+
b.current = !0;
|
|
104
|
+
let n = t.visibleCount + a, r = t.rows.slice(t.visibleCount, n);
|
|
105
|
+
h((e) => ({
|
|
76
106
|
...e,
|
|
77
107
|
isLoadingMore: !0
|
|
78
108
|
}));
|
|
79
109
|
try {
|
|
80
|
-
let
|
|
110
|
+
let t = await T(r, e.signal);
|
|
81
111
|
if (e.signal.aborted) return;
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
}
|
|
89
|
-
x(n.items), f((e) => {
|
|
90
|
-
let t = new Set(e.items.map((e) => e.id));
|
|
91
|
-
return {
|
|
92
|
-
...e,
|
|
93
|
-
items: [...e.items, ...c(n.items, v.current).filter((e) => !t.has(e.id))],
|
|
94
|
-
hasMore: n.hasMore,
|
|
95
|
-
isLoadingMore: !1
|
|
96
|
-
};
|
|
97
|
-
});
|
|
112
|
+
h((e) => ({
|
|
113
|
+
...e,
|
|
114
|
+
rows: u(e.rows, t),
|
|
115
|
+
visibleCount: Math.max(e.visibleCount, n),
|
|
116
|
+
isLoadingMore: !1
|
|
117
|
+
}));
|
|
98
118
|
} catch (t) {
|
|
99
119
|
if (e.signal.aborted) return;
|
|
100
|
-
throw
|
|
120
|
+
throw h((e) => ({
|
|
101
121
|
...e,
|
|
102
122
|
isLoadingMore: !1
|
|
103
123
|
})), t;
|
|
124
|
+
} finally {
|
|
125
|
+
b.current = !1;
|
|
104
126
|
}
|
|
105
|
-
}, [
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
d.items.length
|
|
110
|
-
]), w = e(async () => {
|
|
111
|
-
let e = b.current;
|
|
112
|
-
if (u == null || e.isLoading || e.hasError) return;
|
|
113
|
-
g.current?.abort();
|
|
127
|
+
}, [p, T]), k = e(async () => {
|
|
128
|
+
let e = C.current;
|
|
129
|
+
if (p == null || e.isLoading || e.hasError) return;
|
|
130
|
+
y.current?.abort();
|
|
114
131
|
let t = new AbortController();
|
|
115
|
-
|
|
116
|
-
let n
|
|
132
|
+
y.current = t;
|
|
133
|
+
let n;
|
|
117
134
|
try {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
limit: Math.min(s, n - r.length)
|
|
122
|
-
});
|
|
123
|
-
if (t.signal.aborted) return;
|
|
124
|
-
if (r.push(...e.items), i = e.hasMore, e.items.length === 0) break;
|
|
125
|
-
}
|
|
135
|
+
let { items: e } = await f.listProjectConversations(p, t.signal);
|
|
136
|
+
if (t.signal.aborted) return;
|
|
137
|
+
w(e), n = l(e, x.current);
|
|
126
138
|
} catch {
|
|
127
139
|
return;
|
|
128
140
|
}
|
|
129
|
-
|
|
130
|
-
x(r);
|
|
131
|
-
let a = /* @__PURE__ */ new Set(), d = c(r, v.current).filter((e) => !a.has(e.id) && (a.add(e.id), !0));
|
|
132
|
-
f((e) => ({
|
|
141
|
+
h((e) => ({
|
|
133
142
|
...e,
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
isLoadingMore: !1
|
|
137
|
-
}));
|
|
143
|
+
rows: n
|
|
144
|
+
})), await E(n, C.current.visibleCount, t.signal);
|
|
138
145
|
}, [
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
146
|
+
f,
|
|
147
|
+
E,
|
|
148
|
+
p,
|
|
149
|
+
w
|
|
142
150
|
]);
|
|
143
|
-
t(() => () =>
|
|
144
|
-
let
|
|
145
|
-
|
|
151
|
+
t(() => () => y.current?.abort(), []);
|
|
152
|
+
let A = e((e) => {
|
|
153
|
+
x.current.set(e, S.current.get(e)), h((t) => ({
|
|
146
154
|
...t,
|
|
147
|
-
|
|
155
|
+
rows: t.rows.map((t) => t.id === e && t.isUnread ? {
|
|
148
156
|
...t,
|
|
149
157
|
isUnread: !1
|
|
150
158
|
} : t)
|
|
151
159
|
})), (async () => {
|
|
152
160
|
try {
|
|
153
|
-
await
|
|
161
|
+
await f.markProjectConversationViewed?.(e);
|
|
154
162
|
} catch {}
|
|
155
163
|
})();
|
|
156
|
-
}, [
|
|
157
|
-
let { name: n } = await
|
|
158
|
-
|
|
164
|
+
}, [f]), j = e(async (e, t) => {
|
|
165
|
+
let { name: n } = await f.renameProjectConversation(e, t);
|
|
166
|
+
h((t) => ({
|
|
159
167
|
...t,
|
|
160
|
-
|
|
168
|
+
rows: t.rows.map((t) => t.id === e ? {
|
|
161
169
|
...t,
|
|
162
|
-
title: n
|
|
170
|
+
title: n,
|
|
171
|
+
isTitlePending: !1
|
|
163
172
|
} : t)
|
|
164
173
|
}));
|
|
165
|
-
}, [
|
|
166
|
-
await
|
|
174
|
+
}, [f]), M = e(async (e) => {
|
|
175
|
+
await f.deleteProjectConversation(e);
|
|
176
|
+
let { rows: t, visibleCount: n } = C.current, r = t.filter((t) => t.id !== e);
|
|
177
|
+
h((t) => ({
|
|
167
178
|
...t,
|
|
168
|
-
|
|
179
|
+
rows: t.rows.filter((t) => t.id !== e)
|
|
169
180
|
}));
|
|
170
|
-
|
|
181
|
+
let i = v.current;
|
|
182
|
+
i != null && E(r, n, i.signal);
|
|
183
|
+
}, [f, E]), { rows: N, visibleCount: P, isLoading: F, hasError: I, isLoadingMore: L } = m;
|
|
171
184
|
return {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
185
|
+
items: n(() => N.slice(0, P).map(d), [N, P]),
|
|
186
|
+
isLoading: F,
|
|
187
|
+
hasError: I,
|
|
188
|
+
hasMore: P < N.length,
|
|
189
|
+
isLoadingMore: L,
|
|
190
|
+
retry: D,
|
|
191
|
+
loadMore: O,
|
|
192
|
+
rename: j,
|
|
193
|
+
remove: M,
|
|
194
|
+
refresh: k,
|
|
195
|
+
markViewed: A
|
|
179
196
|
};
|
|
180
197
|
};
|
|
181
198
|
//#endregion
|
|
182
|
-
export {
|
|
199
|
+
export { f as useProjectConversations };
|