openvsx-webui-test 0.20.0-dev.0 → 0.20.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/components/error-dialog.d.ts.map +1 -1
- package/lib/components/error-dialog.js +3 -5
- package/lib/components/error-dialog.js.map +1 -1
- package/lib/components/generate-token-dialog.d.ts +22 -0
- package/lib/components/generate-token-dialog.d.ts.map +1 -0
- package/lib/components/generate-token-dialog.js +91 -0
- package/lib/components/generate-token-dialog.js.map +1 -0
- package/lib/components/rate-limiting/usage-stats/usage-stats-chart.d.ts.map +1 -1
- package/lib/components/rate-limiting/usage-stats/usage-stats-chart.js +14 -11
- package/lib/components/rate-limiting/usage-stats/usage-stats-chart.js.map +1 -1
- package/lib/components/timestamp.d.ts +1 -0
- package/lib/components/timestamp.d.ts.map +1 -1
- package/lib/components/timestamp.js +2 -1
- package/lib/components/timestamp.js.map +1 -1
- package/lib/default/menu-content.d.ts +1 -1
- package/lib/extension-registry-service.d.ts +7 -1
- package/lib/extension-registry-service.d.ts.map +1 -1
- package/lib/extension-registry-service.js +41 -0
- package/lib/extension-registry-service.js.map +1 -1
- package/lib/extension-registry-types.d.ts +6 -0
- package/lib/extension-registry-types.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/admin-dashboard.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/admin-dashboard.js +17 -27
- package/lib/pages/admin-dashboard/admin-dashboard.js.map +1 -1
- package/lib/pages/admin-dashboard/customers/customer-details.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/customers/customer-details.js +2 -1
- package/lib/pages/admin-dashboard/customers/customer-details.js.map +1 -1
- package/lib/pages/admin-dashboard/customers/customer-token-list.d.ts +19 -0
- package/lib/pages/admin-dashboard/customers/customer-token-list.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/customers/customer-token-list.js +70 -0
- package/lib/pages/admin-dashboard/customers/customer-token-list.js.map +1 -0
- package/lib/pages/extension-detail/extension-detail.js +1 -1
- package/lib/pages/extension-detail/extension-detail.js.map +1 -1
- package/lib/pages/user/{generate-token-dialog.d.ts → generate-access-token-dialog.d.ts} +2 -2
- package/lib/pages/user/generate-access-token-dialog.d.ts.map +1 -0
- package/lib/pages/user/generate-access-token-dialog.js +33 -0
- package/lib/pages/user/generate-access-token-dialog.js.map +1 -0
- package/lib/pages/user/user-settings-profile.d.ts.map +1 -1
- package/lib/pages/user/user-settings-profile.js +1 -1
- package/lib/pages/user/user-settings-profile.js.map +1 -1
- package/lib/pages/user/user-settings-tokens.js +4 -4
- package/lib/pages/user/user-settings-tokens.js.map +1 -1
- package/lib/utils.d.ts +1 -1
- package/lib/utils.d.ts.map +1 -1
- package/lib/utils.js +10 -5
- package/lib/utils.js.map +1 -1
- package/package.json +9 -9
- package/src/components/error-dialog.tsx +3 -5
- package/src/components/generate-token-dialog.tsx +167 -0
- package/src/components/rate-limiting/usage-stats/usage-stats-chart.tsx +18 -12
- package/src/components/timestamp.tsx +3 -1
- package/src/extension-registry-service.ts +49 -1
- package/src/extension-registry-types.ts +7 -0
- package/src/pages/admin-dashboard/admin-dashboard.tsx +17 -27
- package/src/pages/admin-dashboard/customers/customer-details.tsx +4 -0
- package/src/pages/admin-dashboard/customers/customer-token-list.tsx +135 -0
- package/src/pages/extension-detail/extension-detail.tsx +1 -1
- package/src/pages/user/generate-access-token-dialog.tsx +49 -0
- package/src/pages/user/user-settings-profile.tsx +1 -1
- package/src/pages/user/user-settings-tokens.tsx +4 -4
- package/src/utils.ts +9 -5
- package/lib/components/copy-to-clipboard.d.ts +0 -21
- package/lib/components/copy-to-clipboard.d.ts.map +0 -1
- package/lib/components/copy-to-clipboard.js +0 -25
- package/lib/components/copy-to-clipboard.js.map +0 -1
- package/lib/pages/user/generate-token-dialog.d.ts.map +0 -1
- package/lib/pages/user/generate-token-dialog.js +0 -79
- package/lib/pages/user/generate-token-dialog.js.map +0 -1
- package/src/components/copy-to-clipboard.tsx +0 -50
- package/src/pages/user/generate-token-dialog.tsx +0 -157
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2020 TypeFox and others
|
|
3
|
-
*
|
|
4
|
-
* This program and the accompanying materials are made available under the
|
|
5
|
-
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
-
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
-
*
|
|
8
|
-
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
-
********************************************************************************/
|
|
10
|
-
|
|
11
|
-
import { FunctionComponent, ReactElement, useState } from 'react';
|
|
12
|
-
import copy from 'clipboard-copy';
|
|
13
|
-
import { Tooltip, TooltipProps } from '@mui/material';
|
|
14
|
-
|
|
15
|
-
export const CopyToClipboard: FunctionComponent<CopyToClipboardProps> = props => {
|
|
16
|
-
const [showTooltip, setTooltip] = useState<boolean>(false);
|
|
17
|
-
|
|
18
|
-
const handleOnTooltipClose = () => {
|
|
19
|
-
setTooltip(false);
|
|
20
|
-
};
|
|
21
|
-
|
|
22
|
-
const onCopy = (content: any) => {
|
|
23
|
-
copy(content);
|
|
24
|
-
setTooltip(true);
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
return (
|
|
28
|
-
<Tooltip
|
|
29
|
-
open={showTooltip}
|
|
30
|
-
title={'Copied to clipboard!'}
|
|
31
|
-
leaveDelay={1500}
|
|
32
|
-
onClose={handleOnTooltipClose}
|
|
33
|
-
disableHoverListener
|
|
34
|
-
{...props.tooltipProps ?? {}}
|
|
35
|
-
>
|
|
36
|
-
{
|
|
37
|
-
props.children({ copy: onCopy }) as ReactElement<any>
|
|
38
|
-
}
|
|
39
|
-
</Tooltip>
|
|
40
|
-
);
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
interface ChildProps {
|
|
44
|
-
copy: (content: any) => void;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export interface CopyToClipboardProps {
|
|
48
|
-
tooltipProps?: Partial<TooltipProps>;
|
|
49
|
-
children: (props: ChildProps) => ReactElement<any>;
|
|
50
|
-
}
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
/********************************************************************************
|
|
2
|
-
* Copyright (c) 2019 TypeFox and others
|
|
3
|
-
*
|
|
4
|
-
* This program and the accompanying materials are made available under the
|
|
5
|
-
* terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
-
* http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
-
*
|
|
8
|
-
* SPDX-License-Identifier: EPL-2.0
|
|
9
|
-
********************************************************************************/
|
|
10
|
-
|
|
11
|
-
import { ChangeEvent, FunctionComponent, useContext, useEffect, useState, useRef } from 'react';
|
|
12
|
-
import { Button, Dialog, DialogTitle, DialogContent, DialogContentText, Box, TextField, DialogActions, Typography } from '@mui/material';
|
|
13
|
-
import { ButtonWithProgress } from '../../components/button-with-progress';
|
|
14
|
-
import { CopyToClipboard } from '../../components/copy-to-clipboard';
|
|
15
|
-
import { PersonalAccessToken, isError } from '../../extension-registry-types';
|
|
16
|
-
import { MainContext } from '../../context';
|
|
17
|
-
|
|
18
|
-
const TOKEN_DESCRIPTION_SIZE = 255;
|
|
19
|
-
|
|
20
|
-
export const GenerateTokenDialog: FunctionComponent<GenerateTokenDialogProps> = props => {
|
|
21
|
-
const [open, setOpen] = useState<boolean>(false);
|
|
22
|
-
const [posted, setPosted] = useState<boolean>(false);
|
|
23
|
-
const [description, setDescription] = useState<string>('');
|
|
24
|
-
const [descriptionError, setDescriptionError] = useState<string>();
|
|
25
|
-
const [token, setToken] = useState<PersonalAccessToken>();
|
|
26
|
-
|
|
27
|
-
const context = useContext(MainContext);
|
|
28
|
-
const abortController = useRef<AbortController>(new AbortController());
|
|
29
|
-
|
|
30
|
-
useEffect(() => {
|
|
31
|
-
document.addEventListener('keydown', handleEnter);
|
|
32
|
-
return () => {
|
|
33
|
-
abortController.current.abort();
|
|
34
|
-
document.removeEventListener('keydown', handleEnter);
|
|
35
|
-
};
|
|
36
|
-
}, []);
|
|
37
|
-
|
|
38
|
-
const handleOpenDialog = () => {
|
|
39
|
-
setOpen(true);
|
|
40
|
-
setPosted(false);
|
|
41
|
-
setDescription('');
|
|
42
|
-
setToken(undefined);
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
const handleClose = () => setOpen(false);
|
|
46
|
-
|
|
47
|
-
const handleDescriptionChange = (event: ChangeEvent<HTMLInputElement>) => {
|
|
48
|
-
const description = event.target.value;
|
|
49
|
-
let descriptionError: string | undefined;
|
|
50
|
-
if (description.length > TOKEN_DESCRIPTION_SIZE) {
|
|
51
|
-
descriptionError = `The description must not be longer than ${TOKEN_DESCRIPTION_SIZE} characters.`;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
setDescription(description);
|
|
55
|
-
setDescriptionError(descriptionError);
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
const handleGenerate = async () => {
|
|
59
|
-
if (!context.user) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
setPosted(true);
|
|
63
|
-
try {
|
|
64
|
-
const token = await context.service.createAccessToken(abortController.current, context.user, description);
|
|
65
|
-
if (isError(token)) {
|
|
66
|
-
throw token;
|
|
67
|
-
}
|
|
68
|
-
setToken(token);
|
|
69
|
-
props.handleTokenGenerated();
|
|
70
|
-
} catch (err) {
|
|
71
|
-
context.handleError(err);
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
const handleEnter = (e: KeyboardEvent) => {
|
|
76
|
-
if (e.code === 'Enter' && open && !token) {
|
|
77
|
-
handleGenerate();
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
return <>
|
|
82
|
-
<Button variant='outlined' onClick={handleOpenDialog}>Generate new token</Button>
|
|
83
|
-
<Dialog open={open} onClose={handleClose}>
|
|
84
|
-
<DialogTitle>Generate new token</DialogTitle>
|
|
85
|
-
<DialogContent>
|
|
86
|
-
<DialogContentText>
|
|
87
|
-
Describe where you will use this token.
|
|
88
|
-
</DialogContentText>
|
|
89
|
-
<Box my={2}>
|
|
90
|
-
<TextField
|
|
91
|
-
disabled={Boolean(token)}
|
|
92
|
-
fullWidth
|
|
93
|
-
label='Token Description'
|
|
94
|
-
error={Boolean(descriptionError)}
|
|
95
|
-
helperText={descriptionError}
|
|
96
|
-
onChange={handleDescriptionChange} />
|
|
97
|
-
</Box>
|
|
98
|
-
<TextField
|
|
99
|
-
disabled={!token}
|
|
100
|
-
margin='dense'
|
|
101
|
-
label='Generated Token...'
|
|
102
|
-
fullWidth
|
|
103
|
-
multiline
|
|
104
|
-
variant='outlined'
|
|
105
|
-
rows={4}
|
|
106
|
-
value={token ? token.value : ''}
|
|
107
|
-
/>
|
|
108
|
-
{
|
|
109
|
-
token ?
|
|
110
|
-
<Box>
|
|
111
|
-
<Typography sx={{ color: 'red', fontWeight: 'bold' }}>
|
|
112
|
-
Copy and paste this token to a safe place. It will not be displayed again.
|
|
113
|
-
</Typography>
|
|
114
|
-
</Box> : null
|
|
115
|
-
}
|
|
116
|
-
</DialogContent>
|
|
117
|
-
<DialogActions>
|
|
118
|
-
{
|
|
119
|
-
token ?
|
|
120
|
-
<CopyToClipboard tooltipProps={{ placement: 'left' }}>
|
|
121
|
-
{({ copy }) => (
|
|
122
|
-
<Button
|
|
123
|
-
autoFocus
|
|
124
|
-
variant='contained'
|
|
125
|
-
color='secondary'
|
|
126
|
-
onClick={() => {
|
|
127
|
-
copy(token!.value);
|
|
128
|
-
setTimeout(handleClose, 700);
|
|
129
|
-
}}
|
|
130
|
-
>
|
|
131
|
-
Copy
|
|
132
|
-
</Button>
|
|
133
|
-
)}
|
|
134
|
-
</CopyToClipboard> : null
|
|
135
|
-
}
|
|
136
|
-
<Button onClick={handleClose} color='secondary'>
|
|
137
|
-
{token ? 'Close' : 'Cancel'}
|
|
138
|
-
</Button>
|
|
139
|
-
{
|
|
140
|
-
!token ?
|
|
141
|
-
<ButtonWithProgress
|
|
142
|
-
autoFocus
|
|
143
|
-
sx={{ ml: 1 }}
|
|
144
|
-
error={Boolean(descriptionError)}
|
|
145
|
-
working={posted}
|
|
146
|
-
onClick={handleGenerate} >
|
|
147
|
-
Generate Token
|
|
148
|
-
</ButtonWithProgress> : null
|
|
149
|
-
}
|
|
150
|
-
</DialogActions>
|
|
151
|
-
</Dialog>
|
|
152
|
-
</>;
|
|
153
|
-
};
|
|
154
|
-
|
|
155
|
-
export interface GenerateTokenDialogProps {
|
|
156
|
-
handleTokenGenerated: () => void;
|
|
157
|
-
}
|