@abtnode/ux 1.16.29-beta-ec04c755 → 1.16.29-beta-2eaf40bc

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.
@@ -320,6 +320,9 @@ export const StyledBadge = styled(Badge)`
320
320
  }
321
321
  `;
322
322
  export const StyledComponentRow = styled(Box)`
323
+ &:hover {
324
+ background-color: rgba(0, 0, 0, 0.05);
325
+ }
323
326
  .component-header {
324
327
  display: flex;
325
328
  align-items: center;
@@ -1,7 +1,8 @@
1
1
  import Button from '@arcblock/ux/lib/Button';
2
2
  import styled from '@emotion/styled';
3
3
  import PropTypes from 'prop-types';
4
- import React, { Fragment, useMemo, useState } from 'react';
4
+ import trim from 'lodash/trim';
5
+ import React, { Fragment, useCallback, useMemo, useState } from 'react';
5
6
  import AddIcon from '@mui/icons-material/Add';
6
7
  import DiamondIcon from '@mui/icons-material/Diamond';
7
8
  import ExpandLess from '@mui/icons-material/ExpandLess';
@@ -16,13 +17,14 @@ import Tooltip from '@mui/material/Tooltip';
16
17
  import Typography from '@mui/material/Typography';
17
18
  import useTheme from '@mui/material/styles/useTheme';
18
19
  import useMediaQuery from '@mui/material/useMediaQuery';
20
+ import Spinner from '@mui/material/CircularProgress';
19
21
  import { encode as encodeBase32 } from '@abtnode/util/lib/base32';
20
22
  import { isDidDomain } from '@abtnode/util/lib/url-evaluation';
21
23
  import LockIcon from '@arcblock/icons/lib/LockIcon';
22
24
  import Empty from '@arcblock/ux/lib/Empty';
23
25
  import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
24
26
  import { isAccessible, isInProgress } from '@blocklet/meta/lib/util';
25
- import Spinner from '@mui/material/CircularProgress';
27
+ import { CopyButton } from '@arcblock/ux/lib/ClickToCopy';
26
28
  import { useBlockletContext } from '../../contexts/blocklet';
27
29
  import { useNodeContext } from '../../contexts/node';
28
30
  import DidAddress from '../../did-address';
@@ -278,16 +280,30 @@ function DomainLink({
278
280
  ...rest
279
281
  }) {
280
282
  const {
281
- t
283
+ t,
284
+ locale
282
285
  } = useLocaleContext();
283
286
  const {
284
287
  href,
285
- accessibility
288
+ accessibility,
289
+ value: domainValue
286
290
  } = domain;
291
+ const renderCopyButton = useCallback(() => {
292
+ return /*#__PURE__*/_jsx(CopyButton, {
293
+ content: trim(domainValue),
294
+ locale: locale,
295
+ style: {
296
+ marginLeft: '4px',
297
+ color: '#999',
298
+ fontSize: '0.8em',
299
+ verticalAlign: 'bottom'
300
+ }
301
+ });
302
+ }, [domainValue, locale]);
287
303
  if (!accessibility || accessibility.loading) {
288
304
  return /*#__PURE__*/_jsxs(LinkDiv, {
289
305
  ...rest,
290
- children: [children, /*#__PURE__*/_jsx(Tooltip, {
306
+ children: [children, renderCopyButton(), /*#__PURE__*/_jsx(Tooltip, {
291
307
  title: t('blocklet.router.checkUrlAccessible'),
292
308
  placement: "top-end",
293
309
  children: /*#__PURE__*/_jsx("span", {
@@ -300,25 +316,26 @@ function DomainLink({
300
316
  });
301
317
  }
302
318
  if (!accessibility.accessible) {
303
- return /*#__PURE__*/_jsx(LinkDiv, {
319
+ return /*#__PURE__*/_jsxs(LinkDiv, {
304
320
  ...rest,
305
- children: /*#__PURE__*/_jsx(Tooltip, {
321
+ children: [/*#__PURE__*/_jsx(Tooltip, {
306
322
  title: t('blocklet.router.urlInaccessible'),
307
323
  placement: "top-end",
308
324
  children: /*#__PURE__*/_jsx("span", {
309
325
  children: children
310
326
  })
311
- })
327
+ }), renderCopyButton()]
312
328
  });
313
329
  }
314
- return /*#__PURE__*/_jsx(LinkDiv, {
330
+ return /*#__PURE__*/_jsxs(LinkDiv, {
315
331
  ...rest,
316
- children: /*#__PURE__*/_jsx("a", {
332
+ children: [/*#__PURE__*/_jsx(Box, {
333
+ component: "a",
317
334
  href: href,
318
335
  target: "_blank",
319
336
  rel: "noopener noreferrer",
320
337
  children: children
321
- })
338
+ }), renderCopyButton()]
322
339
  });
323
340
  }
324
341
  DomainLink.propTypes = {
@@ -330,6 +347,9 @@ const LinkDiv = styled.span`
330
347
  & > * {
331
348
  color: #222;
332
349
  font-size: 18px;
350
+ }
351
+
352
+ & > * {
333
353
  word-break: break-all;
334
354
  }
