@arcblock/ux 2.6.2 → 2.6.4
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/SessionManager/federated-login-detecter.js +2 -1
- package/lib/SessionManager/index.js +2 -1
- package/lib/Util/index.js +45 -2
- package/package.json +4 -4
- package/src/SessionManager/federated-login-detecter.jsx +8 -1
- package/src/SessionManager/index.jsx +2 -1
- package/src/Util/index.js +42 -0
@@ -13,6 +13,7 @@ var _Avatar = _interopRequireDefault(require("../Avatar"));
|
|
13
13
|
var _Address = _interopRequireDefault(require("../Address"));
|
14
14
|
var _Button = _interopRequireDefault(require("../Button"));
|
15
15
|
var _Toast = _interopRequireDefault(require("../Toast"));
|
16
|
+
var _Util = require("../Util");
|
16
17
|
var _jsxRuntime = require("react/jsx-runtime");
|
17
18
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
18
19
|
const translations = {
|
@@ -111,7 +112,7 @@ function FederatedLoginDetecter(_ref3) {
|
|
111
112
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Avatar.default, {
|
112
113
|
variant: "circle",
|
113
114
|
did: userInfo.did,
|
114
|
-
src: userInfo.avatar,
|
115
|
+
src: (0, _Util.getUserAvatar)(userInfo.avatar),
|
115
116
|
size: 28,
|
116
117
|
shape: "circle"
|
117
118
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_material.Box, {
|
@@ -18,6 +18,7 @@ var _VpnKeyOutlined = _interopRequireDefault(require("@mui/icons-material/VpnKey
|
|
18
18
|
var _useBrowser = _interopRequireDefault(require("@arcblock/react-hooks/lib/useBrowser"));
|
19
19
|
var _Avatar = _interopRequireDefault(require("../Avatar"));
|
20
20
|
var _Address = _interopRequireDefault(require("../Address"));
|
21
|
+
var _Util = require("../Util");
|
21
22
|
var _federatedLoginDetecter = _interopRequireDefault(require("./federated-login-detecter"));
|
22
23
|
var _userPopper = _interopRequireDefault(require("./user-popper"));
|
23
24
|
var _jsxRuntime = require("react/jsx-runtime");
|
@@ -101,7 +102,7 @@ function SessionManager(_ref) {
|
|
101
102
|
const [userOpen, setUserOpen] = (0, _react.useState)(false);
|
102
103
|
|
103
104
|
// base64 img maybe have some blank char, need encodeURIComponent to transform it
|
104
|
-
const avatar = (_session$user = session.user) === null || _session$user === void 0 ? void 0 : (_session$user$avatar = _session$user.avatar) === null || _session$user$avatar === void 0 ? void 0 : _session$user$avatar.replace(/\s/g, encodeURIComponent(' '));
|
105
|
+
const avatar = (0, _Util.getUserAvatar)((_session$user = session.user) === null || _session$user === void 0 ? void 0 : (_session$user$avatar = _session$user.avatar) === null || _session$user$avatar === void 0 ? void 0 : _session$user$avatar.replace(/\s/g, encodeURIComponent(' ')));
|
105
106
|
const currentRole = (0, _react.useMemo)(() => {
|
106
107
|
var _session$user2, _session$user2$passpo;
|
107
108
|
return (_session$user2 = session.user) === null || _session$user2 === void 0 ? void 0 : (_session$user2$passpo = _session$user2.passports) === null || _session$user2$passpo === void 0 ? void 0 : _session$user2$passpo.find(item => item.name === session.user.role);
|
package/lib/Util/index.js
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
+
exports.appendParams = void 0;
|
6
7
|
exports.detectWalletExtension = detectWalletExtension;
|
7
8
|
exports.formatToDate = formatToDate;
|
8
9
|
exports.formatToDatetime = formatToDatetime;
|
@@ -10,7 +11,7 @@ exports.getColor = exports.getBackground = exports.formatUptime = void 0;
|
|
10
11
|
exports.getCookieOptions = getCookieOptions;
|
11
12
|
exports.getCopyright = getCopyright;
|
12
13
|
exports.getDateTool = getDateTool;
|
13
|
-
exports.isEthereumDid = exports.getTimezone = exports.getFontSize = void 0;
|
14
|
+
exports.isEthereumDid = exports.getUserAvatar = exports.getTimezone = exports.getFontSize = void 0;
|
14
15
|
exports.mergeProps = mergeProps;
|
15
16
|
exports.openWebWallet = openWebWallet;
|
16
17
|
exports.parseQuery = parseQuery;
|
@@ -296,4 +297,46 @@ const isEthereumDid = did => {
|
|
296
297
|
}
|
297
298
|
return true;
|
298
299
|
};
|
299
|
-
|
300
|
+
|
301
|
+
/**
|
302
|
+
*
|
303
|
+
* @param {string} url 需要处理的 url
|
304
|
+
* @param {{imageFilter: 'crop'|'resize'; w?: number; h?: number; r?: 0|90|180|270}} params
|
305
|
+
* @returns
|
306
|
+
*/
|
307
|
+
exports.isEthereumDid = isEthereumDid;
|
308
|
+
const appendParams = (url, params) => {
|
309
|
+
if (!params) {
|
310
|
+
return url;
|
311
|
+
}
|
312
|
+
try {
|
313
|
+
// HACK: 如果 url 中带有域名,则 urlInstance.origin 为 url 中的域名;否则,借用当前页面的 location.origin 作为域名来拼接一个 url
|
314
|
+
const urlInstance = new URL(url, window.location.origin);
|
315
|
+
Object.keys(params).forEach(key => {
|
316
|
+
urlInstance.searchParams.set(key, params[key]);
|
317
|
+
});
|
318
|
+
// HACK: 如果前后域名一致,代表前面已经借用了 location.origin,这个时候只需要返回 urlInstance.pathname + urlInstance.search 即可
|
319
|
+
if (urlInstance.origin === window.location.origin) {
|
320
|
+
return urlInstance.pathname + urlInstance.search;
|
321
|
+
}
|
322
|
+
return urlInstance.href;
|
323
|
+
} catch (_unused) {
|
324
|
+
return url;
|
325
|
+
}
|
326
|
+
};
|
327
|
+
exports.appendParams = appendParams;
|
328
|
+
const getUserAvatar = function getUserAvatar(avatar) {
|
329
|
+
let size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 48;
|
330
|
+
if (!avatar) {
|
331
|
+
return avatar;
|
332
|
+
}
|
333
|
+
if (avatar.indexOf('/.well-known/service') >= 0) {
|
334
|
+
return appendParams(avatar, {
|
335
|
+
imageFilter: 'resize',
|
336
|
+
w: size,
|
337
|
+
h: size
|
338
|
+
});
|
339
|
+
}
|
340
|
+
return avatar;
|
341
|
+
};
|
342
|
+
exports.getUserAvatar = getUserAvatar;
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@arcblock/ux",
|
3
|
-
"version": "2.6.
|
3
|
+
"version": "2.6.4",
|
4
4
|
"description": "Common used react components for arcblock products",
|
5
5
|
"keywords": [
|
6
6
|
"react",
|
@@ -47,11 +47,11 @@
|
|
47
47
|
"peerDependencies": {
|
48
48
|
"react": ">=18.1.0"
|
49
49
|
},
|
50
|
-
"gitHead": "
|
50
|
+
"gitHead": "15205ba8243468982ed04553234ca9c54eaafe6a",
|
51
51
|
"dependencies": {
|
52
52
|
"@arcblock/did-motif": "^1.1.13",
|
53
|
-
"@arcblock/icons": "^2.6.
|
54
|
-
"@arcblock/react-hooks": "^2.6.
|
53
|
+
"@arcblock/icons": "^2.6.4",
|
54
|
+
"@arcblock/react-hooks": "^2.6.4",
|
55
55
|
"@babel/plugin-syntax-dynamic-import": "^7.8.3",
|
56
56
|
"@emotion/react": "^11.10.4",
|
57
57
|
"@emotion/styled": "^11.10.4",
|
@@ -8,6 +8,7 @@ import DidAvatar from '../Avatar';
|
|
8
8
|
import DidAddress from '../Address';
|
9
9
|
import Button from '../Button';
|
10
10
|
import Toast from '../Toast';
|
11
|
+
import { getUserAvatar } from '../Util';
|
11
12
|
|
12
13
|
const translations = {
|
13
14
|
en: {
|
@@ -93,7 +94,13 @@ export default function FederatedLoginDetecter({ session, anchorEl, dark, locale
|
|
93
94
|
{siteInfo && userInfo && <Divider style={{ margin: '15px 0 10px 0' }} />}
|
94
95
|
{userInfo && (
|
95
96
|
<Box display="flex" alignItems="center">
|
96
|
-
<DidAvatar
|
97
|
+
<DidAvatar
|
98
|
+
variant="circle"
|
99
|
+
did={userInfo.did}
|
100
|
+
src={getUserAvatar(userInfo.avatar)}
|
101
|
+
size={28}
|
102
|
+
shape="circle"
|
103
|
+
/>
|
97
104
|
<Box ml={2}>
|
98
105
|
<Box display="flex" justifyContent="space-between" alignItems="center">
|
99
106
|
<Box fontSize={18}>{userInfo.fullName}</Box>
|
@@ -15,6 +15,7 @@ import useBrowser from '@arcblock/react-hooks/lib/useBrowser';
|
|
15
15
|
|
16
16
|
import DidAvatar from '../Avatar';
|
17
17
|
import DidAddress from '../Address';
|
18
|
+
import { getUserAvatar } from '../Util';
|
18
19
|
import FederatedLoginDetecter from './federated-login-detecter';
|
19
20
|
import UserPopper from './user-popper';
|
20
21
|
|
@@ -75,7 +76,7 @@ function SessionManager({
|
|
75
76
|
const [userOpen, setUserOpen] = useState(false);
|
76
77
|
|
77
78
|
// base64 img maybe have some blank char, need encodeURIComponent to transform it
|
78
|
-
const avatar = session.user?.avatar?.replace(/\s/g, encodeURIComponent(' '));
|
79
|
+
const avatar = getUserAvatar(session.user?.avatar?.replace(/\s/g, encodeURIComponent(' ')));
|
79
80
|
const currentRole = useMemo(
|
80
81
|
() => session.user?.passports?.find((item) => item.name === session.user.role),
|
81
82
|
[session.user]
|
package/src/Util/index.js
CHANGED
@@ -282,3 +282,45 @@ export const isEthereumDid = (did) => {
|
|
282
282
|
}
|
283
283
|
return true;
|
284
284
|
};
|
285
|
+
|
286
|
+
/**
|
287
|
+
*
|
288
|
+
* @param {string} url 需要处理的 url
|
289
|
+
* @param {{imageFilter: 'crop'|'resize'; w?: number; h?: number; r?: 0|90|180|270}} params
|
290
|
+
* @returns
|
291
|
+
*/
|
292
|
+
export const appendParams = (url, params) => {
|
293
|
+
if (!params) {
|
294
|
+
return url;
|
295
|
+
}
|
296
|
+
try {
|
297
|
+
// HACK: 如果 url 中带有域名,则 urlInstance.origin 为 url 中的域名;否则,借用当前页面的 location.origin 作为域名来拼接一个 url
|
298
|
+
const urlInstance = new URL(url, window.location.origin);
|
299
|
+
Object.keys(params).forEach((key) => {
|
300
|
+
urlInstance.searchParams.set(key, params[key]);
|
301
|
+
});
|
302
|
+
// HACK: 如果前后域名一致,代表前面已经借用了 location.origin,这个时候只需要返回 urlInstance.pathname + urlInstance.search 即可
|
303
|
+
if (urlInstance.origin === window.location.origin) {
|
304
|
+
return urlInstance.pathname + urlInstance.search;
|
305
|
+
}
|
306
|
+
return urlInstance.href;
|
307
|
+
} catch {
|
308
|
+
return url;
|
309
|
+
}
|
310
|
+
};
|
311
|
+
|
312
|
+
export const getUserAvatar = (avatar, size = 48) => {
|
313
|
+
if (!avatar) {
|
314
|
+
return avatar;
|
315
|
+
}
|
316
|
+
|
317
|
+
if (avatar.indexOf('/.well-known/service') >= 0) {
|
318
|
+
return appendParams(avatar, {
|
319
|
+
imageFilter: 'resize',
|
320
|
+
w: size,
|
321
|
+
h: size,
|
322
|
+
});
|
323
|
+
}
|
324
|
+
|
325
|
+
return avatar;
|
326
|
+
};
|