@abtnode/ux 1.16.13-beta-d17a7de4 → 1.16.13-beta-90ded76f

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.
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = BlockletMonitor;
7
- var _react = require("react");
6
+ exports.default = RuntimeInsight;
7
+ var _react = _interopRequireWildcard(require("react"));
8
8
  var _styled = _interopRequireDefault(require("@emotion/styled"));
9
9
  var _filesize = _interopRequireDefault(require("filesize"));
10
10
  var _prettyMsI18n = _interopRequireDefault(require("pretty-ms-i18n"));
@@ -15,14 +15,15 @@ var _util = require("@blocklet/meta/lib/util");
15
15
  var _context = require("@arcblock/ux/lib/Locale/context");
16
16
  var _blocklet = require("../contexts/blocklet");
17
17
  var _util2 = require("../util");
18
- var _runtimeInfo = _interopRequireDefault(require("./runtime-info"));
19
- var _diskInfo = _interopRequireDefault(require("./disk-info"));
20
- var _bundleAvatar = _interopRequireDefault(require("./bundle-avatar"));
18
+ var _runtimeInfo = _interopRequireDefault(require("../blocklet/runtime-info"));
19
+ var _bundleAvatar = _interopRequireDefault(require("../blocklet/bundle-avatar"));
21
20
  var _jsxRuntime = require("react/jsx-runtime");
22
21
  var _templateObject;
23
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
24
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
24
25
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
25
- function BlockletMonitor() {
26
+ function RuntimeInsight() {
26
27
  const {
27
28
  t,
28
29
  locale
@@ -140,14 +141,16 @@ function BlockletMonitor() {
140
141
  }];
141
142
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Div, {
142
143
  component: "div",
143
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
144
- mt: 0,
145
- display: "flex",
146
- alignItems: "center",
147
- className: "title",
148
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
149
- children: t('common.runtimeInfo')
150
- })
144
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
145
+ component: "h3",
146
+ variant: "h5",
147
+ color: "textPrimary",
148
+ style: {
149
+ fontSize: 18,
150
+ fontWeight: 'bold'
151
+ },
152
+ mb: 2,
153
+ children: t('insights.trend')
151
154
  }), blocklet.status === 'running' ? [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
152
155
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_runtimeInfo.default, {
153
156
  blocklet: blocklet,
@@ -157,11 +160,11 @@ function BlockletMonitor() {
157
160
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
158
161
  mt: 3,
159
162
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Datatable.default, {
163
+ title: t('insights.detail'),
160
164
  className: "monitor-table",
161
165
  locale: locale,
162
166
  data: monitList,
163
167
  columns: monitorColumns,
164
- title: "",
165
168
  options: {
166
169
  search: false,
167
170
  download: false,
@@ -174,13 +177,8 @@ function BlockletMonitor() {
174
177
  })
175
178
  })] : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
176
179
  children: t('blocklet.runtimeInfo.noRunning')
177
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
178
- className: "title",
179
- children: t('common.dataStorage')
180
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_diskInfo.default, {
181
- blocklet: blocklet
182
180
  })]
183
181
  });
184
182
  }
