openvsx-webui-test 0.20.0-dev.5 → 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.
Files changed (69) hide show
  1. package/lib/components/scan-admin/scan-card/scan-card-expanded-content.d.ts +2 -1
  2. package/lib/components/scan-admin/scan-card/scan-card-expanded-content.d.ts.map +1 -1
  3. package/lib/components/scan-admin/scan-card/scan-card-expanded-content.js.map +1 -1
  4. package/lib/components/scan-admin/scan-card/scan-card-header.js +1 -1
  5. package/lib/components/scan-admin/scan-card/scan-card-header.js.map +1 -1
  6. package/lib/components/scan-admin/scan-card/utils.js +1 -1
  7. package/lib/components/scan-admin/scan-card/utils.js.map +1 -1
  8. package/lib/default/menu-content.d.ts +1 -1
  9. package/lib/default/menu-content.js +1 -1
  10. package/lib/default/menu-content.js.map +1 -1
  11. package/lib/main.d.ts.map +1 -1
  12. package/lib/main.js +5 -5
  13. package/lib/main.js.map +1 -1
  14. package/lib/other-pages.d.ts.map +1 -1
  15. package/lib/other-pages.js +7 -7
  16. package/lib/other-pages.js.map +1 -1
  17. package/lib/pages/admin-dashboard/{admin-routes.d.ts → admin-dashboard-routes.d.ts} +6 -9
  18. package/lib/pages/admin-dashboard/admin-dashboard-routes.d.ts.map +1 -0
  19. package/lib/pages/admin-dashboard/{admin-routes.js → admin-dashboard-routes.js} +6 -9
  20. package/lib/pages/admin-dashboard/admin-dashboard-routes.js.map +1 -0
  21. package/lib/pages/admin-dashboard/admin-dashboard.d.ts.map +1 -1
  22. package/lib/pages/admin-dashboard/admin-dashboard.js +9 -9
  23. package/lib/pages/admin-dashboard/admin-dashboard.js.map +1 -1
  24. package/lib/pages/admin-dashboard/customers/customer-member-list.js +1 -1
  25. package/lib/pages/admin-dashboard/customers/customer-member-list.js.map +1 -1
  26. package/lib/pages/admin-dashboard/customers/customers.js +1 -1
  27. package/lib/pages/admin-dashboard/customers/customers.js.map +1 -1
  28. package/lib/pages/admin-dashboard/publisher-admin.js +1 -1
  29. package/lib/pages/admin-dashboard/publisher-admin.js.map +1 -1
  30. package/lib/pages/admin-dashboard/usage-stats/usage-stats.js +1 -1
  31. package/lib/pages/admin-dashboard/usage-stats/usage-stats.js.map +1 -1
  32. package/lib/pages/admin-dashboard/welcome.js +1 -1
  33. package/lib/pages/admin-dashboard/welcome.js.map +1 -1
  34. package/lib/pages/extension-detail/extension-detail-routes.d.ts +0 -1
  35. package/lib/pages/extension-detail/extension-detail-routes.d.ts.map +1 -1
  36. package/lib/pages/extension-detail/extension-detail-routes.js +2 -3
  37. package/lib/pages/extension-detail/extension-detail-routes.js.map +1 -1
  38. package/lib/pages/extension-detail/extension-detail.d.ts.map +1 -1
  39. package/lib/pages/extension-detail/extension-detail.js +120 -249
  40. package/lib/pages/extension-detail/extension-detail.js.map +1 -1
  41. package/lib/pages/extension-detail/use-extension-details.d.ts +23 -0
  42. package/lib/pages/extension-detail/use-extension-details.d.ts.map +1 -0
  43. package/lib/pages/extension-detail/use-extension-details.js +80 -0
  44. package/lib/pages/extension-detail/use-extension-details.js.map +1 -0
  45. package/lib/pages/user/avatar.js +1 -1
  46. package/lib/pages/user/avatar.js.map +1 -1
  47. package/lib/pages/user/user-settings-namespace-detail.js +1 -1
  48. package/lib/pages/user/user-settings-namespace-detail.js.map +1 -1
  49. package/package.json +3 -1
  50. package/src/components/scan-admin/scan-card/scan-card-expanded-content.tsx +4 -4
  51. package/src/components/scan-admin/scan-card/scan-card-header.tsx +1 -1
  52. package/src/components/scan-admin/scan-card/utils.ts +1 -1
  53. package/src/default/menu-content.tsx +1 -1
  54. package/src/main.tsx +11 -6
  55. package/src/other-pages.tsx +20 -16
  56. package/src/pages/admin-dashboard/{admin-routes.ts → admin-dashboard-routes.ts} +5 -8
  57. package/src/pages/admin-dashboard/admin-dashboard.tsx +27 -23
  58. package/src/pages/admin-dashboard/customers/customer-member-list.tsx +1 -1
  59. package/src/pages/admin-dashboard/customers/customers.tsx +1 -1
  60. package/src/pages/admin-dashboard/publisher-admin.tsx +1 -1
  61. package/src/pages/admin-dashboard/usage-stats/usage-stats.tsx +1 -1
  62. package/src/pages/admin-dashboard/welcome.tsx +1 -1
  63. package/src/pages/extension-detail/extension-detail-routes.ts +2 -3
  64. package/src/pages/extension-detail/extension-detail.tsx +290 -409
  65. package/src/pages/extension-detail/use-extension-details.tsx +101 -0
  66. package/src/pages/user/avatar.tsx +1 -1
  67. package/src/pages/user/user-settings-namespace-detail.tsx +1 -1
  68. package/lib/pages/admin-dashboard/admin-routes.d.ts.map +0 -1
  69. 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"}