openvsx-webui-test 0.20.0-dev.4 → 0.20.1-rc.0
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/scan-admin/scan-card/scan-card-expanded-content.d.ts +2 -1
- package/lib/components/scan-admin/scan-card/scan-card-expanded-content.d.ts.map +1 -1
- package/lib/components/scan-admin/scan-card/scan-card-expanded-content.js.map +1 -1
- package/lib/components/scan-admin/scan-card/scan-card-header.js +1 -1
- package/lib/components/scan-admin/scan-card/scan-card-header.js.map +1 -1
- package/lib/components/scan-admin/scan-card/utils.js +1 -1
- package/lib/components/scan-admin/scan-card/utils.js.map +1 -1
- package/lib/default/menu-content.d.ts +1 -1
- package/lib/default/menu-content.js +1 -1
- package/lib/default/menu-content.js.map +1 -1
- package/lib/main.d.ts.map +1 -1
- package/lib/main.js +5 -5
- package/lib/main.js.map +1 -1
- package/lib/other-pages.d.ts.map +1 -1
- package/lib/other-pages.js +7 -7
- package/lib/other-pages.js.map +1 -1
- package/lib/pages/admin-dashboard/{admin-routes.d.ts → admin-dashboard-routes.d.ts} +6 -9
- package/lib/pages/admin-dashboard/admin-dashboard-routes.d.ts.map +1 -0
- package/lib/pages/admin-dashboard/{admin-routes.js → admin-dashboard-routes.js} +6 -9
- package/lib/pages/admin-dashboard/admin-dashboard-routes.js.map +1 -0
- package/lib/pages/admin-dashboard/admin-dashboard.d.ts.map +1 -1
- package/lib/pages/admin-dashboard/admin-dashboard.js +9 -9
- package/lib/pages/admin-dashboard/admin-dashboard.js.map +1 -1
- package/lib/pages/admin-dashboard/customers/customer-member-list.js +1 -1
- package/lib/pages/admin-dashboard/customers/customer-member-list.js.map +1 -1
- package/lib/pages/admin-dashboard/customers/customers.js +1 -1
- package/lib/pages/admin-dashboard/customers/customers.js.map +1 -1
- package/lib/pages/admin-dashboard/publisher-admin.js +1 -1
- package/lib/pages/admin-dashboard/publisher-admin.js.map +1 -1
- package/lib/pages/admin-dashboard/usage-stats/usage-stats.js +1 -1
- package/lib/pages/admin-dashboard/usage-stats/usage-stats.js.map +1 -1
- package/lib/pages/admin-dashboard/welcome.js +1 -1
- package/lib/pages/admin-dashboard/welcome.js.map +1 -1
- package/lib/pages/extension-detail/extension-detail-changes.d.ts.map +1 -1
- package/lib/pages/extension-detail/extension-detail-changes.js +1 -4
- package/lib/pages/extension-detail/extension-detail-changes.js.map +1 -1
- package/lib/pages/extension-detail/extension-detail-overview.d.ts.map +1 -1
- package/lib/pages/extension-detail/extension-detail-overview.js +1 -6
- package/lib/pages/extension-detail/extension-detail-overview.js.map +1 -1
- package/lib/pages/extension-detail/extension-detail-routes.d.ts +0 -1
- package/lib/pages/extension-detail/extension-detail-routes.d.ts.map +1 -1
- package/lib/pages/extension-detail/extension-detail-routes.js +2 -3
- package/lib/pages/extension-detail/extension-detail-routes.js.map +1 -1
- package/lib/pages/extension-detail/extension-detail.d.ts.map +1 -1
- package/lib/pages/extension-detail/extension-detail.js +120 -247
- package/lib/pages/extension-detail/extension-detail.js.map +1 -1
- package/lib/pages/extension-detail/use-extension-details.d.ts +23 -0
- package/lib/pages/extension-detail/use-extension-details.d.ts.map +1 -0
- package/lib/pages/extension-detail/use-extension-details.js +80 -0
- package/lib/pages/extension-detail/use-extension-details.js.map +1 -0
- package/lib/pages/user/avatar.js +1 -1
- package/lib/pages/user/avatar.js.map +1 -1
- package/lib/pages/user/user-settings-namespace-detail.js +1 -1
- package/lib/pages/user/user-settings-namespace-detail.js.map +1 -1
- package/package.json +3 -1
- package/src/components/scan-admin/scan-card/scan-card-expanded-content.tsx +4 -4
- package/src/components/scan-admin/scan-card/scan-card-header.tsx +1 -1
- package/src/components/scan-admin/scan-card/utils.ts +1 -1
- package/src/default/menu-content.tsx +1 -1
- package/src/main.tsx +11 -6
- package/src/other-pages.tsx +20 -16
- package/src/pages/admin-dashboard/{admin-routes.ts → admin-dashboard-routes.ts} +5 -8
- package/src/pages/admin-dashboard/admin-dashboard.tsx +27 -23
- package/src/pages/admin-dashboard/customers/customer-member-list.tsx +1 -1
- package/src/pages/admin-dashboard/customers/customers.tsx +1 -1
- package/src/pages/admin-dashboard/publisher-admin.tsx +1 -1
- package/src/pages/admin-dashboard/usage-stats/usage-stats.tsx +1 -1
- package/src/pages/admin-dashboard/welcome.tsx +1 -1
- package/src/pages/extension-detail/extension-detail-changes.tsx +1 -5
- package/src/pages/extension-detail/extension-detail-overview.tsx +1 -7
- package/src/pages/extension-detail/extension-detail-routes.ts +2 -3
- package/src/pages/extension-detail/extension-detail.tsx +290 -407
- package/src/pages/extension-detail/use-extension-details.tsx +101 -0
- package/src/pages/user/avatar.tsx +1 -1
- package/src/pages/user/user-settings-namespace-detail.tsx +1 -1
- package/lib/pages/admin-dashboard/admin-routes.d.ts.map +0 -1
- package/lib/pages/admin-dashboard/admin-routes.js.map +0 -1
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/******************************************************************************
|
|
2
|
+
* Copyright (c) 2026 Contributors to the Eclipse Foundation.
|
|
3
|
+
*
|
|
4
|
+
* See the NOTICE file(s) distributed with this work for additional
|
|
5
|
+
* information regarding copyright ownership.
|
|
6
|
+
*
|
|
7
|
+
* This program and the accompanying materials are made available under the
|
|
8
|
+
* terms of the Eclipse Public License 2.0 which is available at
|
|
9
|
+
* https://www.eclipse.org/legal/epl-2.0.
|
|
10
|
+
*
|
|
11
|
+
* SPDX-License-Identifier: EPL-2.0
|
|
12
|
+
*****************************************************************************/
|
|
13
|
+
|
|
14
|
+
import { useContext, useState, useEffect, useCallback, useRef } from 'react';
|
|
15
|
+
import { MainContext } from '../../context';
|
|
16
|
+
import { Extension, isError } from '../../extension-registry-types';
|
|
17
|
+
import { ErrorResponse } from '../../server-request';
|
|
18
|
+
|
|
19
|
+
interface UseExtensionDetailResult {
|
|
20
|
+
loading: boolean;
|
|
21
|
+
extension: Extension | undefined;
|
|
22
|
+
error: Error | undefined;
|
|
23
|
+
icon: string | undefined;
|
|
24
|
+
reload: () => void;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export const useExtensionDetail = (
|
|
28
|
+
namespace: string,
|
|
29
|
+
name: string,
|
|
30
|
+
target: string,
|
|
31
|
+
version: string
|
|
32
|
+
): UseExtensionDetailResult => {
|
|
33
|
+
const abortController = useRef<AbortController>(new AbortController());
|
|
34
|
+
|
|
35
|
+
const { handleError, service } = useContext(MainContext);
|
|
36
|
+
const [loading, setLoading] = useState(true);
|
|
37
|
+
const [error, setError] = useState<Error>();
|
|
38
|
+
const [extension, setExtension] = useState<Extension>();
|
|
39
|
+
const [icon, setIcon] = useState<string>();
|
|
40
|
+
const [reloadKey, setReloadKey] = useState(0);
|
|
41
|
+
|
|
42
|
+
useEffect(() => {
|
|
43
|
+
return () => {
|
|
44
|
+
abortController.current.abort();
|
|
45
|
+
if (icon) {
|
|
46
|
+
URL.revokeObjectURL(icon);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
}, []);
|
|
50
|
+
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
if (!namespace || !name) return;
|
|
53
|
+
|
|
54
|
+
const fetchExtension = async () => {
|
|
55
|
+
setExtension(undefined);
|
|
56
|
+
setError(undefined);
|
|
57
|
+
setIcon(undefined);
|
|
58
|
+
|
|
59
|
+
const extensionUrl = service.getExtensionApiUrl({ namespace, name, target, version });
|
|
60
|
+
const response = await service.getExtensionDetail(abortController.current, extensionUrl);
|
|
61
|
+
if (isError(response)) throw response;
|
|
62
|
+
|
|
63
|
+
const ext = response as Extension;
|
|
64
|
+
const iconUrl = await service.getExtensionIcon(abortController.current, ext);
|
|
65
|
+
if (abortController.current.signal.aborted) {
|
|
66
|
+
if (iconUrl) {
|
|
67
|
+
URL.revokeObjectURL(iconUrl);
|
|
68
|
+
}
|
|
69
|
+
} else {
|
|
70
|
+
setExtension(ext);
|
|
71
|
+
setIcon(iconUrl);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
setLoading(true);
|
|
76
|
+
fetchExtension()
|
|
77
|
+
.then(() => {
|
|
78
|
+
setLoading(false);
|
|
79
|
+
})
|
|
80
|
+
.catch(err => {
|
|
81
|
+
if (abortController.current.signal.aborted) {
|
|
82
|
+
setLoading(false);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const errorResponse = err as Partial<ErrorResponse>;
|
|
87
|
+
if (errorResponse?.status === 404) {
|
|
88
|
+
setError(new Error(`Extension Not Found: ${namespace}.${name}`));
|
|
89
|
+
} else {
|
|
90
|
+
setError(err instanceof Error ? err : new Error('Failed to load extension details'));
|
|
91
|
+
handleError(err as Error | Partial<ErrorResponse>);
|
|
92
|
+
}
|
|
93
|
+
setLoading(false);
|
|
94
|
+
});
|
|
95
|
+
}, [namespace, name, target, version, reloadKey]);
|
|
96
|
+
|
|
97
|
+
// This function updates the reloadKey state to trigger a refetch of the extension details.
|
|
98
|
+
const reload = useCallback(() => setReloadKey(k => k + 1), []);
|
|
99
|
+
|
|
100
|
+
return { loading, extension, error, icon, reload };
|
|
101
|
+
};
|
|
@@ -12,7 +12,7 @@ import { FunctionComponent, useContext, useRef, useState } from 'react';
|
|
|
12
12
|
import { Avatar, Menu, Typography, MenuItem, Link, Divider, IconButton } from '@mui/material';
|
|
13
13
|
import { Link as RouteLink } from 'react-router-dom';
|
|
14
14
|
import { UserSettingsRoutes } from './user-settings-routes';
|
|
15
|
-
import { AdminDashboardRoutes } from '../admin-dashboard/admin-routes';
|
|
15
|
+
import { AdminDashboardRoutes } from '../admin-dashboard/admin-dashboard-routes';
|
|
16
16
|
import { MainContext } from '../../context';
|
|
17
17
|
import { LogoutForm } from './logout';
|
|
18
18
|
|
|
@@ -14,7 +14,7 @@ import { Box, Button, Link, Paper, Grid, Typography } from '@mui/material';
|
|
|
14
14
|
import { styled, Theme } from '@mui/material/styles';
|
|
15
15
|
import WarningIcon from '@mui/icons-material/Warning';
|
|
16
16
|
import { UserNamespaceExtensionListContainer } from './user-namespace-extension-list';
|
|
17
|
-
import { AdminDashboardRoutes } from '../admin-dashboard/admin-routes';
|
|
17
|
+
import { AdminDashboardRoutes } from '../admin-dashboard/admin-dashboard-routes';
|
|
18
18
|
import { Namespace, UserData } from '../../extension-registry-types';
|
|
19
19
|
import { NamespaceChangeDialog } from '../admin-dashboard/namespace-change-dialog';
|
|
20
20
|
import { UserNamespaceMemberList } from './user-namespace-member-list';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"admin-routes.d.ts","sourceRoot":"","sources":["../../../src/pages/admin-dashboard/admin-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;+EAW+E;AAI/E,yBAAiB,oBAAoB,CAAC;IAC3B,MAAM,IAAI,oBAAoB,CAAC;IAC/B,MAAM,IAAI,QAAsB,CAAC;IACjC,MAAM,eAAe,QAAoC,CAAC;IAC1D,MAAM,eAAe,QAAoC,CAAC;IAC1D,MAAM,eAAe,QAAmC,CAAC;IACzD,MAAM,WAAW,QAA+B,CAAC;IACjD,MAAM,KAAK,QAA+B,CAAC;IAC3C,MAAM,SAAS,QAAmC,CAAC;IACnD,MAAM,WAAW,QAA+B,CAAC;IACjD,MAAM,IAAI,QAA8B,CAAC;CACnD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"admin-routes.js","sourceRoot":"","sources":["../../../src/pages/admin-dashboard/admin-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;+EAW+E;AAE/E,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,KAAW,oBAAoB,CAWpC;AAXD,WAAiB,oBAAoB;IACpB,yBAAI,GAAG,iBAAiB,CAAC;IACzB,yBAAI,GAAG,WAAW,CAAC,CAAC,qBAAA,IAAI,CAAC,CAAC,CAAC;IAC3B,oCAAe,GAAG,WAAW,CAAC,CAAC,qBAAA,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IACpD,oCAAe,GAAG,WAAW,CAAC,CAAC,qBAAA,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IACpD,oCAAe,GAAG,WAAW,CAAC,CAAC,qBAAA,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IACnD,gCAAW,GAAG,WAAW,CAAC,CAAC,qBAAA,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3C,0BAAK,GAAG,WAAW,CAAC,CAAC,qBAAA,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACrC,8BAAS,GAAG,WAAW,CAAC,CAAC,qBAAA,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;IAC7C,gCAAW,GAAG,WAAW,CAAC,CAAC,qBAAA,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3C,yBAAI,GAAG,WAAW,CAAC,CAAC,qBAAA,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AACpD,CAAC,EAXgB,oBAAoB,KAApB,oBAAoB,QAWpC"}
|