@blocklet/ui-react 2.9.18 → 2.9.20

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 (87) hide show
  1. package/build.config.ts +1 -1
  2. package/es/@types/index.d.ts +2 -0
  3. package/es/UserCenter/components/settings.d.ts +1 -2
  4. package/es/UserCenter/components/settings.js +8 -1
  5. package/es/UserCenter/components/storage/connect-to.d.ts +7 -0
  6. package/es/UserCenter/components/storage/connect-to.js +104 -0
  7. package/es/UserCenter/components/storage/connected.d.ts +7 -0
  8. package/es/UserCenter/components/storage/connected.js +21 -0
  9. package/es/UserCenter/components/storage/delete.d.ts +7 -0
  10. package/es/UserCenter/components/storage/delete.js +59 -0
  11. package/es/UserCenter/components/storage/disconnect.d.ts +3 -0
  12. package/es/UserCenter/components/storage/disconnect.js +23 -0
  13. package/es/UserCenter/components/storage/icons/empty-spaces-nft.svg +58 -0
  14. package/es/UserCenter/components/storage/icons/long-arrow.svg +5 -0
  15. package/es/UserCenter/components/storage/icons/space-connected.svg +3 -0
  16. package/es/UserCenter/components/storage/icons/space-disconnect.svg +3 -0
  17. package/es/UserCenter/components/storage/index.d.ts +3 -0
  18. package/es/UserCenter/components/storage/index.js +25 -0
  19. package/es/UserCenter/components/storage/item.d.ts +9 -0
  20. package/es/UserCenter/components/storage/item.js +147 -0
  21. package/es/UserCenter/components/storage/preview-nft.d.ts +6 -0
  22. package/es/UserCenter/components/storage/preview-nft.js +80 -0
  23. package/es/UserCenter/components/user-center.d.ts +2 -1
  24. package/es/UserCenter/components/user-center.js +8 -4
  25. package/es/UserCenter/libs/api.d.ts +3 -0
  26. package/es/UserCenter/libs/api.js +4 -0
  27. package/es/UserCenter/libs/locales.d.ts +2 -0
  28. package/es/UserCenter/libs/locales.js +2 -0
  29. package/es/contexts/config-user-space.d.ts +26 -0
  30. package/es/contexts/config-user-space.js +53 -0
  31. package/es/hooks/use-mobile.d.ts +4 -0
  32. package/es/hooks/use-mobile.js +5 -0
  33. package/es/libs/spaces.d.ts +1 -0
  34. package/es/libs/spaces.js +7 -0
  35. package/lib/@types/index.d.ts +2 -0
  36. package/lib/UserCenter/components/settings.d.ts +1 -2
  37. package/lib/UserCenter/components/settings.js +9 -1
  38. package/lib/UserCenter/components/storage/connect-to.d.ts +7 -0
  39. package/lib/UserCenter/components/storage/connect-to.js +127 -0
  40. package/lib/UserCenter/components/storage/connected.d.ts +7 -0
  41. package/lib/UserCenter/components/storage/connected.js +45 -0
  42. package/lib/UserCenter/components/storage/delete.d.ts +7 -0
  43. package/lib/UserCenter/components/storage/delete.js +71 -0
  44. package/lib/UserCenter/components/storage/disconnect.d.ts +3 -0
  45. package/lib/UserCenter/components/storage/disconnect.js +37 -0
  46. package/lib/UserCenter/components/storage/icons/empty-spaces-nft.svg +58 -0
  47. package/lib/UserCenter/components/storage/icons/long-arrow.svg +5 -0
  48. package/lib/UserCenter/components/storage/icons/space-connected.svg +3 -0
  49. package/lib/UserCenter/components/storage/icons/space-disconnect.svg +3 -0
  50. package/lib/UserCenter/components/storage/index.d.ts +3 -0
  51. package/lib/UserCenter/components/storage/index.js +56 -0
  52. package/lib/UserCenter/components/storage/item.d.ts +9 -0
  53. package/lib/UserCenter/components/storage/item.js +179 -0
  54. package/lib/UserCenter/components/storage/preview-nft.d.ts +6 -0
  55. package/lib/UserCenter/components/storage/preview-nft.js +88 -0
  56. package/lib/UserCenter/components/user-center.d.ts +2 -1
  57. package/lib/UserCenter/components/user-center.js +10 -6
  58. package/lib/UserCenter/libs/api.d.ts +3 -0
  59. package/lib/UserCenter/libs/api.js +16 -0
  60. package/lib/UserCenter/libs/locales.d.ts +2 -0
  61. package/lib/UserCenter/libs/locales.js +2 -0
  62. package/lib/contexts/config-user-space.d.ts +26 -0
  63. package/lib/contexts/config-user-space.js +61 -0
  64. package/lib/hooks/use-mobile.d.ts +4 -0
  65. package/lib/hooks/use-mobile.js +13 -0
  66. package/lib/libs/spaces.d.ts +1 -0
  67. package/lib/libs/spaces.js +13 -0
  68. package/package.json +6 -4
  69. package/src/@types/index.ts +3 -0
  70. package/src/UserCenter/components/settings.tsx +8 -2
  71. package/src/UserCenter/components/storage/connect-to.tsx +117 -0
  72. package/src/UserCenter/components/storage/connected.tsx +29 -0
  73. package/src/UserCenter/components/storage/delete.tsx +66 -0
  74. package/src/UserCenter/components/storage/disconnect.tsx +27 -0
  75. package/src/UserCenter/components/storage/icons/empty-spaces-nft.svg +58 -0
  76. package/src/UserCenter/components/storage/icons/long-arrow.svg +5 -0
  77. package/src/UserCenter/components/storage/icons/space-connected.svg +3 -0
  78. package/src/UserCenter/components/storage/icons/space-disconnect.svg +3 -0
  79. package/src/UserCenter/components/storage/index.tsx +47 -0
  80. package/src/UserCenter/components/storage/item.tsx +150 -0
  81. package/src/UserCenter/components/storage/preview-nft.tsx +72 -0
  82. package/src/UserCenter/components/user-center.tsx +10 -4
  83. package/src/UserCenter/libs/api.ts +7 -0
  84. package/src/UserCenter/libs/locales.ts +2 -0
  85. package/src/contexts/config-user-space.tsx +86 -0
  86. package/src/hooks/use-mobile.tsx +6 -0
  87. package/src/libs/spaces.tsx +10 -0
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ var _material = require("@mui/material");
9
+ var _context = require("@arcblock/ux/lib/Locale/context");
10
+ var _Toast = _interopRequireDefault(require("@arcblock/ux/lib/Toast"));
11
+ var _Check = _interopRequireDefault(require("@mui/icons-material/Check"));
12
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
13
+ var _spaceConnected = _interopRequireDefault(require("./icons/space-connected.svg?react"));
14
+ var _DID = _interopRequireDefault(require("@arcblock/ux/lib/DID"));
15
+ var _previewNft = _interopRequireDefault(require("./preview-nft"));
16
+ var _useMobile = _interopRequireDefault(require("../../../hooks/use-mobile"));
17
+ var _spaces = require("../../../libs/spaces");
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+ function SpaceItem({
20
+ spaceGateway,
21
+ connected,
22
+ onDisconnect,
23
+ ...rest
24
+ }) {
25
+ const isMobile = (0, _useMobile.default)({});
26
+ const {
27
+ t
28
+ } = (0, _context.useLocaleContext)();
29
+ const handleOnDisconnect = async () => {
30
+ try {
31
+ await onDisconnect();
32
+ _Toast.default.success(t("storage.spaces.gateway.delete.succeeded", {
33
+ name: spaceGateway.name
34
+ }));
35
+ } catch (error) {
36
+ console.error(error);
37
+ _Toast.default.error(error.message);
38
+ }
39
+ };
40
+ return /* @__PURE__ */(0, _jsxRuntime.jsxs)(BoxContainer, {
41
+ style: {
42
+ position: "relative"
43
+ },
44
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Box, {
45
+ sx: {
46
+ backgroundColor: connected ? "#F0FDFF" : "inherit",
47
+ "&:hover": {
48
+ backgroundColor: connected ? "#F0FDFF" : "#FBFBFB"
49
+ },
50
+ borderRadius: "8px"
51
+ },
52
+ display: "flex",
53
+ padding: "12px 20px",
54
+ ...rest,
55
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Box, {
56
+ display: "flex",
57
+ children: /* @__PURE__ */(0, _jsxRuntime.jsx)(_previewNft.default, {
58
+ alt: spaceGateway.did,
59
+ src: (0, _spaces.getSpaceNftDisplayUrlFromEndpoint)(spaceGateway.endpoint)
60
+ })
61
+ }), /* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Box, {
62
+ className: "spaces-info",
63
+ display: "flex",
64
+ flexGrow: 1,
65
+ flexDirection: "column",
66
+ sx: {
67
+ marginLeft: "20px",
68
+ padding: "0px 0px"
69
+ },
70
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Box, {
71
+ className: "spaces-info",
72
+ display: "flex",
73
+ maxWidth: "360px",
74
+ alignItems: "center",
75
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Typography, {
76
+ color: connected ? "primary" : "inherit",
77
+ fontSize: "1rem",
78
+ fontWeight: "bold",
79
+ children: spaceGateway.name
80
+ }), /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Chip, {
81
+ label: /* @__PURE__ */(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
82
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_spaceConnected.default, {
83
+ style: {
84
+ marginRight: "4px"
85
+ }
86
+ }), t("storage.spaces.connected.tag")]
87
+ }),
88
+ variant: "outlined",
89
+ size: "small",
90
+ style: {
91
+ marginLeft: isMobile ? void 0 : "20px",
92
+ fontWeight: "bold"
93
+ }
94
+ })]
95
+ }), /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Box, {
96
+ className: "spaces-address",
97
+ display: "flex",
98
+ color: "#9397A1",
99
+ marginTop: "8px",
100
+ children: /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Typography, {
101
+ sx: {
102
+ display: "inline-flex",
103
+ alignItems: "center",
104
+ fontSize: "14px"
105
+ },
106
+ color: "#9397A1",
107
+ children: spaceGateway.did && /* @__PURE__ */(0, _jsxRuntime.jsx)(_DID.default, {
108
+ copyable: false,
109
+ size: 14,
110
+ compact: true,
111
+ responsive: false,
112
+ did: spaceGateway.did
113
+ })
114
+ })
115
+ })]
116
+ })]
117
+ }), /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Box, {
118
+ className: "selected-container selected",
119
+ children: /* @__PURE__ */(0, _jsxRuntime.jsx)(_Check.default, {
120
+ className: "selected-icon"
121
+ })
122
+ })]
123
+ });
124
+ }
125
+ const BoxContainer = (0, _styled.default)(_material.Box)`
126
+ .selected-container {
127
+ position: absolute;
128
+ right: 0px;
129
+ bottom: 0px;
130
+ display: flex;
131
+ -webkit-box-pack: end;
132
+ justify-content: flex-end;
133
+ align-items: flex-end;
134
+ width: 32px;
135
+ height: 32px;
136
+ border-radius: 0px 0px 8px;
137
+ color: rgb(255, 255, 255);
138
+ overflow: hidden;
139
+ transition: all 0.4s ease 0s;
140
+
141
+ &::after {
142
+ position: absolute;
143
+ z-index: 0;
144
+ left: 60px;
145
+ top: 60px;
146
+ display: block;
147
+ width: 0px;
148
+ height: 0px;
149
+ border-width: 16px;
150
+ border-style: solid;
151
+ border-color: transparent #1dc1c7 #1dc1c7 transparent;
152
+ transition: all 0.1s ease 0s;
153
+ content: '';
154
+ }
155
+
156
+ .selected-icon {
157
+ visibility: hidden;
158
+ width: 60%;
159
+ height: 60%;
160
+ position: relative;
161
+ z-index: 2;
162
+ margin: 0px 1px 1px 0px;
163
+ font-size: 16px;
164
+ transition: all 0.2s ease 0s;
165
+ }
166
+ }
167
+
168
+ .selected-container.selected {
169
+ &::after {
170
+ left: 0px;
171
+ top: 0px;
172
+ }
173
+
174
+ .selected-icon {
175
+ visibility: visible;
176
+ }
177
+ }
178
+ `;
179
+ module.exports = SpaceItem;
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ declare function PreviewSpaceNft({ src, alt }: {
3
+ src: string;
4
+ alt: string;
5
+ }): import("react").JSX.Element;
6
+ export default PreviewSpaceNft;
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ var _react = require("react");
9
+ var _reactPlaceholder = _interopRequireDefault(require("react-placeholder"));
10
+ var _material = require("@mui/material");
11
+ var _CloseOutlined = _interopRequireDefault(require("@mui/icons-material/CloseOutlined"));
12
+ var _emptySpacesNft = _interopRequireDefault(require("./icons/empty-spaces-nft.svg?react"));
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ function PreviewSpaceNft({
15
+ src,
16
+ alt
17
+ }) {
18
+ const [showEmptySpaceNFT, setShowEmptySpaceNFT] = (0, _react.useState)(false);
19
+ const [open, setOpen] = (0, _react.useState)(false);
20
+ const handleOpen = () => setOpen(true);
21
+ const handleClose = () => setOpen(false);
22
+ return /* @__PURE__ */(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
23
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_reactPlaceholder.default, {
24
+ ready: showEmptySpaceNFT,
25
+ customPlaceholder:
26
+ // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
27
+ /* @__PURE__ */
28
+ (0, _jsxRuntime.jsx)("img", {
29
+ style: {
30
+ cursor: "pointer"
31
+ },
32
+ alt,
33
+ src,
34
+ width: "58px",
35
+ height: "58px",
36
+ onError: () => setShowEmptySpaceNFT(true),
37
+ onClick: handleOpen
38
+ }),
39
+ children: /* @__PURE__ */(0, _jsxRuntime.jsx)(_emptySpacesNft.default, {
40
+ style: {
41
+ cursor: "pointer",
42
+ width: "58px",
43
+ height: "58px"
44
+ },
45
+ onClick: handleOpen
46
+ })
47
+ }), /* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Dialog, {
48
+ open,
49
+ onClose: handleClose,
50
+ "aria-labelledby": "preview-space-nft-display",
51
+ "aria-describedby": "preview space nft display",
52
+ fullWidth: true,
53
+ maxWidth: "md",
54
+ children: /* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.DialogContent, {
55
+ style: {
56
+ padding: "8px 8px",
57
+ backgroundColor: "rgba(0,0,0,0.8)"
58
+ },
59
+ children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_material.IconButton, {
60
+ color: "inherit",
61
+ onClick: handleClose,
62
+ "aria-label": "close",
63
+ style: {
64
+ position: "absolute",
65
+ top: 8,
66
+ right: 8,
67
+ color: "white"
68
+ },
69
+ children: /* @__PURE__ */(0, _jsxRuntime.jsx)(_CloseOutlined.default, {})
70
+ }), showEmptySpaceNFT ? /* @__PURE__ */(0, _jsxRuntime.jsx)(_emptySpacesNft.default, {
71
+ style: {
72
+ width: "100%",
73
+ height: "75vh"
74
+ }
75
+ }) : /* @__PURE__ */(0, _jsxRuntime.jsx)("img", {
76
+ src,
77
+ alt: "",
78
+ style: {
79
+ width: "100%",
80
+ height: "75vh",
81
+ objectFit: "contain"
82
+ }
83
+ })]
84
+ })
85
+ })]
86
+ });
87
+ }
88
+ module.exports = PreviewSpaceNft;
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import type { PaperProps } from '@mui/material';
3
- export default function UserCenter({ children, currentTab, contentProps, disableAutoRedirect, autoPopupSetting, hideFooter, headerProps, footerProps, }: {
3
+ export default function UserCenter({ children, currentTab, contentProps, disableAutoRedirect, autoPopupSetting, hideFooter, headerProps, footerProps, userDid, }: {
4
4
  readonly children: any;
5
5
  readonly currentTab: string;
6
6
  readonly contentProps?: PaperProps;
@@ -9,4 +9,5 @@ export default function UserCenter({ children, currentTab, contentProps, disable
9
9
  readonly hideFooter?: boolean;
10
10
  readonly headerProps?: object;
11
11
  readonly footerProps?: object;
12
+ readonly userDid?: string;
12
13
  }): import("react").JSX.Element | null;
@@ -35,7 +35,8 @@ function UserCenter({
35
35
  autoPopupSetting = false,
36
36
  hideFooter = false,
37
37
  headerProps = {},
38
- footerProps = {}
38
+ footerProps = {},
39
+ userDid
39
40
  }) {
40
41
  const {
41
42
  locale
@@ -46,6 +47,9 @@ function UserCenter({
46
47
  const sessionCtx = (0, _react.useContext)(_Session.SessionContext);
47
48
  const session = sessionCtx?.session;
48
49
  const currentDid = (0, _ahooks.useCreation)(() => {
50
+ if (userDid) {
51
+ return userDid;
52
+ }
49
53
  const currentUrl = window.location.href;
50
54
  const query = (0, _ufo.getQuery)(currentUrl);
51
55
  if (query?.did) {
@@ -55,7 +59,7 @@ function UserCenter({
55
59
  return query.did;
56
60
  }
57
61
  return session?.user?.did;
58
- }, [session?.user?.did]);
62
+ }, [session?.user?.did, userDid]);
59
63
  const isMyself = (0, _ahooks.useCreation)(() => {
60
64
  if (session?.user) {
61
65
  return currentDid === session?.user?.did;
@@ -266,9 +270,9 @@ function UserCenter({
266
270
  }) : null, isMyself ? /* @__PURE__ */(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
267
271
  children: [/* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Box, {
268
272
  children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Typography, {
269
- variant: "h5",
273
+ variant: "h6",
270
274
  sx: {
271
- fontWeight: "bold",
275
+ fontWeight: 600,
272
276
  mb: 1.5
273
277
  },
274
278
  children: t("passport")
@@ -277,9 +281,9 @@ function UserCenter({
277
281
  })]
278
282
  }), /* @__PURE__ */(0, _jsxRuntime.jsxs)(_material.Box, {
279
283
  children: [/* @__PURE__ */(0, _jsxRuntime.jsx)(_material.Typography, {
280
- variant: "h5",
284
+ variant: "h6",
281
285
  sx: {
282
- fontWeight: "bold",
286
+ fontWeight: 600,
283
287
  mb: 1.5
284
288
  },
285
289
  children: t("userInfo")
@@ -0,0 +1,3 @@
1
+ import axios from 'axios';
2
+ declare const api: import("axios").AxiosInstance;
3
+ export { axios, api };
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.api = void 0;
7
+ Object.defineProperty(exports, "axios", {
8
+ enumerable: true,
9
+ get: function () {
10
+ return _axios.default;
11
+ }
12
+ });
13
+ var _axios = _interopRequireDefault(require("axios"));
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+ _axios.default.defaults.timeout = 10 * 1e3;
16
+ const api = exports.api = _axios.default.create();
@@ -23,6 +23,7 @@ export declare const translations: {
23
23
  noUserFound: string;
24
24
  notificationManagement: string;
25
25
  privacyManagement: string;
26
+ storageManagement: string;
26
27
  webhook: {
27
28
  url: string;
28
29
  slack: string;
@@ -57,6 +58,7 @@ export declare const translations: {
57
58
  emptyField: string;
58
59
  notificationManagement: string;
59
60
  privacyManagement: string;
61
+ storageManagement: string;
60
62
  emptyContent: string;
61
63
  underProtected: string;
62
64
  noUserFound: string;
@@ -29,6 +29,7 @@ const translations = exports.translations = {
29
29
  noUserFound: "\u672A\u627E\u5230\u6307\u5B9A\u7684\u7528\u6237",
30
30
  notificationManagement: "\u901A\u77E5\u7BA1\u7406",
31
31
  privacyManagement: "\u9690\u79C1\u7BA1\u7406",
32
+ storageManagement: "\u5B58\u50A8\u7BA1\u7406",
32
33
  webhook: {
33
34
  url: "\u81EA\u5B9A\u4E49URL",
34
35
  slack: "Slack"
@@ -63,6 +64,7 @@ const translations = exports.translations = {
63
64
  emptyField: "Empty field",
64
65
  notificationManagement: "Notification",
65
66
  privacyManagement: "Privacy",
67
+ storageManagement: "Storage",
66
68
  emptyContent: "Empty",
67
69
  underProtected: "This page has protected privacy",
68
70
  noUserFound: "No user found",
@@ -0,0 +1,26 @@
1
+ /// <reference types="react" />
2
+ export interface SpaceGateway {
3
+ did: string;
4
+ name: string;
5
+ url: string;
6
+ endpoint: string;
7
+ }
8
+ export interface SettingStorageEndpoint {
9
+ (endpoint: string | undefined): void | Promise<void>;
10
+ }
11
+ interface ConfigUserSpaceContextType {
12
+ loading: boolean;
13
+ spaceGateway: SpaceGateway | undefined;
14
+ deleteSpaceGateway: (spaceGateway: SpaceGateway) => Promise<void>;
15
+ updateSpaceGateway: (updateSpaceGateway: SpaceGateway) => Promise<void>;
16
+ storageEndpoint: string;
17
+ settingStorageEndpoint: SettingStorageEndpoint;
18
+ hasStorageEndpoint: boolean;
19
+ }
20
+ declare const ConfigUserSpaceContext: import("react").Context<ConfigUserSpaceContextType>;
21
+ declare const Consumer: import("react").Consumer<ConfigUserSpaceContextType>;
22
+ declare function ConfigUserSpaceProvider({ children }: {
23
+ children: React.ReactNode;
24
+ }): import("react").JSX.Element;
25
+ declare function useConfigUserSpaceContext(): ConfigUserSpaceContextType;
26
+ export { ConfigUserSpaceContext, ConfigUserSpaceProvider, Consumer as ConfigUserSpaceConsumer, useConfigUserSpaceContext, };
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ConfigUserSpaceContext = exports.ConfigUserSpaceConsumer = void 0;
7
+ exports.ConfigUserSpaceProvider = ConfigUserSpaceProvider;
8
+ exports.useConfigUserSpaceContext = useConfigUserSpaceContext;
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ var _react = require("react");
11
+ var _Session = require("@arcblock/did-connect/lib/Session");
12
+ const ConfigUserSpaceContext = exports.ConfigUserSpaceContext = (0, _react.createContext)({});
13
+ const {
14
+ Provider,
15
+ Consumer
16
+ } = ConfigUserSpaceContext;
17
+ exports.ConfigUserSpaceConsumer = Consumer;
18
+ function ConfigUserSpaceProvider({
19
+ children
20
+ }) {
21
+ const [loading] = (0, _react.useState)(false);
22
+ const {
23
+ session
24
+ } = (0, _react.useContext)(_Session.SessionContext);
25
+ const {
26
+ user
27
+ } = session;
28
+ const [spaceGateway, setSpaceGateway] = (0, _react.useState)();
29
+ const storageEndpoint = (0, _react.useMemo)(() => {
30
+ return user?.didSpace?.endpoint;
31
+ }, [user?.didSpace]);
32
+ (0, _react.useEffect)(() => {
33
+ setSpaceGateway(user?.didSpace);
34
+ }, [user?.didSpace]);
35
+ const deleteSpaceGateway = async () => {
36
+ setSpaceGateway(void 0);
37
+ };
38
+ const updateSpaceGateway = async x => {
39
+ setSpaceGateway(x);
40
+ session.refresh();
41
+ await settingStorageEndpoint(x.endpoint);
42
+ };
43
+ const settingStorageEndpoint = endpoint => {};
44
+ const hasStorageEndpoint = Boolean(storageEndpoint && spaceGateway);
45
+ return /* @__PURE__ */(0, _jsxRuntime.jsx)(Provider, {
46
+ value: {
47
+ loading,
48
+ spaceGateway,
49
+ deleteSpaceGateway,
50
+ updateSpaceGateway,
51
+ storageEndpoint,
52
+ settingStorageEndpoint,
53
+ hasStorageEndpoint
54
+ },
55
+ children
56
+ });
57
+ }
58
+ function useConfigUserSpaceContext() {
59
+ const res = (0, _react.useContext)(ConfigUserSpaceContext);
60
+ return res;
61
+ }
@@ -0,0 +1,4 @@
1
+ import { Breakpoint } from '@mui/material';
2
+ export default function useMobile({ key }: {
3
+ key?: number | Breakpoint;
4
+ }): boolean;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ module.exports = useMobile;
7
+ var _material = require("@mui/material");
8
+ function useMobile({
9
+ key = "sm"
10
+ }) {
11
+ const theme = (0, _material.useTheme)();
12
+ return (0, _material.useMediaQuery)(theme.breakpoints.down(key));
13
+ }
@@ -0,0 +1 @@
1
+ export declare function getSpaceNftDisplayUrlFromEndpoint(endpoint: string): string;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getSpaceNftDisplayUrlFromEndpoint = getSpaceNftDisplayUrlFromEndpoint;
7
+ var _ufo = require("ufo");
8
+ function getSpaceNftDisplayUrlFromEndpoint(endpoint) {
9
+ const prefix = endpoint.replace(/\/api\/space\/.+/, "");
10
+ const strArray = endpoint.replace(/\/$/, "").split("/");
11
+ const spaceDid = strArray.at(-4);
12
+ return (0, _ufo.joinURL)(prefix, `/api/space/nft/display?spaceDid=${spaceDid}`);
13
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blocklet/ui-react",
3
- "version": "2.9.18",
3
+ "version": "2.9.20",
4
4
  "description": "Some useful front-end web components that can be used in Blocklets.",
5
5
  "keywords": [
6
6
  "react",
@@ -63,8 +63,8 @@
63
63
  },
64
64
  "dependencies": {
65
65
  "@abtnode/constant": "1.16.23-beta-aeb9f5bd",
66
- "@arcblock/did-connect": "^2.9.18",
67
- "@arcblock/ux": "^2.9.18",
66
+ "@arcblock/did-connect": "^2.9.20",
67
+ "@arcblock/ux": "^2.9.20",
68
68
  "@blocklet/js-sdk": "1.16.23-beta-aeb9f5bd",
69
69
  "@emotion/react": "^11.10.4",
70
70
  "@emotion/styled": "^11.10.4",
@@ -77,7 +77,9 @@
77
77
  "iconify-icon": "^1.0.8",
78
78
  "iconify-icons-material-symbols-400": "^0.0.1",
79
79
  "is-url": "^1.2.4",
80
+ "lodash": "^4.17.21",
80
81
  "react-error-boundary": "^3.1.4",
82
+ "react-placeholder": "^4.1.0",
81
83
  "ufo": "^1.3.2"
82
84
  },
83
85
  "peerDependencies": {
@@ -96,5 +98,5 @@
96
98
  "jest": "^28.1.3",
97
99
  "unbuild": "^2.0.0"
98
100
  },
99
- "gitHead": "435fbdda42f68b81af5b09ce49fc874142d17e74"
101
+ "gitHead": "56354c3f25c0d62ae39d79f07c648a7c0d9e66f7"
100
102
  }
@@ -17,6 +17,7 @@ export type User = {
17
17
  lastLoginIp?: string;
18
18
  createdAt?: string;
19
19
  passports?: any[];
20
+ didSpace: Record<string, any>;
20
21
  };
21
22
 
22
23
  export type UserCenterTab = {
@@ -36,6 +37,8 @@ export type Session = {
36
37
  switchDid: any;
37
38
  switchProfile: any;
38
39
  switchPassport: any;
40
+
41
+ refresh: Function;
39
42
  };
40
43
 
41
44
  export type WebhookType = 'slack' | 'api';
@@ -4,11 +4,12 @@ import type { BoxProps } from '@mui/material';
4
4
  import { useCreation, useMemoizedFn, useReactive } from 'ahooks';
5
5
  import { translate } from '@arcblock/ux/lib/Locale/util';
6
6
  import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
7
-
7
+ import { ConfigUserSpaceProvider } from '../../contexts/config-user-space';
8
8
  import { translations } from '../libs/locales';
9
9
  import Notification from './notification';
10
10
  import Privacy from './privacy';
11
11
  import { User, UserCenterTab } from '../../@types';
12
+ import DidSpace from './storage';
12
13
 
13
14
  export default function Settings({
14
15
  user,
@@ -48,7 +49,12 @@ export default function Settings({
48
49
  value: 'privacy',
49
50
  content: <Privacy configList={privacyConfigList} onSave={onSave} />,
50
51
  },
51
- ];
52
+ user?.didSpace?.endpoint && {
53
+ label: t('storageManagement'),
54
+ value: 'storage',
55
+ content: <ConfigUserSpaceProvider><DidSpace /></ConfigUserSpaceProvider>,
56
+ },
57
+ ].filter(Boolean);
52
58
  }, [user, privacyConfigList]);
53
59
  const currentState = useReactive({
54
60
  tab: tabs[0].value,