185
- BlockletMonitor.propTypes = {};
186
- const Div = (0, _styled.default)(_Typography.default)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .title {\n font-size: 1.2rem;\n font-weight: bold;\n margin-top: ", ";\n margin-bottom: ", ";\n &.first {\n margin-top: 0;\n }\n }\n"])), props => props.theme.spacing(5), props => props.theme.spacing(3));
183
+ RuntimeInsight.propTypes = {};
184
+ const Div = (0, _styled.default)(_Typography.default)(_templateObject || (_templateObject = _taggedTemplateLiteral([""])));
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = TrafficInsights;
7
+ var _react = require("react");
8
+ var _dayjs = _interopRequireDefault(require("@abtnode/util/lib/dayjs"));
9
+ var _nthArg = _interopRequireDefault(require("lodash/nthArg"));
10
+ var _urlJoin = _interopRequireDefault(require("url-join"));
11
+ var _filesize = _interopRequireDefault(require("filesize"));
12
+ var _useAsyncRetry = _interopRequireDefault(require("react-use/lib/useAsyncRetry"));
13
+ var _reactIframe = _interopRequireDefault(require("react-iframe"));
14
+ var _Alert = _interopRequireDefault(require("@mui/material/Alert"));
15
+ var _CircularProgress = _interopRequireDefault(require("@mui/material/CircularProgress"));
16
+ var _Grid = _interopRequireDefault(require("@mui/material/Grid"));
17
+ var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
18
+ var _Button = _interopRequireDefault(require("@mui/material/Button"));
19
+ var _Popover = _interopRequireDefault(require("@mui/material/Popover"));
20
+ var _muiDaterangePicker = require("mui-daterange-picker");
21
+ var _xDatePickers = require("@mui/x-date-pickers");
22
+ var _AdapterDayjs = require("@mui/x-date-pickers/AdapterDayjs");
23
+ var _LocalizationProvider = require("@mui/x-date-pickers/LocalizationProvider");
24
+ var _context = require("@arcblock/ux/lib/Locale/context");
25
+ var _constant = require("@abtnode/constant");
26
+ var _util = require("../util");
27
+ var _node = require("../contexts/node");
28
+ var _chart = _interopRequireDefault(require("./chart"));
29
+ var _jsxRuntime = require("react/jsx-runtime");
30
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
32
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
33
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
34
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
35
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } /* eslint-disable react/prop-types */ /* eslint-disable react-hooks/exhaustive-deps */
36
+ const noop = (0, _nthArg.default)(0);
37
+ function TrafficInsights(_ref) {
38
+ let {
39
+ client,
40
+ did
41
+ } = _ref;
42
+ const maxDate = (0, _dayjs.default)().subtract(1, 'day').toDate();
43
+ const {
44
+ info,
45
+ inService
46
+ } = (0, _node.useNodeContext)();
47
+ const {
48
+ t,
49
+ locale
50
+ } = (0, _context.useLocaleContext)();
51
+ const [anchorEl, setAnchorEl] = (0, _react.useState)(null);
52
+ const [date, setDate] = (0, _react.useState)(maxDate);
53
+ const [dateRange, setDateRange] = (0, _react.useState)({
54
+ startDate: (0, _dayjs.default)().subtract(30, 'day').toDate(),
55
+ endDate: maxDate
56
+ });
57
+ const data = (0, _useAsyncRetry.default)(async () => {
58
+ const result = await client.getTrafficInsights({
59
+ input: {
60
+ did,
61
+ startDate: (0, _dayjs.default)(dateRange.startDate).format('YYYY-MM-DD'),
62
+ endDate: (0, _dayjs.default)(dateRange.endDate).format('YYYY-MM-DD')
63
+ }
64
+ });
65
+ return result.list;
66
+ });
67
+ (0, _react.useEffect)(() => {
68
+ if (data.loading) {
69
+ return;
70
+ }
71
+ if (dateRange.startDate && dateRange.endDate) {
72
+ data.retry();
73
+ }
74
+ }, [dateRange]);
75
+ const onTriggerClick = e => {
76
+ if (anchorEl) {
77
+ setAnchorEl(null);
78
+ } else {
79
+ setAnchorEl(e.currentTarget);
80
+ }
81
+ };
82
+ const list = data.value || [];
83
+ const {
84
+ loading,
85
+ error
86
+ } = data;
87
+ if (!list.length && loading) {
88
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_CircularProgress.default, {});
89
+ }
90
+ if (error) {
91
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.default, {
92
+ severity: "error",
93
+ children: (0, _util.formatError)(error)
94
+ });
95
+ }
96
+ const metrics = {
97
+ totalRequests: noop,
98
+ validRequests: noop,
99
+ failedRequests: noop,
100
+ uniqueVisitors: noop,
101
+ uniqueFiles: noop,
102
+ uniqueReferrers: noop,
103
+ uniqueNotFound: noop,
104
+ uniqueStaticFiles: noop,
105
+ logSize: _filesize.default,
106
+ bandwidth: _filesize.default
107
+ };
108
+ const charts = Object.keys(metrics).map(key => ({
109
+ id: "".concat(key, "_chart"),
110
+ title: t("insights.traffic.".concat(key)),
111
+ current: list.length ? metrics[key](list[0][key]) : 0,
112
+ data: list.map(v => ({
113
+ date: v.date,
114
+ value: v[key]
115
+ })).reverse(),
116
+ dateFn: noop,
117
+ valueFn: metrics[key]
118
+ }));
119
+ const open = Boolean(anchorEl);
120
+ const id = open ? 'date-range-picker-popover' : undefined;
121
+
122
+ // eslint-disable-next-line no-nested-ternary
123
+ const pathPrefix = inService ? _constant.WELLKNOWN_SERVICE_PATH_PREFIX : process.env.NODE_ENV === 'production' ? info.routing.adminPath : '';
124
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
125
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Typography.default, {
126
+ component: "div",
127
+ variant: "h5",
128
+ className: "page-header",
129
+ color: "textPrimary",
130
+ style: {
131
+ fontSize: 18,
132
+ fontWeight: 'bold'
133
+ },
134
+ mb: 2,
135
+ children: [t('insights.trend'), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Button.default, {
136
+ onClick: onTriggerClick,
137
+ variant: "outlined",
138
+ size: "small",
139
+ color: "secondary",
140
+ children: [(0, _util.formatToDate)(dateRange.startDate, locale), " - ", (0, _util.formatToDate)(dateRange.endDate, locale)]
141
+ })]
142
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Popover.default, {
143
+ id: id,
144
+ open: open,
145
+ anchorEl: anchorEl,
146
+ onClose: onTriggerClick,
147
+ anchorOrigin: {
148
+ vertical: 'bottom',
149
+ horizontal: 'left'
150
+ },
151
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_muiDaterangePicker.DateRangePicker, {
152
+ open: true,
153
+ toggle: onTriggerClick,
154
+ maxDate: maxDate,
155
+ onChange: v => setDateRange(v)
156
+ })
157
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Grid.default, {
158
+ container: true,
159
+ spacing: 4,
160
+ children: charts.map(x => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Grid.default, {
161
+ item: true,
162
+ lg: 3,
163
+ md: 6,
164
+ sm: 6,
165
+ xs: 12,
166
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_chart.default, _objectSpread({}, x))
167
+ }, x.id))
168
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Typography.default, {
169
+ component: "div",
170
+ variant: "h5",
171
+ className: "page-header",
172
+ color: "textPrimary",
173
+ style: {
174
+ fontSize: 18,
175
+ fontWeight: 'bold'
176
+ },
177
+ mt: 4,
178
+ mb: 1,
179
+ children: [t('insights.detail'), /*#__PURE__*/(0, _jsxRuntime.jsx)(_LocalizationProvider.LocalizationProvider, {
180
+ dateAdapter: _AdapterDayjs.AdapterDayjs,
181
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_xDatePickers.DatePicker, {
182
+ disableFuture: true,
183
+ format: "ll",
184
+ value: (0, _dayjs.default)(date),
185
+ onChange: newValue => setDate(newValue.toDate()),
186
+ slotProps: {
187
+ textField: {
188
+ size: 'small'
189
+ }
190
+ }
191
+ })
192
+ })]
193
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIframe.default, {
194
+ url: (0, _urlJoin.default)(window.location.origin, pathPrefix, "/api/insights/traffic?date=".concat((0, _dayjs.default)(date).format('YYYY-MM-DD'), "&did=").concat(did)),
195
+ width: "100%",
196
+ height: "100%",
197
+ frameBorder: 0,
198
+ styles: {
199
+ border: 0,
200
+ minHeight: '400vh'
201
+ }
202
+ })]
203
+ });
204
+ }
@@ -71,7 +71,7 @@ function InvitationReceive(_ref) {
71
71
  children: t('invite.receive')
72
72
  }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
