openvsx-webui-test 0.18.0-dev.0 → 0.18.0-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/extension-registry-service.d.ts +22 -1
- package/lib/extension-registry-service.d.ts.map +1 -1
- package/lib/extension-registry-service.js +151 -1
- package/lib/extension-registry-service.js.map +1 -1
- package/lib/extension-registry-types.d.ts +41 -0
- package/lib/extension-registry-types.d.ts.map +1 -1
- package/lib/extension-registry-types.js +16 -0
- package/lib/extension-registry-types.js.map +1 -1
- package/lib/pages/admin-dashboard/admin-dashboard.d.ts +3 -0
- package/lib/pages/admin-dashboard/admin-dashboard.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/admin-dashboard.js +33 -3
- package/lib/pages/admin-dashboard/admin-dashboard.js.map +1 -1
- package/lib/pages/admin-dashboard/components/data-grid-filter-operators.d.ts +28 -0
- package/lib/pages/admin-dashboard/components/data-grid-filter-operators.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/components/data-grid-filter-operators.js +93 -0
- package/lib/pages/admin-dashboard/components/data-grid-filter-operators.js.map +1 -0
- package/lib/pages/admin-dashboard/components/index.d.ts +2 -0
- package/lib/pages/admin-dashboard/components/index.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/components/index.js +14 -0
- package/lib/pages/admin-dashboard/components/index.js.map +1 -0
- package/lib/pages/admin-dashboard/customers/customer-form-dialog.d.ts +23 -0
- package/lib/pages/admin-dashboard/customers/customer-form-dialog.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/customers/customer-form-dialog.js +225 -0
- package/lib/pages/admin-dashboard/customers/customer-form-dialog.js.map +1 -0
- package/lib/pages/admin-dashboard/customers/customers.d.ts +15 -0
- package/lib/pages/admin-dashboard/customers/customers.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/customers/customers.js +175 -0
- package/lib/pages/admin-dashboard/customers/customers.js.map +1 -0
- package/lib/pages/admin-dashboard/customers/delete-customer-dialog.d.ts +23 -0
- package/lib/pages/admin-dashboard/customers/delete-customer-dialog.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/customers/delete-customer-dialog.js +64 -0
- package/lib/pages/admin-dashboard/customers/delete-customer-dialog.js.map +1 -0
- package/lib/pages/admin-dashboard/publisher-admin.js +4 -4
- package/lib/pages/admin-dashboard/publisher-admin.js.map +1 -1
- package/lib/pages/admin-dashboard/tiers/delete-tier-dialog.d.ts +23 -0
- package/lib/pages/admin-dashboard/tiers/delete-tier-dialog.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/tiers/delete-tier-dialog.js +55 -0
- package/lib/pages/admin-dashboard/tiers/delete-tier-dialog.js.map +1 -0
- package/lib/pages/admin-dashboard/tiers/tier-form-dialog.d.ts +23 -0
- package/lib/pages/admin-dashboard/tiers/tier-form-dialog.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/tiers/tier-form-dialog.js +215 -0
- package/lib/pages/admin-dashboard/tiers/tier-form-dialog.js.map +1 -0
- package/lib/pages/admin-dashboard/tiers/tiers.d.ts +15 -0
- package/lib/pages/admin-dashboard/tiers/tiers.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/tiers/tiers.js +174 -0
- package/lib/pages/admin-dashboard/tiers/tiers.js.map +1 -0
- package/lib/pages/admin-dashboard/usage-stats/usage-stats-chart.d.ts +23 -0
- package/lib/pages/admin-dashboard/usage-stats/usage-stats-chart.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/usage-stats/usage-stats-chart.js +106 -0
- package/lib/pages/admin-dashboard/usage-stats/usage-stats-chart.js.map +1 -0
- package/lib/pages/admin-dashboard/usage-stats/usage-stats-search.d.ts +26 -0
- package/lib/pages/admin-dashboard/usage-stats/usage-stats-search.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/usage-stats/usage-stats-search.js +50 -0
- package/lib/pages/admin-dashboard/usage-stats/usage-stats-search.js.map +1 -0
- package/lib/pages/admin-dashboard/usage-stats/usage-stats-utils.d.ts +14 -0
- package/lib/pages/admin-dashboard/usage-stats/usage-stats-utils.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/usage-stats/usage-stats-utils.js +16 -0
- package/lib/pages/admin-dashboard/usage-stats/usage-stats-utils.js.map +1 -0
- package/lib/pages/admin-dashboard/usage-stats/usage-stats.d.ts +15 -0
- package/lib/pages/admin-dashboard/usage-stats/usage-stats.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/usage-stats/usage-stats.js +103 -0
- package/lib/pages/admin-dashboard/usage-stats/usage-stats.js.map +1 -0
- package/lib/pages/admin-dashboard/welcome.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/welcome.js +4 -1
- package/lib/pages/admin-dashboard/welcome.js.map +1 -1
- package/lib/pages/extension-detail/extension-detail-reviews.d.ts.map +1 -1
- package/lib/pages/extension-detail/extension-detail-reviews.js +30 -18
- package/lib/pages/extension-detail/extension-detail-reviews.js.map +1 -1
- package/lib/server-request.d.ts +1 -1
- package/lib/server-request.d.ts.map +1 -1
- package/lib/server-request.js +3 -3
- package/lib/server-request.js.map +1 -1
- package/package.json +8 -1
- package/src/extension-registry-service.ts +157 -1
- package/src/extension-registry-types.ts +50 -0
- package/src/pages/admin-dashboard/admin-dashboard.tsx +45 -2
- package/src/pages/admin-dashboard/components/data-grid-filter-operators.tsx +126 -0
- package/src/pages/admin-dashboard/components/index.ts +18 -0
- package/src/pages/admin-dashboard/customers/customer-form-dialog.tsx +348 -0
- package/src/pages/admin-dashboard/customers/customers.tsx +279 -0
- package/src/pages/admin-dashboard/customers/delete-customer-dialog.tsx +94 -0
- package/src/pages/admin-dashboard/publisher-admin.tsx +4 -4
- package/src/pages/admin-dashboard/tiers/delete-tier-dialog.tsx +83 -0
- package/src/pages/admin-dashboard/tiers/tier-form-dialog.tsx +372 -0
- package/src/pages/admin-dashboard/tiers/tiers.tsx +254 -0
- package/src/pages/admin-dashboard/usage-stats/usage-stats-chart.tsx +189 -0
- package/src/pages/admin-dashboard/usage-stats/usage-stats-search.tsx +83 -0
- package/src/pages/admin-dashboard/usage-stats/usage-stats-utils.ts +16 -0
- package/src/pages/admin-dashboard/usage-stats/usage-stats.tsx +127 -0
- package/src/pages/admin-dashboard/welcome.tsx +3 -0
- package/src/pages/extension-detail/extension-detail-reviews.tsx +49 -38
- package/src/server-request.ts +3 -3
|
@@ -35,6 +35,7 @@ export const ExtensionDetailReviews: FunctionComponent<ExtensionDetailReviewsPro
|
|
|
35
35
|
const [loading, setLoading] = useState<boolean>(true);
|
|
36
36
|
const [revoked, setRevoked] = useState<boolean>(false);
|
|
37
37
|
const [removeDialogOpen, setRemoveDialogOpen] = useState(false);
|
|
38
|
+
const [removeCommentFromUser, setRemoveCommentFromUser] = useState<UserData | undefined>(undefined);
|
|
38
39
|
const [removeReviewSet, setRemoveReviewSet] = useState(new Set<string>());
|
|
39
40
|
const context = useContext(MainContext);
|
|
40
41
|
const abortController = useRef<AbortController>(new AbortController());
|
|
@@ -111,56 +112,65 @@ export const ExtensionDetailReviews: FunctionComponent<ExtensionDetailReviewsPro
|
|
|
111
112
|
}
|
|
112
113
|
};
|
|
113
114
|
|
|
114
|
-
const handleAdminRemoveReviewButton = async (
|
|
115
|
-
|
|
115
|
+
const handleAdminRemoveReviewButton = async () => {
|
|
116
|
+
if (removeCommentFromUser === undefined) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
addRemoveReviewRequest(removeCommentFromUser.loginName);
|
|
116
120
|
try {
|
|
117
|
-
const result = await context.service.deleteUserReview(abortController.current, props.extension,
|
|
121
|
+
const result = await context.service.deleteUserReview(abortController.current, props.extension, removeCommentFromUser);
|
|
118
122
|
if (isError(result)) {
|
|
119
123
|
throw result;
|
|
120
124
|
}
|
|
121
125
|
saveCompleted();
|
|
126
|
+
setRemoveDialogOpen(false);
|
|
122
127
|
} catch (err) {
|
|
123
128
|
context.handleError(err);
|
|
124
129
|
} finally {
|
|
125
|
-
deleteRemoveReviewRequest(
|
|
130
|
+
deleteRemoveReviewRequest(removeCommentFromUser.loginName);
|
|
126
131
|
}
|
|
127
132
|
};
|
|
128
133
|
|
|
129
134
|
const renderAdminRemoveButton = (r: ExtensionReview): ReactNode => {
|
|
130
|
-
return
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
135
|
+
return <Button
|
|
136
|
+
variant='contained'
|
|
137
|
+
color='error'
|
|
138
|
+
sx={{ ml: 1 }}
|
|
139
|
+
onClick={() => {
|
|
140
|
+
setRemoveCommentFromUser(r.user);
|
|
141
|
+
setRemoveDialogOpen(true);
|
|
142
|
+
}}>
|
|
143
|
+
Remove review
|
|
144
|
+
</Button>;
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
const renderAdminRemoveDialog = () => {
|
|
148
|
+
return <Dialog
|
|
149
|
+
open={removeDialogOpen}
|
|
150
|
+
onClose={() => setRemoveDialogOpen(false)}>
|
|
151
|
+
<DialogTitle>Remove Review</DialogTitle>
|
|
152
|
+
<DialogContent>
|
|
153
|
+
<DialogContentText component='div'>
|
|
154
|
+
<Typography>Confirm removal of review comment from <code>{removeCommentFromUser?.loginName}</code>?</Typography>
|
|
155
|
+
</DialogContentText>
|
|
156
|
+
</DialogContent>
|
|
157
|
+
<DialogActions>
|
|
158
|
+
<Button
|
|
159
|
+
variant='contained'
|
|
160
|
+
color='primary'
|
|
161
|
+
onClick={() => setRemoveDialogOpen(false)} >
|
|
162
|
+
Cancel
|
|
163
|
+
</Button>
|
|
164
|
+
<ButtonWithProgress
|
|
165
|
+
autoFocus
|
|
166
|
+
color='error'
|
|
167
|
+
sx={{ ml: 1 }}
|
|
168
|
+
working={removeReviewSet.has(removeCommentFromUser?.loginName ?? '')}
|
|
169
|
+
onClick={() => handleAdminRemoveReviewButton()} >
|
|
170
|
+
Remove review
|
|
171
|
+
</ButtonWithProgress>
|
|
172
|
+
</DialogActions>
|
|
173
|
+
</Dialog>;
|
|
164
174
|
};
|
|
165
175
|
|
|
166
176
|
const renderReviewList = (list?: ExtensionReviewList): ReactNode => {
|
|
@@ -251,6 +261,7 @@ export const ExtensionDetailReviews: FunctionComponent<ExtensionDetailReviewsPro
|
|
|
251
261
|
<Box>
|
|
252
262
|
<DelayedLoadIndicator loading={loading}/>
|
|
253
263
|
{renderReviewList(reviewList)}
|
|
264
|
+
{context.user?.role === 'admin' && renderAdminRemoveDialog()}
|
|
254
265
|
</Box>
|
|
255
266
|
</>;
|
|
256
267
|
|
package/src/server-request.ts
CHANGED
|
@@ -28,7 +28,7 @@ export interface ErrorResponse {
|
|
|
28
28
|
trace?: string;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
export async function sendRequest<Res>(req: ServerAPIRequest): Promise<Res> {
|
|
31
|
+
export async function sendRequest<Res>(req: ServerAPIRequest, retry: boolean = true): Promise<Res> {
|
|
32
32
|
req.method ??= 'GET';
|
|
33
33
|
req.headers ??= {};
|
|
34
34
|
if (!req.headers['Accept']) {
|
|
@@ -50,7 +50,7 @@ export async function sendRequest<Res>(req: ServerAPIRequest): Promise<Res> {
|
|
|
50
50
|
param.credentials = 'include';
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
-
const options: any = {
|
|
53
|
+
const options: any = retry ? {
|
|
54
54
|
retries: 10,
|
|
55
55
|
retryDelay: (attempt: number, error: Error, response: Response) => {
|
|
56
56
|
return Math.pow(2, attempt) * 1000;
|
|
@@ -58,7 +58,7 @@ export async function sendRequest<Res>(req: ServerAPIRequest): Promise<Res> {
|
|
|
58
58
|
retryOn: (attempt: number, error: Error, response: Response) => {
|
|
59
59
|
return error !== null || response.status >= 500;
|
|
60
60
|
}
|
|
61
|
-
};
|
|
61
|
+
} : {};
|
|
62
62
|
|
|
63
63
|
const response = await fetchBuilder(fetch, options)(req.endpoint, param);
|
|
64
64
|
if (response.ok) {
|