@go-avro/avro-js 0.0.2-beta.140 → 0.0.2-beta.142
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/QueryClient.d.ts +31 -1
- package/dist/client/QueryClient.js +19 -0
- package/dist/client/hooks/labels.d.ts +1 -0
- package/dist/client/hooks/labels.js +130 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/types/api.d.ts +6 -2
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Socket } from 'socket.io-client';
|
|
2
2
|
import { InfiniteData, QueryClient, UseInfiniteQueryResult, useMutation, UseQueryResult } from '@tanstack/react-query';
|
|
3
3
|
import { AuthManager } from '../auth/AuthManager';
|
|
4
|
-
import { _Event, ApiInfo, Avro, Bill, Break, Chat, Company, FinancialInsightData, Job, EventInsightData, LoginResponse, Message, Plan, Route, ServiceMonth, Session, Team, User, UserCompanyAssociation, Skill, Group } from '../types/api';
|
|
4
|
+
import { _Event, ApiInfo, Avro, Bill, Break, Chat, Company, FinancialInsightData, Job, EventInsightData, LoginResponse, Message, Plan, Route, ServiceMonth, Session, Team, User, UserCompanyAssociation, Skill, Group, Label } from '../types/api';
|
|
5
5
|
import { Tokens } from '../types/auth';
|
|
6
6
|
import { CancelToken, RetryStrategy } from '../types/client';
|
|
7
7
|
import { StandardError } from '../types/error';
|
|
@@ -86,6 +86,13 @@ declare module '../client/QueryClient' {
|
|
|
86
86
|
query?: string;
|
|
87
87
|
paid?: boolean;
|
|
88
88
|
}): UseInfiniteQueryResult<InfiniteData<Bill[], unknown>, StandardError>;
|
|
89
|
+
useGetLabels(body: {
|
|
90
|
+
amt?: number;
|
|
91
|
+
known_ids?: string[];
|
|
92
|
+
unknown_ids?: string[];
|
|
93
|
+
query?: string;
|
|
94
|
+
offset?: number;
|
|
95
|
+
}, total: number, onProgress?: (fraction: number) => void): UseQueryResult<Label[], StandardError>;
|
|
89
96
|
useGetGroups(body: {
|
|
90
97
|
amt?: number;
|
|
91
98
|
known_ids?: string[];
|
|
@@ -120,6 +127,11 @@ declare module '../client/QueryClient' {
|
|
|
120
127
|
}, StandardError, {
|
|
121
128
|
groupData: Partial<Group>;
|
|
122
129
|
}>>;
|
|
130
|
+
useCreateLabel(): ReturnType<typeof useMutation<{
|
|
131
|
+
id: string;
|
|
132
|
+
}, StandardError, {
|
|
133
|
+
labelData: Partial<Label>;
|
|
134
|
+
}>>;
|
|
123
135
|
useCreateSkill(): ReturnType<typeof useMutation<{
|
|
124
136
|
id: string;
|
|
125
137
|
}, StandardError, {
|
|
@@ -204,6 +216,12 @@ declare module '../client/QueryClient' {
|
|
|
204
216
|
groupId: string;
|
|
205
217
|
groupData: Partial<Group>;
|
|
206
218
|
}>>;
|
|
219
|
+
useUpdateLabel(): ReturnType<typeof useMutation<{
|
|
220
|
+
msg: string;
|
|
221
|
+
}, StandardError, {
|
|
222
|
+
labelId: string;
|
|
223
|
+
labelData: Partial<Label>;
|
|
224
|
+
}>>;
|
|
207
225
|
useUpdateJob(): ReturnType<typeof useMutation<{
|
|
208
226
|
msg: string;
|
|
209
227
|
}, StandardError, {
|
|
@@ -281,6 +299,11 @@ declare module '../client/QueryClient' {
|
|
|
281
299
|
}, StandardError, {
|
|
282
300
|
groupId: string;
|
|
283
301
|
}>>;
|
|
302
|
+
useDeleteLabel(): ReturnType<typeof useMutation<{
|
|
303
|
+
msg: string;
|
|
304
|
+
}, StandardError, {
|
|
305
|
+
labelId: string;
|
|
306
|
+
}>>;
|
|
284
307
|
useDeleteEvent(): ReturnType<typeof useMutation<{
|
|
285
308
|
msg: string;
|
|
286
309
|
}, StandardError, {
|
|
@@ -437,6 +460,13 @@ export declare class AvroQueryClient {
|
|
|
437
460
|
query?: string;
|
|
438
461
|
offset?: number;
|
|
439
462
|
}, cancelToken?: CancelToken, headers?: Record<string, string>): Promise<any>;
|
|
463
|
+
fetchLabels(body?: {
|
|
464
|
+
amt?: number;
|
|
465
|
+
known_ids?: string[];
|
|
466
|
+
unknown_ids?: string[];
|
|
467
|
+
query?: string;
|
|
468
|
+
offset?: number;
|
|
469
|
+
}, cancelToken?: CancelToken, headers?: Record<string, string>): Promise<any>;
|
|
440
470
|
fetchGroups(body?: {
|
|
441
471
|
amt?: number;
|
|
442
472
|
known_ids?: string[];
|
|
@@ -408,6 +408,25 @@ export class AvroQueryClient {
|
|
|
408
408
|
throw new StandardError(500, 'Failed to fetch teams');
|
|
409
409
|
});
|
|
410
410
|
}
|
|
411
|
+
fetchLabels(body = {}, cancelToken, headers = {}) {
|
|
412
|
+
if (!this.companyId || this.companyId.trim() === '') {
|
|
413
|
+
throw new StandardError(400, 'Company ID is required');
|
|
414
|
+
}
|
|
415
|
+
return this._fetch('POST', `/company/${this.companyId}/labels`, JSON.stringify(body), cancelToken, {
|
|
416
|
+
...headers,
|
|
417
|
+
'Content-Type': 'application/json',
|
|
418
|
+
})
|
|
419
|
+
.then(response => {
|
|
420
|
+
if (!response || !Array.isArray(response)) {
|
|
421
|
+
throw new StandardError(400, 'Invalid labels response');
|
|
422
|
+
}
|
|
423
|
+
return response;
|
|
424
|
+
})
|
|
425
|
+
.catch(err => {
|
|
426
|
+
console.error('Failed to fetch labels:', err);
|
|
427
|
+
throw new StandardError(500, 'Failed to fetch labels');
|
|
428
|
+
});
|
|
429
|
+
}
|
|
411
430
|
fetchGroups(body = {}, cancelToken, headers = {}) {
|
|
412
431
|
if (!this.companyId || this.companyId.trim() === '') {
|
|
413
432
|
throw new StandardError(400, 'Company ID is required');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { useMutation, useQuery } from "@tanstack/react-query";
|
|
2
|
+
import { AvroQueryClient } from "../../client/QueryClient";
|
|
3
|
+
AvroQueryClient.prototype.useGetLabels = function (body, total, onProgress) {
|
|
4
|
+
return useQuery({
|
|
5
|
+
queryKey: ['labels', this.companyId, body.amt ?? 50, body.query ?? "", total ?? "all"],
|
|
6
|
+
queryFn: async () => {
|
|
7
|
+
if (typeof total !== "number") {
|
|
8
|
+
return this.fetchLabels({ ...body, offset: 0 });
|
|
9
|
+
}
|
|
10
|
+
onProgress?.(0);
|
|
11
|
+
const pageCount = body.amt ? Math.ceil(total / body.amt) + 1 : 1;
|
|
12
|
+
let completed = 0;
|
|
13
|
+
const promises = Array.from({ length: pageCount }, (_, i) => this.fetchLabels({
|
|
14
|
+
...body,
|
|
15
|
+
offset: i * (body.amt ?? 1),
|
|
16
|
+
}));
|
|
17
|
+
const trackedPromises = promises.map((promise) => promise.then((result) => {
|
|
18
|
+
completed++;
|
|
19
|
+
const fraction = completed / pageCount;
|
|
20
|
+
onProgress?.(fraction);
|
|
21
|
+
return result;
|
|
22
|
+
}));
|
|
23
|
+
const pages = await Promise.all(trackedPromises);
|
|
24
|
+
const labels = pages.flat();
|
|
25
|
+
return labels;
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
AvroQueryClient.prototype.useCreateLabel = function () {
|
|
30
|
+
const queryClient = this.getQueryClient();
|
|
31
|
+
return useMutation({
|
|
32
|
+
mutationFn: async ({ labelData }) => {
|
|
33
|
+
return this.post(`/company/${this.companyId}/label`, JSON.stringify(labelData), undefined, { "Content-Type": "application/json" });
|
|
34
|
+
},
|
|
35
|
+
onSettled: () => {
|
|
36
|
+
queryClient.invalidateQueries({ queryKey: ['company'] });
|
|
37
|
+
queryClient.invalidateQueries({ queryKey: ['labels'] });
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
AvroQueryClient.prototype.useUpdateLabel = function () {
|
|
42
|
+
const queryClient = this.getQueryClient();
|
|
43
|
+
return useMutation({
|
|
44
|
+
mutationFn: async ({ labelId, labelData }) => {
|
|
45
|
+
return this.put(`/label/${labelId}`, JSON.stringify(labelData), undefined, { "Content-Type": "application/json" });
|
|
46
|
+
},
|
|
47
|
+
onMutate: async ({ labelId, labelData }) => {
|
|
48
|
+
await queryClient.cancelQueries({ queryKey: ['labels'] });
|
|
49
|
+
await queryClient.cancelQueries({ queryKey: ['label', labelId] });
|
|
50
|
+
const previousLabels = queryClient.getQueryData(['labels']);
|
|
51
|
+
const previousLabel = queryClient.getQueryData(['label', labelId]);
|
|
52
|
+
queryClient.setQueryData(['label', labelId], (oldData) => {
|
|
53
|
+
if (!oldData)
|
|
54
|
+
return oldData;
|
|
55
|
+
return { ...oldData, ...labelData };
|
|
56
|
+
});
|
|
57
|
+
queryClient.setQueriesData({ queryKey: ['labels'] }, (oldData) => {
|
|
58
|
+
if (!oldData)
|
|
59
|
+
return oldData;
|
|
60
|
+
if (oldData.pages) {
|
|
61
|
+
const updatedPages = oldData.pages.map((page) => page.map((label) => label.id === labelId ? { ...label, ...labelData } : label));
|
|
62
|
+
return { ...oldData, pages: updatedPages };
|
|
63
|
+
}
|
|
64
|
+
if (Array.isArray(oldData)) {
|
|
65
|
+
return oldData.map((label) => label.id === labelId ? { ...label, ...labelData } : label);
|
|
66
|
+
}
|
|
67
|
+
return oldData;
|
|
68
|
+
});
|
|
69
|
+
return { previousLabels, previousLabel };
|
|
70
|
+
},
|
|
71
|
+
onError: (_err, variables, context) => {
|
|
72
|
+
const { labelId } = variables;
|
|
73
|
+
if (context?.previousLabels) {
|
|
74
|
+
queryClient.setQueryData(['labels'], context.previousLabels);
|
|
75
|
+
}
|
|
76
|
+
if (context?.previousLabel) {
|
|
77
|
+
queryClient.setQueryData(['label', labelId], context.previousLabel);
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
onSettled: (_data, _error, variables) => {
|
|
81
|
+
const { labelId } = variables;
|
|
82
|
+
queryClient.invalidateQueries({ queryKey: ['labels'] });
|
|
83
|
+
queryClient.invalidateQueries({ queryKey: ['label', labelId] });
|
|
84
|
+
queryClient.invalidateQueries({ queryKey: ['company'] });
|
|
85
|
+
},
|
|
86
|
+
});
|
|
87
|
+
};
|
|
88
|
+
AvroQueryClient.prototype.useDeleteLabel = function () {
|
|
89
|
+
const queryClient = this.getQueryClient();
|
|
90
|
+
return useMutation({
|
|
91
|
+
mutationFn: async ({ labelId, }) => {
|
|
92
|
+
return this.delete(`/label/${labelId}`);
|
|
93
|
+
},
|
|
94
|
+
onMutate: async ({ labelId }) => {
|
|
95
|
+
await queryClient.cancelQueries({ queryKey: ['labels'] });
|
|
96
|
+
await queryClient.cancelQueries({ queryKey: ['label', labelId] });
|
|
97
|
+
const previousLabels = queryClient.getQueryData(['labels']);
|
|
98
|
+
const previousLabel = queryClient.getQueryData(['label', labelId]);
|
|
99
|
+
queryClient.setQueryData(['label', labelId], undefined);
|
|
100
|
+
queryClient.setQueriesData({ queryKey: ['labels'] }, (oldData) => {
|
|
101
|
+
if (!oldData)
|
|
102
|
+
return oldData;
|
|
103
|
+
if (oldData.pages) {
|
|
104
|
+
const updatedPages = oldData.pages.map((page) => page.filter((label) => label.id !== labelId));
|
|
105
|
+
return { ...oldData, pages: updatedPages };
|
|
106
|
+
}
|
|
107
|
+
if (Array.isArray(oldData)) {
|
|
108
|
+
return oldData.filter((label) => label.id !== labelId);
|
|
109
|
+
}
|
|
110
|
+
return oldData;
|
|
111
|
+
});
|
|
112
|
+
return { previousLabels, previousLabel };
|
|
113
|
+
},
|
|
114
|
+
onError: (_err, variables, context) => {
|
|
115
|
+
const { labelId } = variables;
|
|
116
|
+
if (context?.previousLabels) {
|
|
117
|
+
queryClient.setQueryData(['labels'], context.previousLabels);
|
|
118
|
+
}
|
|
119
|
+
if (context?.previousLabel) {
|
|
120
|
+
queryClient.setQueryData(['label', labelId], context.previousLabel);
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
onSettled: (_data, _error, variables) => {
|
|
124
|
+
const { labelId } = variables;
|
|
125
|
+
queryClient.invalidateQueries({ queryKey: ['labels'] });
|
|
126
|
+
queryClient.invalidateQueries({ queryKey: ['label', labelId] });
|
|
127
|
+
queryClient.invalidateQueries({ queryKey: ['company'] });
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
};
|
package/dist/index.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ import './client/hooks/plans';
|
|
|
20
20
|
import './client/hooks/analytics';
|
|
21
21
|
import './client/hooks/avro';
|
|
22
22
|
import './client/hooks/teams';
|
|
23
|
+
import './client/hooks/labels';
|
|
23
24
|
import './client/hooks/groups';
|
|
24
25
|
import './client/hooks/skills';
|
|
25
26
|
export * from './types/api';
|
package/dist/index.js
CHANGED
|
@@ -20,6 +20,7 @@ import './client/hooks/plans';
|
|
|
20
20
|
import './client/hooks/analytics';
|
|
21
21
|
import './client/hooks/avro';
|
|
22
22
|
import './client/hooks/teams';
|
|
23
|
+
import './client/hooks/labels';
|
|
23
24
|
import './client/hooks/groups';
|
|
24
25
|
import './client/hooks/skills';
|
|
25
26
|
export * from './types/api';
|
package/dist/types/api.d.ts
CHANGED
|
@@ -117,10 +117,13 @@ export interface Chat {
|
|
|
117
117
|
user_state: MemberState[];
|
|
118
118
|
messages: Message[];
|
|
119
119
|
}
|
|
120
|
-
export interface
|
|
120
|
+
export interface Location {
|
|
121
121
|
accuracy: number;
|
|
122
122
|
heading: number;
|
|
123
123
|
id: string;
|
|
124
|
+
team_id: string | null;
|
|
125
|
+
user_company_id: string;
|
|
126
|
+
user_id: string;
|
|
124
127
|
latitude: number;
|
|
125
128
|
longitude: number;
|
|
126
129
|
time_collected: number;
|
|
@@ -153,7 +156,7 @@ export interface Team {
|
|
|
153
156
|
end_longitude: number;
|
|
154
157
|
start_time: number;
|
|
155
158
|
users: string[];
|
|
156
|
-
current_location:
|
|
159
|
+
current_location: Location | null;
|
|
157
160
|
start_address: string;
|
|
158
161
|
end_address: string;
|
|
159
162
|
}
|
|
@@ -285,6 +288,7 @@ export interface UserCompanyAssociation {
|
|
|
285
288
|
share_email_company_wide: boolean;
|
|
286
289
|
notifications: Notification[];
|
|
287
290
|
groups: string[];
|
|
291
|
+
last_location: Location | null;
|
|
288
292
|
}
|
|
289
293
|
export interface Email {
|
|
290
294
|
id: string;
|