73
73
  className: "invite-receive__until",
74
- children: [t('invite.validUntil'), (0, _util.formatDateTime)(invitation.expireDate)]
74
+ children: [t('invite.validUntil'), (0, _util.formatDateTime)(invitation.expireDate, locale)]
75
75
  })]
76
76
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Connect.default, {
77
77
  popup: true,
package/lib/locales/en.js CHANGED
@@ -131,7 +131,7 @@ module.exports = {
131
131
  createdAt: 'Created At',
132
132
  createdBy: 'Created By',
133
133
  dAddress: 'Decentralized Identifiers (DID)',
134
- dataStorage: 'Data Storage',
134
+ dataStorage: 'Storage on Local Disk',
135
135
  delConfirm: 'Delete',
136
136
  delConfirmDescription: 'Confirm delete {data}?',
137
137
  delete: 'Delete',
@@ -203,6 +203,9 @@ module.exports = {
203
203
  memory: 'Memory',
204
204
  meta: 'Meta Data',
205
205
  monitor: 'Monitor',
206
+ insights: 'Insights',
207
+ runtime: 'Runtime',
208
+ traffic: 'Traffic',
206
209
  more: 'More',
207
210
  mountPoint: 'MountPoint',
208
211
  name: 'Name',
@@ -1461,5 +1464,21 @@ module.exports = {
1461
1464
  },
1462
1465
  loading: 'Load subscription...',
1463
1466
  loadFailed: 'Failed to load subscription info, please retry!'
1467
+ },
1468
+ insights: {
1469
+ trend: 'Trends',
1470
+ detail: 'Breakdown',
1471
+ traffic: {
1472
+ totalRequests: 'Total Requests',
1473
+ validRequests: 'Success Requests',
1474
+ failedRequests: 'Failed Requests',
1475
+ uniqueVisitors: 'Unique Visitors',
1476
+ uniqueFiles: 'Unique URLs',
1477
+ uniqueReferrers: 'Unique Referrers',
1478
+ uniqueNotFound: 'Unique 404',
1479
+ uniqueStaticFiles: 'Unique Static Files',
1480
+ logSize: 'Log Size',
1481
+ bandwidth: 'Bandwidth'
1482
+ }
1464
1483
  }
1465
1484
  };
package/lib/locales/zh.js CHANGED
@@ -134,7 +134,7 @@ module.exports = {
134
134
  createdAt: '创建时间',
135
135
  createdBy: '创建人',
136
136
  dAddress: '去中心化地址(DID)',
137
- dataStorage: '数据存储',
137
+ dataStorage: '本地数据存储',
138
138
  delConfirm: '删除',
139
139
  delConfirmDescription: '确认删除 {data}?',
140
140
  delete: '删除',
@@ -208,6 +208,9 @@ module.exports = {
208
208
  memory: '内存',
209
209
  meta: '元数据',
210
210
  monitor: '监控',
211
+ insights: '洞见',
212
+ runtime: '运行监控',
213
+ traffic: '流量分析',
211
214
  more: '更多',
212
215
  mountPoint: '挂载点',
213
216
  name: '名称',
@@ -1464,5 +1467,21 @@ module.exports = {
1464
1467
  },
1465
1468
  loadFailed: '加载订阅信息失败,请重试!',
1466
1469
  loading: '加载订阅信息...'
1470
+ },
1471
+ insights: {
1472
+ trend: '趋势',
1473
+ detail: '探究',
1474
+ traffic: {
1475
+ totalRequests: '总请求数',
1476
+ validRequests: '成功请求数',
1477
+ failedRequests: '失败请求数',
1478
+ uniqueVisitors: '访客数量',
1479
+ uniqueFiles: '网址数量',
1480
+ uniqueReferrers: '来源数量',
1481
+ uniqueNotFound: '404 数量',
1482
+ uniqueStaticFiles: '静态资源数量',
1483
+ logSize: '日志大小',
1484
+ bandwidth: '带宽消耗'
1485
+ }
1467
1486
  }
1468
1487
  };
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = DownloadLog;
7
7
  var _react = require("react");
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
- var _dayjs = _interopRequireDefault(require("dayjs"));
9
+ var _dayjs = _interopRequireDefault(require("@abtnode/util/lib/dayjs"));
10
10
  var _Box = _interopRequireDefault(require("@mui/material/Box"));
11
11
  var _Download = _interopRequireDefault(require("@mui/icons-material/Download"));
12
12
  var _FormControl = _interopRequireDefault(require("@mui/material/FormControl"));
@@ -31,7 +31,7 @@ function RelativeTime(_ref) {
31
31
  if (valTime > now) {
32
32
  const time = (0, _prettyMsI18n.default)(valTime - now, prettyOption);
33
33
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, {
34
- title: (0, _util.formatToDatetime)(value),
34
+ title: (0, _util.formatToDatetime)(value, locale),
35
35
  placement: "top-end",
36
36
  enterTouchDelay: 0,
37
37
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
@@ -43,7 +43,7 @@ function RelativeTime(_ref) {
43
43
  }
44
44
  const time = (0, _prettyMsI18n.default)(now - valTime, prettyOption);
45
45
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, {
46
- title: (0, _util.formatToDatetime)(value),
46
+ title: (0, _util.formatToDatetime)(value, locale),
47
47
  placement: "top-end",
48
48
  enterTouchDelay: 0,
49
49
  children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
@@ -10,7 +10,7 @@ var _Chip = _interopRequireDefault(require("@mui/material/Chip"));
10
10
  var _Box = _interopRequireDefault(require("@mui/material/Box"));
11
11
  var _Popover = _interopRequireDefault(require("@mui/material/Popover"));
12
12
  var _CircularProgress = _interopRequireDefault(require("@mui/material/CircularProgress"));
13
- var _dayjs = _interopRequireDefault(require("dayjs"));
13
+ var _dayjs = _interopRequireDefault(require("@abtnode/util/lib/dayjs"));
14
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
15
15
  var _react = require("react");
16
16
  var _useAsyncRetry = _interopRequireDefault(require("react-use/lib/useAsyncRetry"));
@@ -41,7 +41,8 @@ function InviteMember(_ref) {
41
41
  const [loading, setLoading] = (0, _react.useState)(false);
42
42
  const [error, setError] = (0, _react.useState)('');
43
43
  const {
44
- t
44
+ t,
45
+ locale
45
46
  } = (0, _context.useLocaleContext)();
46
47
  const [activeStep, setActiveStep] = (0, _react.useState)(0);
47
48
  const [inviteInfo, setInviteInfo] = (0, _react.useState)('');
@@ -150,7 +151,7 @@ function InviteMember(_ref) {
150
151
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
151
152
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Bold, {
152
153
  children: t('team.member.inviteDialog.createSuccessTip', {
153
- expireDate: (0, _util.formatToDatetime)(inviteInfo.expireDate)
154
+ expireDate: (0, _util.formatToDatetime)(inviteInfo.expireDate, locale)
154
155
  })
155
156
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
156
157
  style: {
@@ -106,7 +106,8 @@ function Member(_ref3) {
106
106
  enablePassportIssuance
107
107
  } = (0, _team.useTeamContext)();
108
108
  const {
109
- t
109
+ t,
110
+ locale
110
111
  } = (0, _context.useLocaleContext)();
111
112
  const pageState = (0, _ahooks.useReactive)({
112
113
  user: null,
@@ -191,13 +192,13 @@ function Member(_ref3) {
191
192
  value: pageState.user.approved ? t('common.yes') : t('common.no')
192
193
  }, {
193
194
  name: t('team.member.lastLogin'),
194
- value: (0, _util.formatToDatetime)(pageState.user.lastLoginAt)
195
+ value: (0, _util.formatToDatetime)(pageState.user.lastLoginAt, locale)
195
196
  }, {
196
197
  name: t('team.member.lastLoginIp'),
197
198
  value: pageState.user.lastLoginIp || ''
198
199
  }, {
199
200
  name: t('common.createdAt'),
200
- value: (0, _util.formatToDatetime)(pageState.user.createdAt)
201
+ value: (0, _util.formatToDatetime)(pageState.user.createdAt, locale)
201
202
  }, {
202
203
  name: t('common.remark'),
203
204
  value: pageState.user.remark || '--'
@@ -33,7 +33,8 @@ function PassportIssuances(_ref) {
33
33
  inService
34
34
  } = (0, _node.useNodeContext)();
35
35
  const {
36
- t
36
+ t,
37
+ locale
37
38
  } = (0, _react.useContext)(_context.LocaleContext);
38
39
  const [delConfirm, setDelConfirm] = (0, _react.useState)(null);
39
40
  const [loading, setLoading] = (0, _react.useState)(false);
@@ -113,7 +114,7 @@ function PassportIssuances(_ref) {
113
114
  style: {
114
115
  color: '#999'
115
116
  },
116
- children: [t('common.expires'), ":\xA0", (0, _util.formatToDatetime)(d.expireDate)]
117
+ children: [t('common.expires'), ":\xA0", (0, _util.formatToDatetime)(d.expireDate, locale)]
117
118
  })]
118
119
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
119
120
  mt: 2,
@@ -44,12 +44,10 @@ function TransferMember(_ref) {
44
44
  } = (0, _react.useContext)(_session.SessionContext);
45
45
  const [loading, setLoading] = (0, _react.useState)(false);
46
46
  const {
47
+ t,
47
48
  locale
48
49
  } = (0, _context.useLocaleContext)();
49
50
  const [error, setError] = (0, _react.useState)('');
50
- const {
51
- t
52
- } = (0, _context.useLocaleContext)();
53
51
  const [openTransferNFTAuth, setOpenTransferNFTAuth] = (0, _react.useState)(false);
54
52
  const [activeStep, setActiveStep] = (0, _react.useState)(0);
55
53
  const [inviteInfo, setInviteInfo] = (0, _react.useState)('');
@@ -203,7 +201,7 @@ function TransferMember(_ref) {
203
201
  return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
204
202
  children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Bold, {
205
203
  children: t('team.transferNode.inviteDialog.createSuccessTip', {
206
- expireDate: (0, _util.formatToDatetime)(inviteInfo.expireDate)
204
+ expireDate: (0, _util.formatToDatetime)(inviteInfo.expireDate, locale)
207
205
  })
208
206
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
209
207
  style: {
package/lib/util/index.js CHANGED
@@ -17,8 +17,6 @@ Object.defineProperty(exports, "formatError", {
17
17
  exports.formatFactoryPrice = formatFactoryPrice;
18
18
  exports.formatRegistryScreenshotPath = exports.formatRegistryLogoPath = exports.formatPerson = exports.formatMountPoint = exports.formatLocale = void 0;
19
19
  exports.formatTime = formatTime;
20
- exports.formatTimeFromNow = formatTimeFromNow;
21
- exports.formatTimestamp = formatTimestamp;
22
20
  exports.formatToDate = formatToDate;
23
21
  exports.formatToDatetime = formatToDatetime;
24
22
  exports.formatUrl = void 0;
@@ -32,9 +30,7 @@ exports.getBlockletUrl = getBlockletUrl;
32
30
  exports.getBlockletUrlParams = void 0;
33
31
  exports.getBlockletUrls = getBlockletUrls;
34
32
  exports.getExplorerLink = getExplorerLink;
35
- exports.getPathPrefix = exports.getIssuePassportLink = exports.getInviteLink = void 0;
36
- exports.getRelativeTime = getRelativeTime;
37
- exports.getTransferAppLink = exports.getSubscriptionURL = exports.getStoreList = exports.getRenewBlockletURL = void 0;
33
+ exports.getTransferAppLink = exports.getSubscriptionURL = exports.getStoreList = exports.getRenewBlockletURL = exports.getPathPrefix = exports.getIssuePassportLink = exports.getInviteLink = void 0;
38
34
  exports.getWebWalletUrl = getWebWalletUrl;
39
35
  exports.isNewStoreUrl = exports.isInstalling = exports.isDownloading = exports.isChrome = exports.isCertificateMatch = exports.isBlockletDev = void 0;
40
36
  exports.isProtectedRole = isProtectedRole;
@@ -46,11 +42,8 @@ exports.shouldCheckDomainStatus = void 0;
46
42
  exports.sleep = sleep;
47
43
  exports.validateDomain = exports.toSlotDomain = exports.stringSortHandlerAsc = exports.sortDomains = void 0;
48
44
  var _constant = require("@abtnode/constant");
49
- var _dayjs = _interopRequireDefault(require("dayjs"));
50
- require("moment/locale/zh-cn");
51
45
  var _querystring = _interopRequireDefault(require("querystring"));
52
46
  var _isUrl = _interopRequireDefault(require("is-url"));
53
- var _moment = _interopRequireDefault(require("moment"));
54
47
  var _humanizeUrl = _interopRequireDefault(require("humanize-url"));
55
48
  var _filesize = _interopRequireDefault(require("filesize"));
56
49
  var _urlJoin = _interopRequireDefault(require("url-join"));
@@ -64,6 +57,7 @@ var _axios = _interopRequireDefault(require("@abtnode/util/lib/axios"));
64
57
  var _normalizePathPrefix = _interopRequireDefault(require("@abtnode/util/lib/normalize-path-prefix"));
65
58
  var _urlPathFriendly = _interopRequireDefault(require("@blocklet/meta/lib/url-path-friendly"));
66
59
  var _formatError = _interopRequireDefault(require("@abtnode/util/lib/format-error"));
60
+ var _dayjs = _interopRequireDefault(require("@abtnode/util/lib/dayjs"));
67
61
  var _window$env;
68
62
  /* eslint-disable max-len */
69
63
  /* eslint-disable implicit-arrow-linebreak */
@@ -229,54 +223,36 @@ function patchJsxToLocale(rawStr) {
229
223
  return item;
230
224
  }).filter(Boolean);
231
225
  }
232
- function formatTimestamp(ts) {
233
- if (!ts) {
234
- return '-';
235
- }
236
- let date;
237
- if (Number(ts).toString() === ts) {
238
- date = new Date();
239
- date.setTime(ts);
240
- } else {
241
- date = new Date(ts);
242
- }
243
- return date.toLocaleString();
244
- }
245
226
  function formatToDate(date) {
227
+ let locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en';
246
228
  if (!date) {
247
229
  return '-';
248
230
  }
249
- return (0, _moment.default)(date).format('ll');
231
+ return (0, _dayjs.default)(date).locale(formatLocale(locale)).format('ll');
250
232
  }
251
233
  function formatToDatetime(date) {
234
+ let locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en';
252
235
  if (!date) {
253
236
  return '-';
254
237
  }
255
- return (0, _moment.default)(date).format('lll');
256
- }
257
- function formatTimeFromNow(date) {
258
- if (!date) {
259
- return '-';
260
- }
261
- const startDate = (0, _moment.default)(date);
262
- const endDate = (0, _moment.default)();
263
- const diffDay = endDate.diff(startDate, 'day');
264
- return diffDay > 3 ? formatToDate(date) : startDate.fromNow();
238
+ return (0, _dayjs.default)(date).locale(formatLocale(locale)).format('lll');
265
239
  }
266
240
  function formatTime(date) {
267
241
  let format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'lll';
242
+ let locale = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'en';
268
243
  if (!date) {
269
244
  return '-';
270
245
  }
271
- return (0, _moment.default)(date).format(format);
246
+ return (0, _dayjs.default)(date).locale(formatLocale(locale)).format(format);
272
247
  }
273
248
  function formatDateTime(date) {
274
- return (0, _dayjs.default)(date).format('YYYY-MM-DD HH:mm');
249
+ let locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en';
250
+ return (0, _dayjs.default)(date).locale(formatLocale(locale)).format('YYYY-MM-DD HH:mm');
275
251
  }
276
252
  const formatLocale = function formatLocale() {
277
253
  let locale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'en';
278
- if (locale === 'zh') {
279
- return 'zh_CN';
254
+ if (locale === 'tw') {
255
+ return 'zh';
280
256
  }
281
257
  return locale;
282
258
  };
@@ -614,10 +590,6 @@ async function getAsset(chainHost, address) {
614
590
  function getAssetExpiration(asset) {
615
591
  return (0, _last.default)((0, _get.default)(asset, 'data.value.expirationDate', []));
616
592
  }
617
- function getRelativeTime(datetime) {
618
- let locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en';
619
- return (0, _moment.default)(datetime).locale(formatLocale(locale)).fromNow().toString();
620
- }
621
593
 
622
594
  /**
623
595
  * 检查url是否 未添加到 store list 中