335
355
 
@@ -409,6 +429,7 @@ function InnerAddDomain({
409
429
  onMouseEnter: handlePopoverOpen,
410
430
  onMouseLeave: handlePopoverClose,
411
431
  style: {
432
+ marginTop: '0.2em',
412
433
  cursor: 'pointer',
413
434
  fill: theme.palette.primary.main
414
435
  }
@@ -24,6 +24,7 @@ import ClickToCopy from '../../../click-to-copy';
24
24
  import { formatError } from '../../../util';
25
25
  import { useNodeContext } from '../../../contexts/node';
26
26
  import ShortenLabel from '../../component/shorten-label';
27
+ import UploadedToast from './uploaded-toast';
27
28
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
28
29
  const serverEndpoint = window.env?.serverEndpoint;
29
30
  function Header({
@@ -70,7 +71,7 @@ function Header({
70
71
  }, '*');
71
72
  getRelease();
72
73
  };
73
- const onRelease = async status => {
74
+ const _onRelease = async status => {
74
75
  const errors = validateParams({
75
76
  params,
76
77
  hasSelectedResources,
@@ -123,7 +124,6 @@ function Header({
123
124
  });
124
125
  return;
125
126
  }
126
- setLoading(true);
127
127
  if (initLogoUrl) {
128
128
  try {
129
129
  const filename = await uploadImageToProject({
@@ -137,7 +137,6 @@ function Header({
137
137
  });
138
138
  } catch (err) {
139
139
  Toast.error(err.message);
140
- setLoading(false);
141
140
  return;
142
141
  }
143
142
  }
@@ -164,7 +163,6 @@ function Header({
164
163
  });
165
164
  } catch (err) {
166
165
  Toast.error(err?.response?.data?.error?.message || err.message);
167
- setLoading(false);
168
166
  setParamsErrTip({
169
167
  blockletResource: 'Invalid save the resource'
170
168
  });
@@ -178,10 +176,8 @@ function Header({
178
176
  _params.blockletIntroduction = (_params.blockletIntroduction || '').trim();
179
177
  _params.note = (_params.note || '').trim();
180
178
  _params.blockletComponents = (_params?.blockletComponents || []).filter(x => x.included).map(x => pick(x, ['did', 'required'])).map(JSON.stringify);
181
- setLoading(true);
182
- let newReleased = releaseId;
183
179
  try {
184
- const res = await api.createRelease({
180
+ await api.createRelease({
185
181
  input: {
186
182
  ..._params,
187
183
  did: blocklet.meta.did,
@@ -189,8 +185,6 @@ function Header({
189
185
  releaseId: releaseUsedLast ? '' : releaseId,
190
186
  status
191
187
  }
192
- }).finally(() => {
193
- setLoading(false);
194
188
  });
195
189
  if (status === 'draft') {
196
190
  Toast.success(t('blocklet.publish.saveDraftSuccess'));
@@ -212,9 +206,6 @@ function Header({
212
206
  blockletIntroduction: '',
213
207
  note: ''
214
208
  });
215
- if (mode === 'create' || mode === 'new-release') {
216
- newReleased = res?.release?.id;
217
- }
218
209
  } catch (err) {
219
210
  const msg = formatError(err);
220
211
  Toast.error(msg);
@@ -224,41 +215,52 @@ function Header({
224
215
  });
225
216
  }
226
217
  }
227
- for (const store of params.connectedStores) {
228
- try {
229
- // eslint-disable-next-line no-await-in-loop
230
- const res = await api.publishToStore({
231
- input: {
232
- did: blocklet.meta.did,
233
- storeId: store.storeId,
218
+ const lastProject = await api.getProject({
219
+ input: {
220
+ did: blocklet.meta.did,
221
+ projectId
222
+ }
223
+ });
224
+ const newReleased = lastProject.project.lastReleaseId;
225
+ await pAll(lastProject.project.connectedStores.map(store => {
226
+ return async () => {
227
+ try {
228
+ // eslint-disable-next-line no-await-in-loop
229
+ const res = await api.publishToStore({
230
+ input: {
231
+ did: blocklet.meta.did,
232
+ storeId: store.storeId,
233
+ storeName: store.storeName,
234
+ projectId,
235
+ releaseId: newReleased,
236
+ type: releaseType
237
+ }
238
+ });
239
+ Toast.success( /*#__PURE__*/_jsx(UploadedToast, {
234
240
  storeName: store.storeName,
235
- projectId,
236
- releaseId: newReleased,
237
- type: releaseType
238
- }
239
- });
240
- if (res.url === 'uploaded') {
241
- Toast.success(t('blocklet.publish.uploadToStoreSuccess', {
242
- name: store.storeName
243
- }));
244
- } else if (res.url === 'published') {
245
- Toast.success(t('blocklet.publish.publishToStoreSuccess', {
246
- name: store.storeName
247
- }));
241
+ storeUrl: store.storeUrl,
242
+ developerDid: store.developerDid,
243
+ published: res.url === 'published'
244
+ }), {
245
+ duration: 10000
246
+ });
247
+ } catch (err) {
248
+ Toast.error(formatError(err));
248
249
  }
249
- } catch (err) {
250
- Toast.error(formatError(err));
251
- }
252
- }
250
+ };
251
+ }), {
252
+ concurrency: 4
253
+ });
253
254
  onPublish?.();
254
- if (mode === 'create' || mode === 'new-release') {
255
- navigate(`../${projectId}/view/${newReleased}`, {
256
- replace: true
257
- });
258
- } else {
259
- getRelease();
260
- }
261
- setLoading(false);
255
+ navigate(`../${projectId}/view/${newReleased}`, {
256
+ replace: true
257
+ });
258
+ };
259
+ const onRelease = status => {
260
+ setLoading(true);
261
+ return _onRelease(status).finally(() => {
262
+ setLoading(false);
263
+ });
262
264
  };
263
265
  const onOpenConnectStore = async param => {
264
266
  await waitGetConnectedStore(api, param);
@@ -405,12 +407,19 @@ function Header({
405
407
  children: t('common.download')
406
408
  })
407
409
  }), /*#__PURE__*/_jsxs(Button, {
410
+ disabled: loading,
408
411
  variant: "contained",
409
412
  onClick: () => setShowStoreDialog(true),
410
- children: [/*#__PURE__*/_jsx(CloudUploadRoundedIcon, {
411
- style: {
413
+ children: [loading ? /*#__PURE__*/_jsx(Spinner, {
414
+ size: 14,
415
+ sx: {
416
+ mr: 1
417
+ },
418
+ color: "inherit"
419
+ }) : /*#__PURE__*/_jsx(CloudUploadRoundedIcon, {
420
+ sx: {
412
421
  fontSize: '1.3em',
413
- marginRight: 4
422
+ mr: 1
414
423
  }
415
424
  }), isMobile ? t('common.upload') : t('blocklet.publish.connectOrUpload')]
416
425
  })]
@@ -5,6 +5,7 @@ import Tabs from '@arcblock/ux/lib/Tabs';
5
5
  import Toast from '@arcblock/ux/lib/Toast';
6
6
  import styled from '@emotion/styled';
7
7
  import { Box, FormControlLabel, Radio, RadioGroup, Tooltip, Typography, useMediaQuery } from '@mui/material';
8
+ import { useMemoizedFn } from 'ahooks';
8
9
  import pick from 'lodash/pick';
9
10
  import PropTypes from 'prop-types';
10
11
  import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
@@ -22,9 +23,9 @@ import Branding from './branding';
22
23
  import Header from './header';
23
24
  import Introduction from './introduction';
24
25
  import ReleaseStepper from './release-stepper';
26
+ import ResourceUpload from './resource-upload';
25
27
  import StopBox from './stop-box';
26
28
  import Version from './version';
27
- import ResourceUpload from './resource-upload';
28
29
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
29
30
  const addComponentTabs = ({
30
31
  tabs,
@@ -171,6 +172,29 @@ export default function CreateRelease({
171
172
  });
172
173
  return result;
173
174
  }, [resourceComponentsMap]);
175
+ const updateParamsByUrl = useMemoizedFn(() => {
176
+ if (!initUrl) {
177
+ return;
178
+ }
179
+ setInitLogoUrl(initUrl.searchParams.get('logo'));
180
+ setParams(old => {
181
+ return {
182
+ ...old,
183
+ blockletTitle: old?.blockletTitle || initUrl.searchParams.get('title'),
184
+ blockletDescription: old?.blockletDescription || initUrl.searchParams.get('description'),
185
+ blockletIntroduction: old?.blockletIntroduction || initUrl.searchParams.get('introduction') || initUrl.searchParams.get('description'),
186
+ blockletComponents: old?.blockletComponents || JSON.parse(initUrl.searchParams.get('components') || '[]'),
187
+ note: old?.note || initUrl.searchParams.get('note') || 'No note'
188
+ };
189
+ });
190
+ const resourcesString = initUrl.searchParams.get('resources');
191
+ try {
192
+ const resources = JSON.parse(resourcesString);
193
+ setInitialResources(resources);
194
+ } catch (_) {
195
+ //
196
+ }
197
+ });
174
198
  const getRelease = async () => {
175
199
  if (!releaseId) {
176
200
  return;
@@ -230,6 +254,9 @@ export default function CreateRelease({
230
254
  }
231
255
  const theParams = pickParams(data, blocklet);
232
256
  setParams(theParams);
257
+ if (!data.lastReleaseId) {
258
+ updateParamsByUrl();
259
+ }
233
260
  } catch (err) {
234
261
  setLoading(false);
235
262
  Toast.error(formatError(err));
@@ -262,23 +289,9 @@ export default function CreateRelease({
262
289
  }, [getData]);
263
290
  useEffect(() => {
264
291
  if (projectId === UNOWNED_DID && (mode === 'create' || mode === 'new-release') && initUrl) {
265
- setInitLogoUrl(initUrl.searchParams.get('logo'));
266
- setParams({
267
- blockletTitle: initUrl.searchParams.get('title'),
268
- blockletDescription: initUrl.searchParams.get('description'),
269
- blockletIntroduction: initUrl.searchParams.get('introduction') || initUrl.searchParams.get('description'),
270
- blockletComponents: JSON.parse(initUrl.searchParams.get('components') || '[]'),
271
- note: initUrl.searchParams.get('note') || 'No note'
272
- });
273
- const resourcesString = initUrl.searchParams.get('resources');
274
- try {
275
- const resources = JSON.parse(resourcesString);
276
- setInitialResources(resources);
277
- } catch (_) {
278
- //
279
- }
292
+ updateParamsByUrl();
280
293
  }
281
- }, [setParams, projectId, initUrl, mode]);
294
+ }, [projectId, initUrl, mode, updateParamsByUrl]);
282
295
  const hasSelectedResources = useMemo(() => {
283
296
  return !!Object.keys(selectedResourceIds).find(key => {
284
297
  if (selectedResourceIds[key].length) {
@@ -0,0 +1,51 @@
1
+ import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
2
+ import { Box, Button, Typography } from '@mui/material';
3
+ import PropTypes from 'prop-types';
4
+ import { joinURL } from 'ufo';
5
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
+ function UploadedToast({
7
+ storeUrl,
8
+ storeName,
9
+ developerDid,
10
+ published
11
+ }) {
12
+ const {
13
+ t
14
+ } = useLocaleContext();
15
+ const handleOpenUrl = () => {
16
+ if (developerDid) {
17
+ const didConnect = Buffer.from(JSON.stringify({
18
+ forceConnected: developerDid
19
+ }), 'utf8').toString('base64');
20
+ window.open(`${joinURL(storeUrl, 'developer/blocklets')}?__did-connect__=${didConnect}`);
21
+ } else {
22
+ window.open(`${joinURL(storeUrl, 'developer/blocklets')}`);
23
+ }
24
+ };
25
+ return /*#__PURE__*/_jsxs(Box, {
26
+ children: [/*#__PURE__*/_jsx(Typography, {
27
+ variant: "subtitle2",
28
+ children: t(published ? 'blocklet.publish.publishToStoreSuccess' : 'blocklet.publish.uploadToStoreSuccess', {
29
+ name: storeName
30
+ })
31
+ }), /*#__PURE__*/_jsx(Button, {
32
+ size: "small",
33
+ sx: {
34
+ mt: 1
35
+ },
36
+ onClick: handleOpenUrl,
37
+ variant: "contained",
38
+ color: "success",
39
+ children: t('common.visitTarget', {
40
+ name: storeName
41
+ })
42
+ })]
43
+ });
44
+ }
45
+ UploadedToast.propTypes = {
46
+ storeName: PropTypes.string.isRequired,
47
+ storeUrl: PropTypes.string.isRequired,
48
+ developerDid: PropTypes.string.isRequired,
49
+ published: PropTypes.bool.isRequired
50
+ };
51
+ export default UploadedToast;
package/lib/locales/ar.js CHANGED
@@ -349,7 +349,8 @@ export default {
349
349
  reconnect: 'إعادة الاتصال',
350
350
  change: 'تغيير',
351
351
  disconnect: 'توقف',
352
- sourceApp: 'ينتمي إلى التطبيق'
352
+ sourceApp: 'ينتمي إلى التطبيق',
353
+ visitTarget: 'زيارة {name}'
353
354
  },
354
355
  blocklet: {
355
356
  external: 'خارجي',
@@ -701,7 +702,7 @@ export default {
701
702
  delete: 'احذف {name}',
702
703
  copyInstallUrl: 'انسخ عنوان URL للتثبيت',
703
704
  install: 'تثبيت {name}',
704
- publishToStoreSuccess: 'تم نشر البلوكليت بنجاح إلى {name}',
705
+ publishToStoreSuccess: 'تم نشر البلوكليت بنجاح على المتجر',
705
706
  connectStoreSuccess: 'تم الاتصال بمتجر البلوكليت بنجاح',
706
707
  uploadToStoreSuccess: 'تم تحميل بلوكليت بنجاح في المتجر ، تحتاج إلى نشره في المتجر',
707
708
  viewLastRelease: 'عرض آخر إصدار',
package/lib/locales/de.js CHANGED
@@ -349,7 +349,8 @@ export default {
349
349
  reconnect: 'Verbinden wiederherstellen',
350
350
  change: 'Ändern',
351
351
  disconnect: 'Verbindung trennen',
352
- sourceApp: 'Zur App gehörend'
352
+ sourceApp: 'Zur App gehörend',
353
+ visitTarget: 'Besuchen Sie {name}'
353
354
  },
354
355
  blocklet: {
355
356
  external: 'Extern',
@@ -701,7 +702,7 @@ export default {
701
702
  delete: 'Lösche {name}',
702
703
  copyInstallUrl: 'Kopiere Installations-URL',
703
704
  install: 'Installiere {name}',
704
- publishToStoreSuccess: 'Blocklet erfolgreich veröffentlicht an {name}',
705
+ publishToStoreSuccess: 'Blocklet erfolgreich im Store veröffentlicht',
705
706
  connectStoreSuccess: 'Blocklet Store erfolgreich verbunden',
706
707
  uploadToStoreSuccess: 'Blocklet erfolgreich im Store hochgeladen, du musst es im Store veröffentlichen',
707
708
  viewLastRelease: 'Letzte Version anzeigen',
package/lib/locales/en.js CHANGED
@@ -243,6 +243,7 @@ export default {
243
243
  notification: 'Notification',
244
244
  open: 'Open',
245
245
  visitStore: 'Visit Store',
246
+ visitTarget: 'Visit {name}',
246
247
  management: 'Management',
247
248
  os: 'Operating System',
248
249
  overview: 'Overview',
@@ -738,8 +739,8 @@ export default {
738
739
  noDescription: 'Blocklet Description is required',
739
740
  noNote: 'Release Note is required'
740
741
  },
741
- uploadToStoreSuccess: 'Blocklet upload to {name} successfully, you need publish it in the Store',
742
- publishToStoreSuccess: 'Blocklet published to {name} successfully',
742
+ uploadToStoreSuccess: 'Blocklet upload to Store successfully, you need publish it in the Store',
743
+ publishToStoreSuccess: 'Blocklet published to Store successfully',
743
744
  connectStoreSuccess: 'Blocklet Store connected successfully'
744
745
  }
745
746
  },
package/lib/locales/es.js CHANGED
@@ -349,7 +349,8 @@ export default {
349
349
  reconnect: 'Reconecta',
350
350
  change: 'Cambiar',
351
351
  disconnect: 'Desconectar',
352
- sourceApp: 'Pertenece a la aplicación'
352
+ sourceApp: 'Pertenece a la aplicación',
353
+ visitTarget: 'Visita {name}'
353
354
  },
354
355
  blocklet: {
355
356
  external: 'Externo',
@@ -701,7 +702,7 @@ export default {
701
702
  delete: 'Eliminar {name}',
702
703
  copyInstallUrl: 'Copiar URL de instalación',
703
704
  install: 'Instalar {name}',
704
- publishToStoreSuccess: 'Bloque publicado en {name} exitosamente',
705
+ publishToStoreSuccess: 'Blocklet publicado en la tienda con éxito',
705
706
  connectStoreSuccess: 'La tienda de Blocklet se conectó correctamente',
706
707
  uploadToStoreSuccess: 'Bloque de carga a la tienda exitosamente, necesitas publicarlo en la tienda',
707
708
  viewLastRelease: 'Ver última versión',
package/lib/locales/fr.js CHANGED
@@ -349,7 +349,8 @@ export default {
349
349
  reconnect: 'Reconnecter',
350
350
  change: 'Changer',
351
351
  disconnect: 'Déconnecter',
352
- sourceApp: "Appartient à l'application"
352
+ sourceApp: "Appartient à l'application",
353
+ visitTarget: 'Visitez {name}'
353
354
  },
354
355
  blocklet: {
355
356
  external: 'Externe',
@@ -701,7 +702,7 @@ export default {
701
702
  delete: 'Supprimez {name}',
702
703
  copyInstallUrl: "Copier l'URL d'installation",
703
704
  install: 'Installer {name}',
704
- publishToStoreSuccess: 'Blocklet publié avec succès sur {name}',
705
+ publishToStoreSuccess: 'Blocklet publié avec succès sur le Store',
705
706
  connectStoreSuccess: 'Connexion réussie au Blocklet Store',
706
707
  uploadToStoreSuccess: 'Blocklet téléchargé avec succès dans le Store, vous devez le publier dans le Store',
707
708
  viewLastRelease: 'Voir la dernière version',
package/lib/locales/hi.js CHANGED
@@ -349,7 +349,8 @@ export default {
349
349
  reconnect: 'पुनः कनेक्ट करें',
350
350
  change: 'परिवर्तन',
351
351
  disconnect: 'डिस्कनेक्ट करें',
352
- sourceApp: 'ऐप से संबद्ध'
352
+ sourceApp: 'ऐप से संबद्ध',
353
+ visitTarget: '{name} का दौरा करें'
353
354
  },
354
355
  blocklet: {
355
356
  external: 'बाहरी',
@@ -701,7 +702,7 @@ export default {
701
702
  delete: '{नाम} को हटाएं',
702
703
  copyInstallUrl: 'संपादित स्थापित URL की प्रतिलिपि',
703
704
  install: '{name} स्थापित करें',
704
- publishToStoreSuccess: '{name} में ब्लॉकलेट सफलतापूर्वक प्रकाशित किया गया',
705
+ publishToStoreSuccess: 'ब्लॉकलेट सफलतापूर्वक स्टोर पर प्रकाशित किया गया',
705
706
  connectStoreSuccess: 'ब्लॉकलेट स्टोर सफलतापूर्वक कनेक्ट हो गया',
706
707
  uploadToStoreSuccess: 'ब्लॉकलेट को स्टोर में सफलतापूर्वक अपलोड किया गया है, आपको इसे स्टोर में प्रकाशित करने की आवश्यकता है',
707
708
  viewLastRelease: 'अंतिम रिलीज़ देखें',
Binary file
package/lib/locales/id.js CHANGED
@@ -349,7 +349,8 @@ export default {
349
349
  reconnect: 'Menghubungkan kembali',
350
350
  change: 'Perubahan',
351
351
  disconnect: 'Putuskan Sambungan',
352
- sourceApp: 'Milik aplikasi'
352
+ sourceApp: 'Milik aplikasi',
353
+ visitTarget: 'Kunjungi {name}'
353
354
  },
354
355
  blocklet: {
355
356
  external: 'Eksternal',
@@ -701,7 +702,7 @@ export default {
701
702
  delete: 'Hapus {name}',
702
703
  copyInstallUrl: 'Salin URL Instalasi',
703
704
  install: 'Pasang {name}',
704
- publishToStoreSuccess: 'Blocklet berhasil diterbitkan ke {name}',
705
+ publishToStoreSuccess: 'Blocklet berhasil diterbitkan ke Toko',
705
706
  connectStoreSuccess: 'Penyimpanan Blocklet berhasil terhubung',
706
707
  uploadToStoreSuccess: 'Blocklet berhasil diunggah ke Store, Anda perlu mempublikasikannya di Store',
707
708
  viewLastRelease: 'Tampilkan rilis terakhir',
package/lib/locales/ja.js CHANGED
@@ -349,7 +349,8 @@ export default {
349
349
  reconnect: '再接続する',
350
350
  change: '変更',
351
351
  disconnect: '接続を切る',
352
- sourceApp: 'このアプリに所属'
352
+ sourceApp: 'このアプリに所属',
353
+ visitTarget: '訪問{name}'
353
354
  },
354
355
  blocklet: {
355
356
  external: '外部',
@@ -701,7 +702,7 @@ export default {
701
702
  delete: '削除 {name}',
702
703
  copyInstallUrl: 'インストールURLをコピーする',
703
704
  install: '{name}をインストールする',
704
- publishToStoreSuccess: '{name} にブロックが正常に公開されました',
705
+ publishToStoreSuccess: 'Blockletがストアに正常に公開されました',
705
706
  connectStoreSuccess: 'Blockletストアが正常に接続されました',
706
707
  uploadToStoreSuccess: 'ブロックレットがストアに正常にアップロードされました。ストアで公開する必要があります',
707
708
  viewLastRelease: '最新リリースを表示する',
package/lib/locales/ko.js CHANGED
@@ -349,7 +349,8 @@ export default {
349
349
  reconnect: '재연결',
350
350
  change: '변경',
351
351
  disconnect: '연결 끊기',
352
- sourceApp: '앱에 속함'
352
+ sourceApp: '앱에 속함',
353
+ visitTarget: '{name}를 방문하다'
353
354
  },
354
355
  blocklet: {
355
356
  external: '외부의',
@@ -701,7 +702,7 @@ export default {
701
702
  delete: '{name} 삭제',
702
703
  copyInstallUrl: '설치 URL 복사하기',
703
704
  install: '{name}을(를) 설치하세요',
704
- publishToStoreSuccess: '{name}에 성공적으로 블록릿이 발행되었습니다',
705
+ publishToStoreSuccess: 'Store에 성공적으로 발행된 Blocklet',
705
706
  connectStoreSuccess: '블록렛 스토어가 성공적으로 연결되었습니다',
706
707
  uploadToStoreSuccess: '블록렛이 성공적으로 스토어에 업로드되었습니다. 스토어에서 게시해야 합니다',
707
708
  viewLastRelease: '최신 릴리스 보기',
package/lib/locales/pt.js CHANGED
@@ -349,7 +349,8 @@ export default {
349
349
  reconnect: 'Reconectar',
350
350
  change: 'Mudança',
351
351
  disconnect: 'Desconectar',
352
- sourceApp: 'Pertence ao app'
352
+ sourceApp: 'Pertence ao app',
353
+ visitTarget: 'Visite {name}'
353
354
  },
354
355
  blocklet: {
355
356
  external: 'Externo',
@@ -701,7 +702,7 @@ export default {
701
702
  delete: 'Excluir {name}',
702
703
  copyInstallUrl: 'Copiar URL de instalação',
703
704
  install: 'Instale {name}',
704
- publishToStoreSuccess: 'Blocklet publicado para {name} com sucesso',
705
+ publishToStoreSuccess: 'Blocklet publicado na Loja com sucesso',
705
706
  connectStoreSuccess: 'Loja de Blocos conectada com sucesso',
706
707
  uploadToStoreSuccess: 'Blocklet enviado para a Store com sucesso, você precisa publicá-lo na Store',
707
708
  viewLastRelease: 'Visualizar última versão',
package/lib/locales/ru.js CHANGED
@@ -349,7 +349,8 @@ export default {
349
349
  reconnect: 'Восстановить соединение',
350
350
  change: 'Изменение',
351
351
  disconnect: 'Отсоединить',
352
- sourceApp: 'Принадлежит приложению'
352
+ sourceApp: 'Принадлежит приложению',
353
+ visitTarget: 'Посетите {name}'
353
354
  },
354
355
  blocklet: {
355
356
  external: 'Внешний',
@@ -701,7 +702,7 @@ export default {
701
702
  delete: 'Удалить {name}',
702
703
  copyInstallUrl: 'Скопируйте URL для установки',
703
704
  install: 'Установить {name}',
704
- publishToStoreSuccess: 'Блоклет успешно опубликован на {name}',
705
+ publishToStoreSuccess: 'Блоклет успешно опубликован в магазине',
705
706
  connectStoreSuccess: 'Успешное подключение к Blocklet Store',
706
707
  uploadToStoreSuccess: 'Блоклет успешно загружен в магазин, вам нужно опубликовать его в магазине',
707
708
  viewLastRelease: 'Просмотр последнего релиза',
package/lib/locales/th.js CHANGED
@@ -349,7 +349,8 @@ export default {
349
349
  reconnect: 'เชื่อมต่อใหม่',
350
350
  change: 'เปลี่ยนแปลง',
351
351
  disconnect: 'ตัดการเชื่อมต่อ',
352
- sourceApp: 'เป็นของแอป'
352
+ sourceApp: 'เป็นของแอป',
353
+ visitTarget: 'เข้าชม {name}'
353
354
  },
354
355
  blocklet: {
355
356
  external: 'ภายนอก',
@@ -701,7 +702,7 @@ export default {
701
702
  delete: 'ลบ {name}',
702
703
  copyInstallUrl: 'คัดลอก URL การติดตั้ง',
703
704
  install: 'ติดตั้ง {name}',
704
- publishToStoreSuccess: 'Blocklet ได้เผยแพร่ไปยัง {name} สำเร็จ',
705
+ publishToStoreSuccess: 'Blocklet ได้รับการเผยแพร่ในร้านค้าเรียบร้อยแล้ว',
705
706
  connectStoreSuccess: 'เชื่อมต่อ Blocklet Store สำเร็จ',
706
707
  uploadToStoreSuccess: 'อัพโหลด Blocklet เข้าสู่ Store สำเร็จแล้ว คุณต้องเผยแพร่ในร้านค้า',
707
708
  viewLastRelease: 'ดูรายการอัพเดตล่าสุด',
package/lib/locales/vi.js CHANGED
@@ -349,7 +349,8 @@ export default {
349
349
  reconnect: 'Kết nối lại',
350
350
  change: 'Thay đổi',
351
351
  disconnect: 'Ngắt kết nối',
352
- sourceApp: 'Thuộc về ứng dụng'
352
+ sourceApp: 'Thuộc về ứng dụng',
353
+ visitTarget: 'Ghé thăm {name}'
353
354
  },
354
355
  blocklet: {
355
356
  external: 'Bên ngoài',
@@ -701,7 +702,7 @@ export default {
701
702
  delete: 'Xóa {name}',
702
703
  copyInstallUrl: 'Sao chép URL cài đặt',
703
704
  install: 'Cài đặt {name}',
704
- publishToStoreSuccess: 'Blocklet đã được xuất bản thành công cho {name}',
705
+ publishToStoreSuccess: 'Blocklet đã được xuất bản lên Cửa hàng thành công',
705
706
  connectStoreSuccess: 'Kết nối Blocklet Store thành công',
706
707
  uploadToStoreSuccess: 'Blocklet đã tải lên Store thành công, bạn cần phải xuất bản nó trong Store',
707
708
  viewLastRelease: 'Xem phiên bản phát hành gần đây nhất',
@@ -349,7 +349,8 @@ export default {
349
349
  reconnect: '重新連接',
350
350
  change: '更改',
351
351
  disconnect: '斷開連線',
352
- sourceApp: '屬於此 App'
352
+ sourceApp: '屬於此 App',
353
+ visitTarget: '拜訪{name}'
353
354
  },
354
355
  blocklet: {
355
356
  external: '外部的',
@@ -701,7 +702,7 @@ export default {
701
702
  delete: '刪除 {name}',
702
703
  copyInstallUrl: '複製安裝連結',
703
704
  install: '安裝{name}',
704
- publishToStoreSuccess: '{name} 成功發佈區塊',
705
+ publishToStoreSuccess: '成功發佈到商店的Blocklet',
705
706
  connectStoreSuccess: 'Store 連線成功',
706
707
  uploadToStoreSuccess: 'Blocklet 成功上傳至 Store,請在 Store 中發布',
707
708
  viewLastRelease: '查看最新版本',
package/lib/locales/zh.js CHANGED
@@ -349,7 +349,8 @@ export default {
349
349
  reconnect: '重新连接',
350
350
  change: '更改',
351
351
  sourceApp: '所属应用',
352
- disconnect: '断开连接'
352
+ disconnect: '断开连接',
353
+ visitTarget: '访问{name}'
353
354
  },
354
355
  blocklet: {
355
356
  external: '外部',
@@ -703,7 +704,7 @@ export default {
703
704
  delete: '删除 {name}',
704
705
  copyInstallUrl: '复制安装链接',
705
706
  install: '安装 {name}',
706
- publishToStoreSuccess: '{name} 成功发布区块',
707
+ publishToStoreSuccess: '成功发布到商店的Blocklet',
707
708
  connectStoreSuccess: 'Blocklet 成功连接 Store',
708
709
  uploadToStoreSuccess: 'Blocklet 成功上传至 Store,请在 Store 中发布',
709
710
  viewLastRelease: '查看最新版本',
package/lib/store/item.js CHANGED
@@ -16,6 +16,7 @@ import ConnectActions from './connect-actions';
16
16
  import DidAddress from '../did-address';
17
17
  import usePromiseWindowOpen from '../hooks/use-promise-window-open';
18
18
  import DeveloperAvatar from './developer-avatar';
19
+ import UploadedToast from '../blocklet/publish/create-release/uploaded-toast';
19
20
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
20
21
  export const BEHAVIOR = {
21
22
  CONNECT: 'connect',
@@ -190,15 +191,14 @@ export default function StoreItem({
190
191
  type: releaseType
191
192
  }
192
193
  }).then(res => {
193
- if (res.url === 'uploaded') {
194
- Toast.success(t('blocklet.publish.uploadToStoreSuccess', {
195
- name: store.name
196
- }));
197
- } else if (res.url === 'published') {
198
- Toast.success(t('blocklet.publish.publishToStoreSuccess', {
199
- name: store.name
200
- }));
201
- }
194
+ Toast.success( /*#__PURE__*/_jsx(UploadedToast, {
195
+ storeName: connectedStore.storeName,
196
+ storeUrl: connectedStore.storeUrl,
197
+ developerDid: connectedStore.developerDid,
198
+ published: res.url === 'published'
199
+ }), {
200
+ duration: 10000
201
+ });
202
202
  onPublish?.(null);
203
203
  }).catch(err => {
204
204
  Toast.error(formatError(err));
@@ -390,6 +390,7 @@ StoreItem.propTypes = {
390
390
  teamDid: PropTypes.string.isRequired,
391
391
  published: PropTypes.bool,
392
392
  connectedStore: PropTypes.shape({
393
+ storeName: PropTypes.string,
393
394
  storeId: PropTypes.string,
394
395
  storeUrl: PropTypes.string,
395
396
  developerDid: PropTypes.string,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abtnode/ux",
3
- "version": "1.16.29-beta-ec04c755",
3
+ "version": "1.16.29-beta-2eaf40bc",
4
4
  "description": "UX components shared across abtnode packages",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -25,24 +25,24 @@
25
25
  "author": "linchen <linchen1987@foxmail.com> (http://github.com/linchen1987)",
26
26
  "license": "Apache-2.0",
27
27
  "dependencies": {
28
- "@abtnode/auth": "1.16.29-beta-ec04c755",
29
- "@abtnode/constant": "1.16.29-beta-ec04c755",
30
- "@abtnode/util": "1.16.29-beta-ec04c755",
28
+ "@abtnode/auth": "1.16.29-beta-2eaf40bc",
29
+ "@abtnode/constant": "1.16.29-beta-2eaf40bc",
30
+ "@abtnode/util": "1.16.29-beta-2eaf40bc",
31
31
  "@ahooksjs/use-url-state": "^3.5.1",
32
32
  "@arcblock/did": "^1.18.126",
33
- "@arcblock/did-connect": "^2.10.3",
33
+ "@arcblock/did-connect": "^2.10.5",
34
34
  "@arcblock/did-motif": "^1.1.13",
35
- "@arcblock/icons": "^2.10.3",
36
- "@arcblock/nft-display": "2.10.3",
37
- "@arcblock/react-hooks": "^2.10.3",
38
- "@arcblock/terminal": "^2.10.3",
39
- "@arcblock/ux": "^2.10.3",
40
- "@blocklet/constant": "1.16.29-beta-ec04c755",
41
- "@blocklet/js-sdk": "1.16.29-beta-ec04c755",
42
- "@blocklet/launcher-layout": "2.3.28",
43
- "@blocklet/list": "^0.13.8",
44
- "@blocklet/meta": "1.16.29-beta-ec04c755",
45
- "@blocklet/ui-react": "^2.10.3",
35
+ "@arcblock/icons": "^2.10.5",
36
+ "@arcblock/nft-display": "2.10.5",
37
+ "@arcblock/react-hooks": "^2.10.5",
38
+ "@arcblock/terminal": "^2.10.5",
39
+ "@arcblock/ux": "^2.10.5",
40
+ "@blocklet/constant": "1.16.29-beta-2eaf40bc",
41
+ "@blocklet/js-sdk": "1.16.29-beta-2eaf40bc",
42
+ "@blocklet/launcher-layout": "2.3.30",
43
+ "@blocklet/list": "^0.13.9",
44
+ "@blocklet/meta": "1.16.29-beta-2eaf40bc",
45
+ "@blocklet/ui-react": "^2.10.5",
46
46
  "@blocklet/uploader": "0.1.19",
47
47
  "@emotion/react": "^11.10.4",
48
48
  "@emotion/styled": "^11.10.4",
@@ -108,5 +108,5 @@
108
108
  "jest": "^29.7.0",
109
109
  "jest-environment-jsdom": "^29.7.0"
110
110
  },
111
- "gitHead": "8f3fcaf73830289f02dd86e8d22a2c86a79a34d8"
111
+ "gitHead": "d723d07ca8914468fc1b53af23aa53dc343e0a8c"
112
112
  }