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.
Files changed (77) 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-changes.d.ts.map +1 -1
  35. package/lib/pages/extension-detail/extension-detail-changes.js +1 -4
  36. package/lib/pages/extension-detail/extension-detail-changes.js.map +1 -1
  37. package/lib/pages/extension-detail/extension-detail-overview.d.ts.map +1 -1
  38. package/lib/pages/extension-detail/extension-detail-overview.js +1 -6
  39. package/lib/pages/extension-detail/extension-detail-overview.js.map +1 -1
  40. package/lib/pages/extension-detail/extension-detail-routes.d.ts +0 -1
  41. package/lib/pages/extension-detail/extension-detail-routes.d.ts.map +1 -1
  42. package/lib/pages/extension-detail/extension-detail-routes.js +2 -3
  43. package/lib/pages/extension-detail/extension-detail-routes.js.map +1 -1
  44. package/lib/pages/extension-detail/extension-detail.d.ts.map +1 -1
  45. package/lib/pages/extension-detail/extension-detail.js +120 -247
  46. package/lib/pages/extension-detail/extension-detail.js.map +1 -1
  47. package/lib/pages/extension-detail/use-extension-details.d.ts +23 -0
  48. package/lib/pages/extension-detail/use-extension-details.d.ts.map +1 -0
  49. package/lib/pages/extension-detail/use-extension-details.js +80 -0
  50. package/lib/pages/extension-detail/use-extension-details.js.map +1 -0
  51. package/lib/pages/user/avatar.js +1 -1
  52. package/lib/pages/user/avatar.js.map +1 -1
  53. package/lib/pages/user/user-settings-namespace-detail.js +1 -1
  54. package/lib/pages/user/user-settings-namespace-detail.js.map +1 -1
  55. package/package.json +3 -1
  56. package/src/components/scan-admin/scan-card/scan-card-expanded-content.tsx +4 -4
  57. package/src/components/scan-admin/scan-card/scan-card-header.tsx +1 -1
  58. package/src/components/scan-admin/scan-card/utils.ts +1 -1
  59. package/src/default/menu-content.tsx +1 -1
  60. package/src/main.tsx +11 -6
  61. package/src/other-pages.tsx +20 -16
  62. package/src/pages/admin-dashboard/{admin-routes.ts → admin-dashboard-routes.ts} +5 -8
  63. package/src/pages/admin-dashboard/admin-dashboard.tsx +27 -23
  64. package/src/pages/admin-dashboard/customers/customer-member-list.tsx +1 -1
  65. package/src/pages/admin-dashboard/customers/customers.tsx +1 -1
  66. package/src/pages/admin-dashboard/publisher-admin.tsx +1 -1
  67. package/src/pages/admin-dashboard/usage-stats/usage-stats.tsx +1 -1
  68. package/src/pages/admin-dashboard/welcome.tsx +1 -1
  69. package/src/pages/extension-detail/extension-detail-changes.tsx +1 -5
  70. package/src/pages/extension-detail/extension-detail-overview.tsx +1 -7
  71. package/src/pages/extension-detail/extension-detail-routes.ts +2 -3
  72. package/src/pages/extension-detail/extension-detail.tsx +290 -407
  73. package/src/pages/extension-detail/use-extension-details.tsx +101 -0
  74. package/src/pages/user/avatar.tsx +1 -1
  75. package/src/pages/user/user-settings-namespace-detail.tsx +1 -1
  76. package/lib/pages/admin-dashboard/admin-routes.d.ts.map +0 -1
  77. 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"}