openvsx-webui-test 0.18.0-dev.1 → 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/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/package.json +1 -1
- package/src/pages/extension-detail/extension-detail-reviews.tsx +49 -38
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension-detail-reviews.d.ts","sourceRoot":"","sources":["../../../src/pages/extension-detail/extension-detail-reviews.tsx"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAElF,OAAc,EAAY,iBAAiB,EAAsD,MAAM,OAAO,CAAC;AAc/G,OAAO,EAAmB,SAAS,EAAuD,MAAM,gCAAgC,CAAC;AAQjI,eAAO,MAAM,sBAAsB,EAAE,iBAAiB,CAAC,2BAA2B,
|
|
1
|
+
{"version":3,"file":"extension-detail-reviews.d.ts","sourceRoot":"","sources":["../../../src/pages/extension-detail/extension-detail-reviews.tsx"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;AAElF,OAAc,EAAY,iBAAiB,EAAsD,MAAM,OAAO,CAAC;AAc/G,OAAO,EAAmB,SAAS,EAAuD,MAAM,gCAAgC,CAAC;AAQjI,eAAO,MAAM,sBAAsB,EAAE,iBAAiB,CAAC,2BAA2B,CA2OjF,CAAC;AAEF,MAAM,WAAW,2BAA2B;IACxC,SAAS,EAAE,SAAS,CAAC;IACrB,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAChC"}
|
|
@@ -28,10 +28,12 @@ import { Timestamp } from '../../components/timestamp';
|
|
|
28
28
|
import { ExtensionRatingStars } from './extension-rating-stars';
|
|
29
29
|
import { ExtensionReviewDialog } from './extension-review-dialog';
|
|
30
30
|
export const ExtensionDetailReviews = props => {
|
|
31
|
+
var _a;
|
|
31
32
|
const [reviewList, setReviewList] = useState();
|
|
32
33
|
const [loading, setLoading] = useState(true);
|
|
33
34
|
const [revoked, setRevoked] = useState(false);
|
|
34
35
|
const [removeDialogOpen, setRemoveDialogOpen] = useState(false);
|
|
36
|
+
const [removeCommentFromUser, setRemoveCommentFromUser] = useState(undefined);
|
|
35
37
|
const [removeReviewSet, setRemoveReviewSet] = useState(new Set());
|
|
36
38
|
const context = useContext(MainContext);
|
|
37
39
|
const abortController = useRef(new AbortController());
|
|
@@ -92,36 +94,45 @@ export const ExtensionDetailReviews = props => {
|
|
|
92
94
|
React.createElement(ExtensionReviewDialog, { saveCompleted: saveCompleted, extension: props.extension, reviewPostUrl: reviewList.postUrl }));
|
|
93
95
|
}
|
|
94
96
|
};
|
|
95
|
-
const handleAdminRemoveReviewButton = (
|
|
96
|
-
|
|
97
|
+
const handleAdminRemoveReviewButton = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
98
|
+
if (removeCommentFromUser === undefined) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
addRemoveReviewRequest(removeCommentFromUser.loginName);
|
|
97
102
|
try {
|
|
98
|
-
const result = yield context.service.deleteUserReview(abortController.current, props.extension,
|
|
103
|
+
const result = yield context.service.deleteUserReview(abortController.current, props.extension, removeCommentFromUser);
|
|
99
104
|
if (isError(result)) {
|
|
100
105
|
throw result;
|
|
101
106
|
}
|
|
102
107
|
saveCompleted();
|
|
108
|
+
setRemoveDialogOpen(false);
|
|
103
109
|
}
|
|
104
110
|
catch (err) {
|
|
105
111
|
context.handleError(err);
|
|
106
112
|
}
|
|
107
113
|
finally {
|
|
108
|
-
deleteRemoveReviewRequest(
|
|
114
|
+
deleteRemoveReviewRequest(removeCommentFromUser.loginName);
|
|
109
115
|
}
|
|
110
116
|
});
|
|
111
117
|
const renderAdminRemoveButton = (r) => {
|
|
112
|
-
return React.createElement(
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
React.createElement(
|
|
123
|
-
React.createElement(
|
|
124
|
-
|
|
118
|
+
return React.createElement(Button, { variant: 'contained', color: 'error', sx: { ml: 1 }, onClick: () => {
|
|
119
|
+
setRemoveCommentFromUser(r.user);
|
|
120
|
+
setRemoveDialogOpen(true);
|
|
121
|
+
} }, "Remove review");
|
|
122
|
+
};
|
|
123
|
+
const renderAdminRemoveDialog = () => {
|
|
124
|
+
var _a;
|
|
125
|
+
return React.createElement(Dialog, { open: removeDialogOpen, onClose: () => setRemoveDialogOpen(false) },
|
|
126
|
+
React.createElement(DialogTitle, null, "Remove Review"),
|
|
127
|
+
React.createElement(DialogContent, null,
|
|
128
|
+
React.createElement(DialogContentText, { component: 'div' },
|
|
129
|
+
React.createElement(Typography, null,
|
|
130
|
+
"Confirm removal of review comment from ",
|
|
131
|
+
React.createElement("code", null, removeCommentFromUser === null || removeCommentFromUser === void 0 ? void 0 : removeCommentFromUser.loginName),
|
|
132
|
+
"?"))),
|
|
133
|
+
React.createElement(DialogActions, null,
|
|
134
|
+
React.createElement(Button, { variant: 'contained', color: 'primary', onClick: () => setRemoveDialogOpen(false) }, "Cancel"),
|
|
135
|
+
React.createElement(ButtonWithProgress, { autoFocus: true, color: 'error', sx: { ml: 1 }, working: removeReviewSet.has((_a = removeCommentFromUser === null || removeCommentFromUser === void 0 ? void 0 : removeCommentFromUser.loginName) !== null && _a !== void 0 ? _a : ''), onClick: () => handleAdminRemoveReviewButton() }, "Remove review")));
|
|
125
136
|
};
|
|
126
137
|
const renderReviewList = (list) => {
|
|
127
138
|
if (!list) {
|
|
@@ -180,6 +191,7 @@ export const ExtensionDetailReviews = props => {
|
|
|
180
191
|
React.createElement(Divider, null),
|
|
181
192
|
React.createElement(Box, null,
|
|
182
193
|
React.createElement(DelayedLoadIndicator, { loading: loading }),
|
|
183
|
-
renderReviewList(reviewList)
|
|
194
|
+
renderReviewList(reviewList),
|
|
195
|
+
((_a = context.user) === null || _a === void 0 ? void 0 : _a.role) === 'admin' && renderAdminRemoveDialog()));
|
|
184
196
|
};
|
|
185
197
|
//# sourceMappingURL=extension-detail-reviews.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension-detail-reviews.js","sourceRoot":"","sources":["../../../src/pages/extension-detail/extension-detail-reviews.tsx"],"names":[],"mappings":"AAAA;;;;;;;;kFAQkF;;;;;;;;;;AAElF,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAgC,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/G,OAAO,EACH,GAAG,EACH,UAAU,EACV,OAAO,EACP,IAAI,EACJ,MAAM,EACN,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,aAAa,EAAE,MAAM,EACxB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAmD,WAAW,EAAE,OAAO,EAAY,MAAM,gCAAgC,CAAC;AACjI,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE,MAAM,CAAC,MAAM,sBAAsB,GAAmD,KAAK,CAAC,EAAE
|
|
1
|
+
{"version":3,"file":"extension-detail-reviews.js","sourceRoot":"","sources":["../../../src/pages/extension-detail/extension-detail-reviews.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -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
|
|