@epam/ai-dial-chat-hooks 1.3.0-dev.282 → 1.3.0-dev.288
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/entry-points/project.d.ts +3 -0
- package/entry-points/project.d.ts.map +1 -1
- package/index.d.ts +3 -0
- package/index.d.ts.map +1 -1
- package/index.js +122 -119
- package/package.json +17 -17
- package/project/project-events.d.ts +2 -2
- package/project/project-events.d.ts.map +1 -1
- package/project/project-events.js +3 -2
- package/project/project-refresh.d.ts +12 -0
- package/project/project-refresh.d.ts.map +1 -0
- package/project/project-refresh.js +6 -0
- package/project/project-watch-stream.d.ts +26 -0
- package/project/project-watch-stream.d.ts.map +1 -0
- package/project/project-watch-stream.js +39 -0
- package/project/projects-api-client.d.ts +6 -0
- package/project/projects-api-client.d.ts.map +1 -1
- package/project/projects-api-client.js +1 -0
- package/project/use-project-conversations.d.ts +8 -6
- package/project/use-project-conversations.d.ts.map +1 -1
- package/project/use-project-conversations.js +129 -56
- package/project/use-project-watch.d.ts +24 -0
- package/project/use-project-watch.d.ts.map +1 -0
- package/project/use-project-watch.js +41 -0
- package/project/use-project.d.ts +4 -1
- package/project/use-project.d.ts.map +1 -1
- package/project/use-project.js +47 -22
- package/project/use-projects.d.ts.map +1 -1
- package/project/use-projects.js +49 -68
- package/project.js +8 -5
- package/shared/serialized-writer.d.ts +10 -0
- package/shared/serialized-writer.d.ts.map +1 -0
- package/shared/serialized-writer.js +35 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { parseProjectWatchEvent as e } from "./project-events.js";
|
|
2
|
+
import { readSseEvents as t } from "../shared/read-sse-events.js";
|
|
3
|
+
//#region src/project/project-watch-stream.ts
|
|
4
|
+
var n = [
|
|
5
|
+
1e3,
|
|
6
|
+
2e3,
|
|
7
|
+
4e3,
|
|
8
|
+
8e3,
|
|
9
|
+
16e3
|
|
10
|
+
], r = ({ watchProjects: r, ids: i, signal: a, onEvent: o, onReconnected: s, onUnavailable: c }) => {
|
|
11
|
+
let l;
|
|
12
|
+
a.addEventListener("abort", () => clearTimeout(l), { once: !0 });
|
|
13
|
+
let u = (t) => {
|
|
14
|
+
let n = e(t);
|
|
15
|
+
return n != null && o(n), a.aborted;
|
|
16
|
+
}, d = (e) => {
|
|
17
|
+
let t = n[e];
|
|
18
|
+
t == null ? c() : l = setTimeout(() => {
|
|
19
|
+
f(e, !0);
|
|
20
|
+
}, t);
|
|
21
|
+
}, f = async (e, n) => {
|
|
22
|
+
let o;
|
|
23
|
+
try {
|
|
24
|
+
o = await r(i, a);
|
|
25
|
+
} catch {
|
|
26
|
+
if (a.aborted) return;
|
|
27
|
+
if (!n) {
|
|
28
|
+
c();
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
d(e + 1);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
n && s(), await t(o, u), !a.aborted && d(0);
|
|
35
|
+
};
|
|
36
|
+
f(0, !1);
|
|
37
|
+
};
|
|
38
|
+
//#endregion
|
|
39
|
+
export { n as WATCH_RECONNECT_DELAYS_MS, r as runProjectWatch };
|
|
@@ -69,6 +69,10 @@ export interface ProjectsConfiguredClient {
|
|
|
69
69
|
id: string;
|
|
70
70
|
conversationName: string;
|
|
71
71
|
}) => Promise<void>;
|
|
72
|
+
markProjectConversationViewed: (request: {
|
|
73
|
+
id: string;
|
|
74
|
+
conversationName: string;
|
|
75
|
+
}) => Promise<void>;
|
|
72
76
|
attachToProjectGenerationRaw: (request: {
|
|
73
77
|
id: string;
|
|
74
78
|
attachGenerationDto: {
|
|
@@ -140,6 +144,8 @@ export interface ProjectsApiClient {
|
|
|
140
144
|
saveProjectConversation: (conversationId: string, conversation: ConversationResponseDto) => Promise<ConversationResponseDto>;
|
|
141
145
|
renameProjectConversation: (conversationId: string, newTitle: string) => Promise<RenameConversationResponseDto>;
|
|
142
146
|
deleteProjectConversation: (conversationId: string) => Promise<void>;
|
|
147
|
+
/** Records that the caller has seen the conversation's current version; a host without it keeps no read state. */
|
|
148
|
+
markProjectConversationViewed?: (conversationId: string) => Promise<void>;
|
|
143
149
|
attachToProjectGeneration: (projectId: string, path: string, signal?: AbortSignal) => Promise<ReadableStream<Uint8Array>>;
|
|
144
150
|
/** Opens the SSE stream of changes to the given projects; a host without it gets no live updates. */
|
|
145
151
|
watchProjects?: (ids: string[], signal?: AbortSignal) => Promise<ReadableStream<Uint8Array>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects-api-client.d.ts","sourceRoot":"","sources":["../../src/project/projects-api-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"projects-api-client.d.ts","sourceRoot":"","sources":["../../src/project/projects-api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -68,6 +68,7 @@ var e = (e) => {
|
|
|
68
68
|
renameConversationBodyDto: { newTitle: r }
|
|
69
69
|
}),
|
|
70
70
|
deleteProjectConversation: (n) => e.deleteProjectConversation(t(n)),
|
|
71
|
+
markProjectConversationViewed: (n) => e.markProjectConversationViewed(t(n)),
|
|
71
72
|
attachToProjectGeneration: async (t, r, i) => {
|
|
72
73
|
let { raw: a } = await e.attachToProjectGenerationRaw({
|
|
73
74
|
id: t,
|
|
@@ -2,20 +2,22 @@ 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
|
-
* changes or the view unmounts.
|
|
9
|
-
* failure for the caller's toast.
|
|
5
|
+
* state: the first page is read once per project (and on retry), `loadMore`
|
|
6
|
+
* appends the next one, `refresh` silently re-reads the rows already shown
|
|
7
|
+
* for live updates, and rename, delete and `markViewed` update the list in
|
|
8
|
+
* place. Requests are aborted when the project changes or the view unmounts.
|
|
9
|
+
* Rename, delete and `loadMore` reject on failure for the caller's toast.
|
|
10
10
|
*
|
|
11
11
|
* @param client - Configured project requests, from `createProjectsApiClient`; it must be referentially stable, because a new object reloads the list.
|
|
12
12
|
* @param projectId - The project's DIAL id, or `null` while none is known.
|
|
13
13
|
*/
|
|
14
|
-
export declare const useProjectConversations: (client: Pick<ProjectsApiClient, "listProjectConversations" | "renameProjectConversation" | "deleteProjectConversation">, projectId: string | null) => {
|
|
14
|
+
export declare const useProjectConversations: (client: Pick<ProjectsApiClient, "listProjectConversations" | "renameProjectConversation" | "deleteProjectConversation" | "markProjectConversationViewed">, projectId: string | null) => {
|
|
15
15
|
retry: () => void;
|
|
16
16
|
loadMore: () => Promise<void>;
|
|
17
17
|
rename: (id: string, newTitle: string) => Promise<void>;
|
|
18
18
|
remove: (id: string) => Promise<void>;
|
|
19
|
+
refresh: () => Promise<void>;
|
|
20
|
+
markViewed: (id: string) => void;
|
|
19
21
|
items: ProjectConversationListItem[];
|
|
20
22
|
isLoading: boolean;
|
|
21
23
|
hasError: boolean;
|
|
@@ -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;AA2D/D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,GAClC,QAAQ,IAAI,CACV,iBAAiB,EACf,0BAA0B,GAC1B,2BAA2B,GAC3B,2BAA2B,GAC3B,+BAA+B,CAClC,EACD,WAAW,MAAM,GAAG,IAAI;;;iBAyKX,MAAM,YAAY,MAAM;iBAaxB,MAAM;;qBAlCZ,MAAM;WA/NN,2BAA2B,EAAE;eACzB,OAAO;cACR,OAAO;IACjB,8CAA8C;aACrC,OAAO;IAChB,mCAAmC;mBACpB,OAAO;CA8QvB,CAAC"}
|
|
@@ -9,30 +9,44 @@ var i = {
|
|
|
9
9
|
}, a = {
|
|
10
10
|
...i,
|
|
11
11
|
isLoading: !1
|
|
12
|
-
}, o =
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
}, o = 50, s = 100, c = (e, t) => e.map(({ id: e, title: n, author: r, updatedAt: i, isUnread: a }) => {
|
|
13
|
+
let o = a;
|
|
14
|
+
if (t.has(e)) {
|
|
15
|
+
let n = t.get(e);
|
|
16
|
+
i != null && n != null && i > n ? t.delete(e) : o = !1;
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
id: e,
|
|
20
|
+
title: n,
|
|
21
|
+
authorName: r,
|
|
22
|
+
...o ? { isUnread: !0 } : {}
|
|
23
|
+
};
|
|
24
|
+
}), l = (l, u) => {
|
|
25
|
+
let [d, f] = r(i), [p, m] = r(0), h = n(null), g = n(null), _ = n(0), v = n(/* @__PURE__ */ new Map()), y = n(/* @__PURE__ */ new Map()), b = n(d);
|
|
18
26
|
t(() => {
|
|
19
|
-
|
|
20
|
-
|
|
27
|
+
b.current = d;
|
|
28
|
+
});
|
|
29
|
+
let x = e((e) => {
|
|
30
|
+
for (let { id: t, updatedAt: n } of e) y.current.set(t, n);
|
|
31
|
+
}, []);
|
|
32
|
+
t(() => {
|
|
33
|
+
if (v.current = /* @__PURE__ */ new Map(), y.current = /* @__PURE__ */ new Map(), u == null) {
|
|
34
|
+
f(a);
|
|
21
35
|
return;
|
|
22
36
|
}
|
|
23
37
|
let e = new AbortController();
|
|
24
|
-
return
|
|
25
|
-
|
|
38
|
+
return h.current = e, (async () => {
|
|
39
|
+
f((e) => ({
|
|
26
40
|
...e,
|
|
27
41
|
isLoading: !0,
|
|
28
42
|
hasError: !1,
|
|
29
43
|
isLoadingMore: !1
|
|
30
44
|
}));
|
|
31
45
|
try {
|
|
32
|
-
let t = await
|
|
46
|
+
let t = await l.listProjectConversations(u, e.signal);
|
|
33
47
|
if (e.signal.aborted) return;
|
|
34
|
-
|
|
35
|
-
items:
|
|
48
|
+
x(t.items), f({
|
|
49
|
+
items: c(t.items, v.current),
|
|
36
50
|
isLoading: !1,
|
|
37
51
|
hasError: !1,
|
|
38
52
|
hasMore: t.hasMore,
|
|
@@ -40,70 +54,129 @@ var i = {
|
|
|
40
54
|
});
|
|
41
55
|
} catch {
|
|
42
56
|
if (e.signal.aborted) return;
|
|
43
|
-
|
|
57
|
+
f({
|
|
44
58
|
...a,
|
|
45
59
|
hasError: !0
|
|
46
60
|
});
|
|
47
61
|
}
|
|
48
|
-
})(), () =>
|
|
62
|
+
})(), () => {
|
|
63
|
+
e.abort(), g.current?.abort();
|
|
64
|
+
};
|
|
49
65
|
}, [
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
66
|
+
l,
|
|
67
|
+
u,
|
|
68
|
+
p,
|
|
69
|
+
x
|
|
53
70
|
]);
|
|
54
|
-
let
|
|
55
|
-
let e =
|
|
56
|
-
if (
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
...e,
|
|
68
|
-
items: [...e.items, ...o(t).filter((e) => !n.has(e.id))],
|
|
69
|
-
hasMore: t.hasMore,
|
|
70
|
-
isLoadingMore: !1
|
|
71
|
-
};
|
|
72
|
-
});
|
|
73
|
-
} catch (t) {
|
|
74
|
-
if (e.signal.aborted) return;
|
|
75
|
-
throw u((e) => ({
|
|
71
|
+
let S = e(() => m((e) => e + 1), []), C = e(async () => {
|
|
72
|
+
let e = h.current;
|
|
73
|
+
if (u == null || e == null) return;
|
|
74
|
+
let t = _.current;
|
|
75
|
+
f((e) => ({
|
|
76
|
+
...e,
|
|
77
|
+
isLoadingMore: !0
|
|
78
|
+
}));
|
|
79
|
+
try {
|
|
80
|
+
let n = await l.listProjectConversations(u, e.signal, { offset: d.items.length });
|
|
81
|
+
if (e.signal.aborted) return;
|
|
82
|
+
if (t !== _.current) {
|
|
83
|
+
f((e) => ({
|
|
76
84
|
...e,
|
|
77
85
|
isLoadingMore: !1
|
|
78
|
-
}))
|
|
86
|
+
}));
|
|
87
|
+
return;
|
|
79
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
|
+
});
|
|
98
|
+
} catch (t) {
|
|
99
|
+
if (e.signal.aborted) return;
|
|
100
|
+
throw f((e) => ({
|
|
101
|
+
...e,
|
|
102
|
+
isLoadingMore: !1
|
|
103
|
+
})), t;
|
|
104
|
+
}
|
|
105
|
+
}, [
|
|
106
|
+
l,
|
|
107
|
+
u,
|
|
108
|
+
x,
|
|
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();
|
|
114
|
+
let t = new AbortController();
|
|
115
|
+
g.current = t, _.current += 1;
|
|
116
|
+
let n = Math.max(e.items.length, o), r = [], i = !0;
|
|
117
|
+
try {
|
|
118
|
+
for (; r.length < n && i;) {
|
|
119
|
+
let e = await l.listProjectConversations(u, t.signal, {
|
|
120
|
+
offset: r.length,
|
|
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
|
+
}
|
|
126
|
+
} catch {
|
|
127
|
+
return;
|
|
80
128
|
}
|
|
129
|
+
if (t.signal.aborted) return;
|
|
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) => ({
|
|
133
|
+
...e,
|
|
134
|
+
items: d,
|
|
135
|
+
hasMore: i,
|
|
136
|
+
isLoadingMore: !1
|
|
137
|
+
}));
|
|
81
138
|
}, [
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
])
|
|
86
|
-
|
|
87
|
-
|
|
139
|
+
l,
|
|
140
|
+
u,
|
|
141
|
+
x
|
|
142
|
+
]);
|
|
143
|
+
t(() => () => g.current?.abort(), []);
|
|
144
|
+
let T = e((e) => {
|
|
145
|
+
v.current.set(e, y.current.get(e)), f((t) => ({
|
|
146
|
+
...t,
|
|
147
|
+
items: t.items.map((t) => t.id === e && t.isUnread ? {
|
|
148
|
+
...t,
|
|
149
|
+
isUnread: !1
|
|
150
|
+
} : t)
|
|
151
|
+
})), (async () => {
|
|
152
|
+
try {
|
|
153
|
+
await l.markProjectConversationViewed?.(e);
|
|
154
|
+
} catch {}
|
|
155
|
+
})();
|
|
156
|
+
}, [l]), E = e(async (e, t) => {
|
|
157
|
+
let { name: n } = await l.renameProjectConversation(e, t);
|
|
158
|
+
f((t) => ({
|
|
88
159
|
...t,
|
|
89
160
|
items: t.items.map((t) => t.id === e ? {
|
|
90
161
|
...t,
|
|
91
162
|
title: n
|
|
92
163
|
} : t)
|
|
93
164
|
}));
|
|
94
|
-
}, [
|
|
95
|
-
await
|
|
165
|
+
}, [l]), D = e(async (e) => {
|
|
166
|
+
await l.deleteProjectConversation(e), f((t) => ({
|
|
96
167
|
...t,
|
|
97
168
|
items: t.items.filter((t) => t.id !== e)
|
|
98
169
|
}));
|
|
99
|
-
}, [
|
|
170
|
+
}, [l]);
|
|
100
171
|
return {
|
|
101
|
-
...
|
|
102
|
-
retry:
|
|
103
|
-
loadMore:
|
|
104
|
-
rename:
|
|
105
|
-
remove:
|
|
172
|
+
...d,
|
|
173
|
+
retry: S,
|
|
174
|
+
loadMore: C,
|
|
175
|
+
rename: E,
|
|
176
|
+
remove: D,
|
|
177
|
+
refresh: w,
|
|
178
|
+
markViewed: T
|
|
106
179
|
};
|
|
107
180
|
};
|
|
108
181
|
//#endregion
|
|
109
|
-
export {
|
|
182
|
+
export { l as useProjectConversations };
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ProjectsApiClient } from './projects-api-client';
|
|
2
|
+
/** What `useProjectWatch` reports to the page that shows one project. */
|
|
3
|
+
export interface ProjectWatchOptions {
|
|
4
|
+
/** The loaded snapshot's aggregate ETag; the watch opens once it is known, and an event carrying it is skipped. */
|
|
5
|
+
etag: string | undefined;
|
|
6
|
+
/** Silent refresh of everything the page shows; at most one runs at a time, and a rejection is ignored. */
|
|
7
|
+
onChange: () => Promise<void>;
|
|
8
|
+
/** The project was deleted elsewhere; called at most once per project id. */
|
|
9
|
+
onDelete: () => void;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Keeps a page showing one project current: it watches that project, runs
|
|
13
|
+
* `onChange` for each change the page has not loaded yet — one at a time,
|
|
14
|
+
* plus one trailing run for whatever arrived meanwhile — and `onDelete` once
|
|
15
|
+
* when the project is deleted. A dropped stream is reopened with a bounded
|
|
16
|
+
* backoff and followed by one `onChange`; a watch that cannot be opened is
|
|
17
|
+
* not retried for the rest of the visit.
|
|
18
|
+
*
|
|
19
|
+
* @param client - Configured project requests, from `createProjectsApiClient`; it must be referentially stable, because a new object resubscribes.
|
|
20
|
+
* @param projectId - The watched project's DIAL id, or `null` while none is known.
|
|
21
|
+
* @param options - The loaded ETag and the page's callbacks; read at event time, so new identities never resubscribe.
|
|
22
|
+
*/
|
|
23
|
+
export declare const useProjectWatch: (client: Pick<ProjectsApiClient, "watchProjects">, projectId: string | null, options: ProjectWatchOptions) => void;
|
|
24
|
+
//# sourceMappingURL=use-project-watch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-project-watch.d.ts","sourceRoot":"","sources":["../../src/project/use-project-watch.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,yEAAyE;AACzE,MAAM,WAAW,mBAAmB;IAClC,mHAAmH;IACnH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,2GAA2G;IAC3G,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe,GAC1B,QAAQ,IAAI,CAAC,iBAAiB,EAAE,eAAe,CAAC,EAChD,WAAW,MAAM,GAAG,IAAI,EACxB,SAAS,mBAAmB,KAC3B,IAwEF,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { runProjectWatch as e } from "./project-watch-stream.js";
|
|
2
|
+
import { useEffect as t, useRef as n } from "react";
|
|
3
|
+
import { ProjectWatchAction as r } from "@epam/ai-dial-chat-api-client";
|
|
4
|
+
//#region src/project/use-project-watch.ts
|
|
5
|
+
var i = (i, a, o) => {
|
|
6
|
+
let s = n(o);
|
|
7
|
+
t(() => {
|
|
8
|
+
s.current = o;
|
|
9
|
+
});
|
|
10
|
+
let c = n(null), l = o.etag != null, { watchProjects: u } = i;
|
|
11
|
+
t(() => {
|
|
12
|
+
if (u == null || a == null || !l || c.current === a) return;
|
|
13
|
+
let t = new AbortController(), n = !1, i = !1, o = () => {
|
|
14
|
+
t.signal.aborted || (n ? i = !0 : (n = !0, (async () => {
|
|
15
|
+
try {
|
|
16
|
+
await s.current.onChange();
|
|
17
|
+
} catch {} finally {
|
|
18
|
+
n = !1, i && (i = !1, o());
|
|
19
|
+
}
|
|
20
|
+
})()));
|
|
21
|
+
};
|
|
22
|
+
return e({
|
|
23
|
+
watchProjects: u,
|
|
24
|
+
ids: [a],
|
|
25
|
+
signal: t.signal,
|
|
26
|
+
onEvent: (e) => {
|
|
27
|
+
e.id !== a || t.signal.aborted || (e.action === r.Delete ? (i = !1, t.abort(), s.current.onDelete()) : (e.etag == null || e.etag !== s.current.etag) && o());
|
|
28
|
+
},
|
|
29
|
+
onReconnected: o,
|
|
30
|
+
onUnavailable: () => {
|
|
31
|
+
c.current = a;
|
|
32
|
+
}
|
|
33
|
+
}), () => t.abort();
|
|
34
|
+
}, [
|
|
35
|
+
u,
|
|
36
|
+
a,
|
|
37
|
+
l
|
|
38
|
+
]);
|
|
39
|
+
};
|
|
40
|
+
//#endregion
|
|
41
|
+
export { i as useProjectWatch };
|
package/project/use-project.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { ProjectDetailsDto } from '@epam/ai-dial-chat-api-client';
|
|
2
|
+
import { ProjectRefreshOutcome } from './project-refresh';
|
|
2
3
|
import { ProjectsApiClient } from './projects-api-client';
|
|
3
4
|
/**
|
|
4
5
|
* Loads one project's details. Loading is derived from whether a result
|
|
5
6
|
* answers the current id and reload token, so a page never renders a stale
|
|
6
7
|
* project for a new id. A `404` is a not-found result, every other failure an
|
|
7
|
-
* error; the request is aborted on unmount and on an id change.
|
|
8
|
+
* error; the request is aborted on unmount and on an id change. `refresh`
|
|
9
|
+
* re-reads the loaded project without the loading state, for live updates.
|
|
8
10
|
*
|
|
9
11
|
* @param client - Configured project requests, from `createProjectsApiClient`; it must be referentially stable, because a new object reloads.
|
|
10
12
|
* @param id - The project's DIAL id, or `null` when the route names none.
|
|
@@ -16,5 +18,6 @@ export declare const useProject: (client: Pick<ProjectsApiClient, "getProject">,
|
|
|
16
18
|
hasError: boolean;
|
|
17
19
|
isNotFound: boolean;
|
|
18
20
|
retry: () => void;
|
|
21
|
+
refresh: () => Promise<ProjectRefreshOutcome>;
|
|
19
22
|
};
|
|
20
23
|
//# sourceMappingURL=use-project.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-project.d.ts","sourceRoot":"","sources":["../../src/project/use-project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAU/D
|
|
1
|
+
{"version":3,"file":"use-project.d.ts","sourceRoot":"","sources":["../../src/project/use-project.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAGvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAU/D;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,GACrB,QAAQ,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC,EAC7C,IAAI,MAAM,GAAG,IAAI,EACjB,SAAS,OAAO;;;;;;mBA2CsB,OAAO,CAAC,qBAAqB,CAAC;CA8BrE,CAAC"}
|
package/project/use-project.js
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { getApiErrorStatus as e } from "../api-error/api-error.js";
|
|
2
|
-
import {
|
|
2
|
+
import { ProjectRefreshOutcome as t } from "./project-refresh.js";
|
|
3
|
+
import { useCallback as n, useEffect as r, useRef as i, useState as a } from "react";
|
|
3
4
|
//#region src/project/use-project.ts
|
|
4
|
-
var
|
|
5
|
-
let [
|
|
6
|
-
|
|
7
|
-
if (!
|
|
5
|
+
var o = (o, s, c) => {
|
|
6
|
+
let [l, u] = a(0), [d, f] = a(), p = `${l}:${s ?? ""}`;
|
|
7
|
+
r(() => {
|
|
8
|
+
if (!c || s == null) return;
|
|
8
9
|
let t = new AbortController();
|
|
9
10
|
return (async () => {
|
|
10
11
|
try {
|
|
11
|
-
let e = await
|
|
12
|
+
let e = await o.getProject(s, t.signal);
|
|
12
13
|
if (t.signal.aborted) return;
|
|
13
|
-
|
|
14
|
-
key:
|
|
14
|
+
f({
|
|
15
|
+
key: p,
|
|
15
16
|
project: e,
|
|
16
17
|
hasError: !1,
|
|
17
18
|
isNotFound: !1
|
|
@@ -19,8 +20,8 @@ var i = (i, a, o) => {
|
|
|
19
20
|
} catch (n) {
|
|
20
21
|
if (t.signal.aborted) return;
|
|
21
22
|
let r = e(n) === 404;
|
|
22
|
-
|
|
23
|
-
key:
|
|
23
|
+
f({
|
|
24
|
+
key: p,
|
|
24
25
|
project: null,
|
|
25
26
|
hasError: !r,
|
|
26
27
|
isNotFound: r
|
|
@@ -28,21 +29,45 @@ var i = (i, a, o) => {
|
|
|
28
29
|
}
|
|
29
30
|
})(), () => t.abort();
|
|
30
31
|
}, [
|
|
31
|
-
i,
|
|
32
32
|
o,
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
c,
|
|
34
|
+
s,
|
|
35
|
+
p
|
|
36
|
+
]);
|
|
37
|
+
let m = n(() => {
|
|
38
|
+
u((e) => e + 1);
|
|
39
|
+
}, []), h = d?.key === p ? d : void 0, g = h?.project ?? null, _ = i(null);
|
|
40
|
+
r(() => () => {
|
|
41
|
+
_.current?.abort(), _.current = null;
|
|
42
|
+
}, [p]);
|
|
43
|
+
let v = n(async () => {
|
|
44
|
+
if (g == null || s == null) return t.Skipped;
|
|
45
|
+
_.current?.abort();
|
|
46
|
+
let n = new AbortController();
|
|
47
|
+
_.current = n;
|
|
48
|
+
try {
|
|
49
|
+
let e = await o.getProject(s, n.signal);
|
|
50
|
+
return n.signal.aborted ? t.Skipped : (f((t) => t?.key === p ? {
|
|
51
|
+
...t,
|
|
52
|
+
project: e
|
|
53
|
+
} : t), t.Updated);
|
|
54
|
+
} catch (r) {
|
|
55
|
+
return n.signal.aborted ? t.Skipped : e(r) === 404 ? t.NotFound : t.Failed;
|
|
56
|
+
}
|
|
57
|
+
}, [
|
|
58
|
+
o,
|
|
59
|
+
s,
|
|
60
|
+
p,
|
|
61
|
+
g
|
|
35
62
|
]);
|
|
36
|
-
let f = t(() => {
|
|
37
|
-
c((e) => e + 1);
|
|
38
|
-
}, []), p = l?.key === d ? l : void 0;
|
|
39
63
|
return {
|
|
40
|
-
project:
|
|
41
|
-
isLoading:
|
|
42
|
-
hasError:
|
|
43
|
-
isNotFound:
|
|
44
|
-
retry:
|
|
64
|
+
project: g,
|
|
65
|
+
isLoading: c && s != null && h == null,
|
|
66
|
+
hasError: h?.hasError ?? !1,
|
|
67
|
+
isNotFound: h?.isNotFound ?? !1,
|
|
68
|
+
retry: m,
|
|
69
|
+
refresh: v
|
|
45
70
|
};
|
|
46
71
|
};
|
|
47
72
|
//#endregion
|
|
48
|
-
export {
|
|
73
|
+
export { o as useProject };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-projects.d.ts","sourceRoot":"","sources":["../../src/project/use-projects.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAKzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"use-projects.d.ts","sourceRoot":"","sources":["../../src/project/use-projects.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAKzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAoC/D;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,WAAW,GACtB,QAAQ,IAAI,CAAC,iBAAiB,EAAE,cAAc,GAAG,eAAe,CAAC,EACjE,SAAS,OAAO;;;;;;CAmGjB,CAAC"}
|