@abtnode/ux 1.16.26-beta-346cba92 → 1.16.26-beta-818ea1c5
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/es/blocklet/actions.js +43 -23
- package/es/blocklet/publish/project-list.js +56 -18
- package/es/blocklet/storage/action.js +8 -4
- package/es/blocklet/storage/item.js +2 -1
- package/es/contexts/blocklet-storage.js +0 -4
- package/es/locales/ar.js +8 -3
- package/es/locales/de.js +8 -3
- package/es/locales/en.js +9 -4
- package/es/locales/es.js +9 -4
- package/es/locales/fr.js +9 -4
- package/es/locales/hi.js +9 -4
- package/es/locales/i18n.db +0 -0
- package/es/locales/id.js +8 -3
- package/es/locales/ja.js +9 -4
- package/es/locales/ko.js +9 -4
- package/es/locales/pt.js +8 -3
- package/es/locales/ru.js +7 -2
- package/es/locales/th.js +7 -2
- package/es/locales/vi.js +8 -3
- package/es/locales/zh-tw.js +7 -2
- package/es/locales/zh.js +7 -2
- package/lib/blocklet/actions.js +47 -26
- package/lib/blocklet/publish/project-list.js +56 -18
- package/lib/blocklet/storage/action.js +10 -6
- package/lib/blocklet/storage/item.js +2 -1
- package/lib/contexts/blocklet-storage.js +0 -4
- package/lib/locales/ar.js +8 -3
- package/lib/locales/de.js +8 -3
- package/lib/locales/en.js +9 -4
- package/lib/locales/es.js +9 -4
- package/lib/locales/fr.js +9 -4
- package/lib/locales/hi.js +9 -4
- package/lib/locales/i18n.db +0 -0
- package/lib/locales/id.js +8 -3
- package/lib/locales/ja.js +9 -4
- package/lib/locales/ko.js +9 -4
- package/lib/locales/pt.js +8 -3
- package/lib/locales/ru.js +7 -2
- package/lib/locales/th.js +7 -2
- package/lib/locales/vi.js +8 -3
- package/lib/locales/zh-tw.js +7 -2
- package/lib/locales/zh.js +7 -2
- package/package.json +17 -17
package/es/locales/pt.js
CHANGED
|
@@ -665,7 +665,7 @@ export default {
|
|
|
665
665
|
createBlocklet: 'Novo bloco',
|
|
666
666
|
deleteBlockletTip: 'O bloco não pode ser recuperado após a exclusão, por favor, confirme',
|
|
667
667
|
componentNotRunning: 'O componente {name} não está sendo executado, por favor, inicie-o primeiro',
|
|
668
|
-
releaseEmptyTip: 'Não há
|
|
668
|
+
releaseEmptyTip: 'Não há nenhum lançamento aqui',
|
|
669
669
|
createReleaseTip: 'Você pode criar um lançamento do blocklet, juntamente com notas de lançamento e recursos, para que outras pessoas possam usar',
|
|
670
670
|
createRelease: 'Novo lançamento',
|
|
671
671
|
deleteReleaseTip: 'A liberação não pode ser recuperada após exclusão',
|
|
@@ -703,7 +703,13 @@ export default {
|
|
|
703
703
|
connectStoreSuccess: 'Loja de Blocos conectada com sucesso',
|
|
704
704
|
uploadToStoreSuccess: 'Blocklet enviado para a Store com sucesso, você precisa publicá-lo na Store',
|
|
705
705
|
viewLastRelease: 'Visualizar última versão',
|
|
706
|
-
reconnectStoreTip: 'Após reconectar, um novo desenvolvedor será vinculado. Você tem certeza de que deseja reconectar?'
|
|
706
|
+
reconnectStoreTip: 'Após reconectar, um novo desenvolvedor será vinculado. Você tem certeza de que deseja reconectar?',
|
|
707
|
+
deleteProject: {
|
|
708
|
+
title: 'Excluir {name}',
|
|
709
|
+
scan: 'Digitalize o código QR abaixo para excluir {name}',
|
|
710
|
+
confirm: 'Confirmar usando a Carteira DID',
|
|
711
|
+
success: 'O projeto Blocklet foi excluído, por favor, continue sua operação'
|
|
712
|
+
}
|
|
707
713
|
},
|
|
708
714
|
titleValidationError: 'O comprimento do título deve ter pelo menos 3 caracteres',
|
|
709
715
|
descriptionValidationError: 'O comprimento da descrição deve estar entre 3 e 160 caracteres.'
|
|
@@ -1610,7 +1616,6 @@ export default {
|
|
|
1610
1616
|
title: 'Excluir gateway',
|
|
1611
1617
|
succeeded: 'Espaços DIDs {name} excluídos com sucesso.',
|
|
1612
1618
|
failed: 'Falha ao excluir o gateway',
|
|
1613
|
-
failedForConnected: 'Não é possível excluir um DID Spaces conectado',
|
|
1614
1619
|
failedForSelected: 'Não é possível excluir um DID Spaces selecionado'
|
|
1615
1620
|
},
|
|
1616
1621
|
connect: {
|
package/es/locales/ru.js
CHANGED
|
@@ -703,7 +703,13 @@ export default {
|
|
|
703
703
|
connectStoreSuccess: 'Успешное подключение к Blocklet Store',
|
|
704
704
|
uploadToStoreSuccess: 'Блоклет успешно загружен в магазин, вам нужно опубликовать его в магазине',
|
|
705
705
|
viewLastRelease: 'Просмотр последнего релиза',
|
|
706
|
-
reconnectStoreTip: 'После переподключения будет назначен новый разработчик. Вы уверены, что хотите переподключиться?'
|
|
706
|
+
reconnectStoreTip: 'После переподключения будет назначен новый разработчик. Вы уверены, что хотите переподключиться?',
|
|
707
|
+
deleteProject: {
|
|
708
|
+
title: 'Удалить {name}',
|
|
709
|
+
scan: 'Сканируйте QR-код ниже, чтобы удалить {name}',
|
|
710
|
+
confirm: 'Подтвердите использование кошелька DID',
|
|
711
|
+
success: 'Проект Blocklet был удален, пожалуйста, продолжите вашу операцию.'
|
|
712
|
+
}
|
|
707
713
|
},
|
|
708
714
|
titleValidationError: 'Длина заголовка должна быть не менее 3 символов',
|
|
709
715
|
descriptionValidationError: 'Длина описания должна быть от 3 до 160 символов'
|
|
@@ -1610,7 +1616,6 @@ export default {
|
|
|
1610
1616
|
title: 'Удалить шлюз',
|
|
1611
1617
|
succeeded: 'Успешное удаление DID Spaces {name}',
|
|
1612
1618
|
failed: 'Не удалось удалить шлюз',
|
|
1613
|
-
failedForConnected: 'Невозможно удалить подключенное пространство DID',
|
|
1614
1619
|
failedForSelected: 'Невозможно удалить выбранное пространство DID'
|
|
1615
1620
|
},
|
|
1616
1621
|
connect: {
|
package/es/locales/th.js
CHANGED
|
@@ -703,7 +703,13 @@ export default {
|
|
|
703
703
|
connectStoreSuccess: 'เชื่อมต่อ Blocklet Store สำเร็จ',
|
|
704
704
|
uploadToStoreSuccess: 'อัพโหลด Blocklet เข้าสู่ Store สำเร็จแล้ว คุณต้องเผยแพร่ในร้านค้า',
|
|
705
705
|
viewLastRelease: 'ดูรายการอัพเดตล่าสุด',
|
|
706
|
-
reconnectStoreTip: 'หลังจากเชื่อมต่อใหม่ จะมีนักพัฒนารุ่นใหม่เข้ามาเป็นที่ผูกพัน คุณแน่ใจหรือไม่ว่าต้องการที่จะเชื่อมต่อใหม่หรือไม่?'
|
|
706
|
+
reconnectStoreTip: 'หลังจากเชื่อมต่อใหม่ จะมีนักพัฒนารุ่นใหม่เข้ามาเป็นที่ผูกพัน คุณแน่ใจหรือไม่ว่าต้องการที่จะเชื่อมต่อใหม่หรือไม่?',
|
|
707
|
+
deleteProject: {
|
|
708
|
+
title: 'ลบ {name}',
|
|
709
|
+
scan: 'สแกนรหัส QR ด้านล่างเพื่อลบ {name}',
|
|
710
|
+
confirm: 'ยืนยันการใช้งานกระเป๋าสตางค์ DID',
|
|
711
|
+
success: 'โครงการ Blocklet ได้ถูกลบแล้ว โปรดดำเนินการต่อ'
|
|
712
|
+
}
|
|
707
713
|
},
|
|
708
714
|
titleValidationError: 'ความยาวของชื่อต้องมีอย่างน้อย 3 ตัวอักษร',
|
|
709
715
|
descriptionValidationError: 'ความยาวคำอธิบายต้องอยู่ระหว่าง 3 ถึง 160 ตัวอักษร.'
|
|
@@ -1610,7 +1616,6 @@ export default {
|
|
|
1610
1616
|
title: 'ลบเกตเวย์',
|
|
1611
1617
|
succeeded: 'ลบพื้นที่ DID {name} สำเร็จแล้ว.',
|
|
1612
1618
|
failed: 'การลบเกตเวย์ล้มเหลว',
|
|
1613
|
-
failedForConnected: 'ไม่สามารถลบ DID Spaces ที่เชื่อมต่อได้',
|
|
1614
1619
|
failedForSelected: 'ไม่สามารถลบ DID Spaces ที่เลือกได้'
|
|
1615
1620
|
},
|
|
1616
1621
|
connect: {
|
package/es/locales/vi.js
CHANGED
|
@@ -354,7 +354,7 @@ export default {
|
|
|
354
354
|
uploadToStore: 'Tải lên Cửa hàng',
|
|
355
355
|
upload: 'Tải lên',
|
|
356
356
|
blockletStudio: 'Blocklet Studio',
|
|
357
|
-
visitStore: 'Ghé
|
|
357
|
+
visitStore: 'Ghé cửa hàng',
|
|
358
358
|
reconnect: 'Kết nối lại'
|
|
359
359
|
},
|
|
360
360
|
blocklet: {
|
|
@@ -703,7 +703,13 @@ export default {
|
|
|
703
703
|
connectStoreSuccess: 'Kết nối Blocklet Store thành công',
|
|
704
704
|
uploadToStoreSuccess: 'Blocklet đã tải lên Store thành công, bạn cần phải xuất bản nó trong Store',
|
|
705
705
|
viewLastRelease: 'Xem phiên bản phát hành gần đây nhất',
|
|
706
|
-
reconnectStoreTip: 'Sau khi kết nối lại, một nhà phát triển mới sẽ được liên kết. Bạn có chắc chắn muốn kết nối lại không?'
|
|
706
|
+
reconnectStoreTip: 'Sau khi kết nối lại, một nhà phát triển mới sẽ được liên kết. Bạn có chắc chắn muốn kết nối lại không?',
|
|
707
|
+
deleteProject: {
|
|
708
|
+
title: 'Xóa {name}',
|
|
709
|
+
scan: 'Quét mã QR bên dưới để xóa {name}',
|
|
710
|
+
confirm: 'Xác nhận sử dụng Ví DID',
|
|
711
|
+
success: 'Dự án Blocklet đã bị xóa, vui lòng tiếp tục hoạt động của bạn'
|
|
712
|
+
}
|
|
707
713
|
},
|
|
708
714
|
titleValidationError: 'Độ dài tiêu đề phải ít nhất 3 ký tự',
|
|
709
715
|
descriptionValidationError: 'Chiều dài mô tả phải từ 3 đến 160 ký tự.'
|
|
@@ -1610,7 +1616,6 @@ export default {
|
|
|
1610
1616
|
title: 'Xóa cổng kết nối',
|
|
1611
1617
|
succeeded: 'Xóa Dịch vụ DID Thành công {name}.',
|
|
1612
1618
|
failed: 'Xóa cổng không thành công',
|
|
1613
|
-
failedForConnected: 'Không thể xóa DID Spaces đang được kết nối',
|
|
1614
1619
|
failedForSelected: 'Không thể xóa DID Spaces đã chọn'
|
|
1615
1620
|
},
|
|
1616
1621
|
connect: {
|
package/es/locales/zh-tw.js
CHANGED
|
@@ -703,7 +703,13 @@ export default {
|
|
|
703
703
|
connectStoreSuccess: 'Store 連線成功',
|
|
704
704
|
uploadToStoreSuccess: 'Blocklet 成功上傳至 Store,請在 Store 中發布',
|
|
705
705
|
viewLastRelease: '查看最新版本',
|
|
706
|
-
reconnectStoreTip: '重新連接後,將綁定一個新的開發者。你確定要重新連接嗎?'
|
|
706
|
+
reconnectStoreTip: '重新連接後,將綁定一個新的開發者。你確定要重新連接嗎?',
|
|
707
|
+
deleteProject: {
|
|
708
|
+
title: '刪除{name}',
|
|
709
|
+
scan: '掃描下方的QR碼以刪除{name}',
|
|
710
|
+
confirm: '確認使用DID錢包',
|
|
711
|
+
success: 'Blocklet 專案已被刪除,請繼續進行操作'
|
|
712
|
+
}
|
|
707
713
|
},
|
|
708
714
|
titleValidationError: '標題長度必須至少為3到40個字符',
|
|
709
715
|
descriptionValidationError: '描述長度必須介於3到160個字符之間'
|
|
@@ -1610,7 +1616,6 @@ export default {
|
|
|
1610
1616
|
title: '刪除網關',
|
|
1611
1617
|
succeeded: '刪除 DID 空間 {name} 成功',
|
|
1612
1618
|
failed: '刪除閘道失敗',
|
|
1613
|
-
failedForConnected: '無法刪除已連接的DID空間',
|
|
1614
1619
|
failedForSelected: '無法刪除所選的DID空間'
|
|
1615
1620
|
},
|
|
1616
1621
|
connect: {
|
package/es/locales/zh.js
CHANGED
|
@@ -706,7 +706,13 @@ export default {
|
|
|
706
706
|
connectStoreSuccess: 'Blocklet 成功连接 Store',
|
|
707
707
|
uploadToStoreSuccess: 'Blocklet 成功上传至 Store,请在 Store 中发布',
|
|
708
708
|
viewLastRelease: '查看最新版本',
|
|
709
|
-
reconnectStoreTip: '重新连接后,将绑定一个新的开发者。你确定要重新连接吗?'
|
|
709
|
+
reconnectStoreTip: '重新连接后,将绑定一个新的开发者。你确定要重新连接吗?',
|
|
710
|
+
deleteProject: {
|
|
711
|
+
title: '删除{name}',
|
|
712
|
+
scan: '扫描下方的QR码以删除{name}',
|
|
713
|
+
confirm: '确认使用DID钱包',
|
|
714
|
+
success: 'Blocklet 项目已被删除,请继续操作'
|
|
715
|
+
}
|
|
710
716
|
},
|
|
711
717
|
titleValidationError: '标题长度必须至少为3到40个字符',
|
|
712
718
|
descriptionValidationError: '描述长度必须在3到160个字符之间'
|
|
@@ -1616,7 +1622,6 @@ export default {
|
|
|
1616
1622
|
title: '删除 DID Spaces',
|
|
1617
1623
|
succeeded: '删除 DID Spaces{name} 成功',
|
|
1618
1624
|
failed: '删除 DID Spaces 失败',
|
|
1619
|
-
failedForConnected: '无法删除一个已连接的 DID Spaces',
|
|
1620
1625
|
failedForSelected: '无法删除一个已选中的 DID Spaces'
|
|
1621
1626
|
},
|
|
1622
1627
|
connect: {
|
package/lib/blocklet/actions.js
CHANGED
|
@@ -4,36 +4,37 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = BlockletActions;
|
|
7
|
-
var _react = require("react");
|
|
8
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
7
|
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
var _react = require("react");
|
|
10
10
|
var _reactRouterDom = require("react-router-dom");
|
|
11
11
|
var _useLocalStorage = _interopRequireDefault(require("react-use/lib/useLocalStorage"));
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
var
|
|
12
|
+
var _constant = require("@abtnode/constant");
|
|
13
|
+
var _MoreVert = _interopRequireDefault(require("@mui/icons-material/MoreVert"));
|
|
14
|
+
var _Alert = _interopRequireDefault(require("@mui/material/Alert"));
|
|
15
15
|
var _ButtonGroup = _interopRequireDefault(require("@mui/material/ButtonGroup"));
|
|
16
16
|
var _CircularProgress = _interopRequireDefault(require("@mui/material/CircularProgress"));
|
|
17
|
-
var
|
|
18
|
-
var
|
|
17
|
+
var _Divider = _interopRequireDefault(require("@mui/material/Divider"));
|
|
18
|
+
var _FormControlLabel = _interopRequireDefault(require("@mui/material/FormControlLabel"));
|
|
19
|
+
var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
|
|
19
20
|
var _ListItemIcon = _interopRequireDefault(require("@mui/material/ListItemIcon"));
|
|
20
21
|
var _ListItemText = _interopRequireDefault(require("@mui/material/ListItemText"));
|
|
21
|
-
var
|
|
22
|
+
var _Menu = _interopRequireDefault(require("@mui/material/Menu"));
|
|
23
|
+
var _MenuItem = _interopRequireDefault(require("@mui/material/MenuItem"));
|
|
22
24
|
var _Radio = _interopRequireDefault(require("@mui/material/Radio"));
|
|
23
25
|
var _RadioGroup = _interopRequireDefault(require("@mui/material/RadioGroup"));
|
|
24
|
-
var
|
|
25
|
-
var _Alert = _interopRequireDefault(require("@mui/material/Alert"));
|
|
26
|
+
var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
|
|
26
27
|
var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
|
|
27
|
-
var _util = require("@blocklet/meta/lib/util");
|
|
28
28
|
var _context = require("@arcblock/ux/lib/Locale/context");
|
|
29
|
-
var
|
|
29
|
+
var _util = require("@blocklet/meta/lib/util");
|
|
30
|
+
var _constant2 = require("@blocklet/constant");
|
|
30
31
|
var _Toast = _interopRequireDefault(require("@arcblock/ux/lib/Toast"));
|
|
31
|
-
var _util2 = require("../util");
|
|
32
|
-
var _util3 = require("./util");
|
|
33
|
-
var _node = require("../contexts/node");
|
|
34
32
|
var _confirm = _interopRequireDefault(require("../confirm"));
|
|
35
|
-
var
|
|
33
|
+
var _node = require("../contexts/node");
|
|
34
|
+
var _util2 = require("../util");
|
|
36
35
|
var _joinUrlKeepSearch = _interopRequireDefault(require("../util/join-url-keep-search"));
|
|
36
|
+
var _icons = _interopRequireDefault(require("./icons"));
|
|
37
|
+
var _util3 = require("./util");
|
|
37
38
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
38
39
|
var _templateObject;
|
|
39
40
|
const _excluded = ["blocklet", "onStart", "onComplete", "variant", "hasPermission", "getComponentUrl", "useBlockletUrlEvaluation"],
|
|
@@ -51,7 +52,6 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
|
51
52
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
52
53
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
53
54
|
function BlockletActions(_ref) {
|
|
54
|
-
var _blocklet$controller;
|
|
55
55
|
let {
|
|
56
56
|
blocklet,
|
|
57
57
|
onStart,
|
|
@@ -77,13 +77,34 @@ function BlockletActions(_ref) {
|
|
|
77
77
|
recommendedUrl
|
|
78
78
|
} = useBlockletUrlEvaluation(blocklet);
|
|
79
79
|
const inProgress = (0, _util.isInProgress)(blocklet.status);
|
|
80
|
-
const disableStart = (
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
80
|
+
const [disableStart, setDisableStart] = (0, _react.useState)(false);
|
|
81
|
+
(0, _react.useEffect)(() => {
|
|
82
|
+
var _blocklet$controller;
|
|
83
|
+
if (!(blocklet !== null && blocklet !== void 0 && blocklet.controller)) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
setDisableStart((blocklet === null || blocklet === void 0 || (_blocklet$controller = blocklet.controller) === null || _blocklet$controller === void 0 || (_blocklet$controller = _blocklet$controller.status) === null || _blocklet$controller === void 0 ? void 0 : _blocklet$controller.value) === _constant2.BLOCKLET_CONTROLLER_STATUS.suspended);
|
|
87
|
+
const func = async () => {
|
|
88
|
+
try {
|
|
89
|
+
var _blocklet$controller2, _blocklet$controller3, _data$launcherSession;
|
|
90
|
+
const data = await node.api.getLauncherSession({
|
|
91
|
+
input: {
|
|
92
|
+
launcherSessionId: blocklet === null || blocklet === void 0 || (_blocklet$controller2 = blocklet.controller) === null || _blocklet$controller2 === void 0 ? void 0 : _blocklet$controller2.launcherSessionId,
|
|
93
|
+
launcherUrl: blocklet === null || blocklet === void 0 || (_blocklet$controller3 = blocklet.controller) === null || _blocklet$controller3 === void 0 ? void 0 : _blocklet$controller3.launcherUrl
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
if (data !== null && data !== void 0 && data.error) {
|
|
97
|
+
console.error('get launcher session failed', data.error);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
setDisableStart([_constant.LAUNCH_SESSION_STATUS.expired, _constant.LAUNCH_SESSION_STATUS.terminated].includes(data === null || data === void 0 || (_data$launcherSession = data.launcherSession) === null || _data$launcherSession === void 0 ? void 0 : _data$launcherSession.status));
|
|
101
|
+
} catch (error) {
|
|
102
|
+
console.error('call getLauncherSession error', error);
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
func();
|
|
106
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
107
|
+
}, []);
|
|
87
108
|
const {
|
|
88
109
|
inService
|
|
89
110
|
} = node;
|
|
@@ -115,7 +136,7 @@ function BlockletActions(_ref) {
|
|
|
115
136
|
_Toast.default.error(t('blocklet.noComponent'));
|
|
116
137
|
return;
|
|
117
138
|
}
|
|
118
|
-
if (!inService && !skipSetup && !((_blocklet$settings = blocklet.settings) !== null && _blocklet$settings !== void 0 && _blocklet$settings.initialized) && blocklet.mode !==
|
|
139
|
+
if (!inService && !skipSetup && !((_blocklet$settings = blocklet.settings) !== null && _blocklet$settings !== void 0 && _blocklet$settings.initialized) && blocklet.mode !== _constant2.BLOCKLET_MODES.DEVELOPMENT) {
|
|
119
140
|
// 跳转到 setup 流程界面时携带 serverUrl 查询参数
|
|
120
141
|
const serverUrl = (0, _util3.getServerUrl)(node.info);
|
|
121
142
|
const url = new URL(recommendedUrl);
|
|
@@ -184,7 +205,7 @@ function BlockletActions(_ref) {
|
|
|
184
205
|
setConfirmSetting(null);
|
|
185
206
|
};
|
|
186
207
|
const name = (0, _util.getDisplayName)(blocklet, true);
|
|
187
|
-
const removeSetting = blocklet.mode ===
|
|
208
|
+
const removeSetting = blocklet.mode === _constant2.BLOCKLET_MODES.DEVELOPMENT ? {
|
|
188
209
|
description: () => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
|
|
189
210
|
component: "div",
|
|
190
211
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
|
|
@@ -21,7 +21,9 @@ var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
|
|
|
21
21
|
var _Toast = _interopRequireDefault(require("@arcblock/ux/lib/Toast"));
|
|
22
22
|
var _Tag = _interopRequireDefault(require("@arcblock/ux/lib/Tag"));
|
|
23
23
|
var _RelativeTime = _interopRequireDefault(require("@arcblock/ux/lib/RelativeTime"));
|
|
24
|
+
var _Connect = _interopRequireDefault(require("@arcblock/did-connect/lib/Connect"));
|
|
24
25
|
var _material = require("@mui/material");
|
|
26
|
+
var _session = require("../../contexts/session");
|
|
25
27
|
var _blocklet = require("../../contexts/blocklet");
|
|
26
28
|
var _node = require("../../contexts/node");
|
|
27
29
|
var _emptySpinner = _interopRequireDefault(require("../../empty-spinner"));
|
|
@@ -44,11 +46,15 @@ function ProjectList() {
|
|
|
44
46
|
const {
|
|
45
47
|
api
|
|
46
48
|
} = (0, _node.useNodeContext)();
|
|
49
|
+
const {
|
|
50
|
+
api: sessionApi
|
|
51
|
+
} = (0, _session.useSessionContext)();
|
|
47
52
|
const [loading, setLoading] = (0, _react.useState)(true);
|
|
48
53
|
const {
|
|
49
54
|
blocklet
|
|
50
55
|
} = (0, _blocklet.useBlockletContext)();
|
|
51
56
|
const [deleteConfirm, setDeleteConfirm] = (0, _react.useState)(null);
|
|
57
|
+
const [openDidConnect, setOpenDidConnect] = (0, _react.useState)(false);
|
|
52
58
|
const {
|
|
53
59
|
componentDid = ''
|
|
54
60
|
} = (0, _reactRouterDom.useParams)();
|
|
@@ -76,23 +82,27 @@ function ProjectList() {
|
|
|
76
82
|
const onDeleteProject = project => {
|
|
77
83
|
setDeleteConfirm(project);
|
|
78
84
|
};
|
|
79
|
-
const
|
|
85
|
+
const confirmDeleteProject = () => {
|
|
80
86
|
setLoading(false);
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
_Toast.default.error(
|
|
95
|
-
|
|
87
|
+
setOpenDidConnect(true);
|
|
88
|
+
};
|
|
89
|
+
const handleDidConnectClose = () => {
|
|
90
|
+
setOpenDidConnect(false);
|
|
91
|
+
setDeleteConfirm(null);
|
|
92
|
+
};
|
|
93
|
+
const handleDidConnectDidError = err => {
|
|
94
|
+
_Toast.default.error(err.message);
|
|
95
|
+
setOpenDidConnect(false);
|
|
96
|
+
setDeleteConfirm(null);
|
|
97
|
+
};
|
|
98
|
+
const handleDidConnectDidSuccess = result => {
|
|
99
|
+
if (!(result !== null && result !== void 0 && result.deleted)) {
|
|
100
|
+
_Toast.default.error('Delete project failed');
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
getProjects();
|
|
104
|
+
setOpenDidConnect(false);
|
|
105
|
+
setDeleteConfirm(null);
|
|
96
106
|
};
|
|
97
107
|
(0, _react.useEffect)(() => {
|
|
98
108
|
getProjects();
|
|
@@ -277,6 +287,34 @@ function ProjectList() {
|
|
|
277
287
|
}
|
|
278
288
|
}
|
|
279
289
|
}].filter(Boolean);
|
|
290
|
+
const didConnect = openDidConnect ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Connect.default, {
|
|
291
|
+
open: true,
|
|
292
|
+
popup: true,
|
|
293
|
+
onClose: handleDidConnectClose,
|
|
294
|
+
action: "check-has-project-id",
|
|
295
|
+
locale: locale,
|
|
296
|
+
checkFn: sessionApi.get,
|
|
297
|
+
saveConnect: false,
|
|
298
|
+
forceConnected: false,
|
|
299
|
+
checkTimeout: 5 * 60 * 1000,
|
|
300
|
+
onSuccess: handleDidConnectDidSuccess,
|
|
301
|
+
onError: handleDidConnectDidError,
|
|
302
|
+
extraParams: {
|
|
303
|
+
projectId: deleteConfirm.id,
|
|
304
|
+
did: blocklet.meta.did,
|
|
305
|
+
name: deleteConfirm.blockletTitle
|
|
306
|
+
},
|
|
307
|
+
messages: {
|
|
308
|
+
title: t('blocklet.publish.deleteProject.title', {
|
|
309
|
+
name: deleteConfirm.blockletTitle
|
|
310
|
+
}),
|
|
311
|
+
scan: t('blocklet.publish.deleteProject.scan', {
|
|
312
|
+
name: deleteConfirm.blockletTitle
|
|
313
|
+
}),
|
|
314
|
+
confirm: t('blocklet.publish.deleteProject.confirm'),
|
|
315
|
+
success: t('blocklet.publish.deleteProject.success')
|
|
316
|
+
}
|
|
317
|
+
}) : null;
|
|
280
318
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Main, {
|
|
281
319
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Box.default, {
|
|
282
320
|
display: "flex",
|
|
@@ -332,9 +370,9 @@ function ProjectList() {
|
|
|
332
370
|
title: "".concat(t('common.delete'), " ").concat(deleteConfirm.blockletTitle),
|
|
333
371
|
description: t('blocklet.publish.deleteBlockletTip'),
|
|
334
372
|
confirm: t('common.confirm'),
|
|
335
|
-
onConfirm:
|
|
373
|
+
onConfirm: confirmDeleteProject,
|
|
336
374
|
onCancel: () => setDeleteConfirm(null)
|
|
337
|
-
})]
|
|
375
|
+
}), didConnect]
|
|
338
376
|
});
|
|
339
377
|
}
|
|
340
378
|
ProjectList.propTypes = {};
|
|
@@ -16,7 +16,7 @@ var _Toast = _interopRequireDefault(require("@arcblock/ux/lib/Toast"));
|
|
|
16
16
|
var _spaces = require("../../util/spaces");
|
|
17
17
|
var _delete = _interopRequireDefault(require("./delete"));
|
|
18
18
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
|
-
const _excluded = ["spaceGateway", "connected", "onDelete", "onConnect", "enableSwitchToSpace"];
|
|
19
|
+
const _excluded = ["spaceGateway", "connected", "onDelete", "onConnect", "enableSwitchToSpace", "backupInProgress"];
|
|
20
20
|
/**
|
|
21
21
|
* @description
|
|
22
22
|
* @param {{
|
|
@@ -24,7 +24,8 @@ const _excluded = ["spaceGateway", "connected", "onDelete", "onConnect", "enable
|
|
|
24
24
|
* onDelete: (spaceGateway: import('./connected').SpaceGateway) => Promise<void>,
|
|
25
25
|
* onConnect: (spaceGateway: import('./connected').SpaceGateway) => Promise<void>,
|
|
26
26
|
* enableSwitchToSpace: true | false,
|
|
27
|
-
* connected: false | true
|
|
27
|
+
* connected: false | true,
|
|
28
|
+
* backupInProgress: false | true,
|
|
28
29
|
* } & import('@mui/material').IconButtonProps} { spaceGateway, onDelete, onConnect, enableSwitchToSpace, connected, ...rest }
|
|
29
30
|
* @return {React.Component}
|
|
30
31
|
*/
|
|
@@ -44,7 +45,8 @@ function SpaceItemAction(_ref) {
|
|
|
44
45
|
connected,
|
|
45
46
|
onDelete,
|
|
46
47
|
onConnect,
|
|
47
|
-
enableSwitchToSpace
|
|
48
|
+
enableSwitchToSpace,
|
|
49
|
+
backupInProgress
|
|
48
50
|
} = _ref,
|
|
49
51
|
rest = _objectWithoutProperties(_ref, _excluded);
|
|
50
52
|
const [anchorEl, setAnchorEl] = (0, _react.useState)(null);
|
|
@@ -134,7 +136,7 @@ function SpaceItemAction(_ref) {
|
|
|
134
136
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.ListItemText, {
|
|
135
137
|
children: t('storage.spaces.connect.switchToSpace')
|
|
136
138
|
})]
|
|
137
|
-
}), !
|
|
139
|
+
}), !backupInProgress && /*#__PURE__*/(0, _jsxRuntime.jsx)(_delete.default, {
|
|
138
140
|
spaceGateway: spaceGateway,
|
|
139
141
|
onDelete: onDelete
|
|
140
142
|
})]
|
|
@@ -152,11 +154,13 @@ SpaceItemAction.propTypes = {
|
|
|
152
154
|
connected: _propTypes.default.bool.isRequired,
|
|
153
155
|
enableSwitchToSpace: _propTypes.default.bool,
|
|
154
156
|
onDelete: _propTypes.default.func,
|
|
155
|
-
onConnect: _propTypes.default.func
|
|
157
|
+
onConnect: _propTypes.default.func,
|
|
158
|
+
backupInProgress: _propTypes.default.bool
|
|
156
159
|
};
|
|
157
160
|
SpaceItemAction.defaultProps = {
|
|
158
161
|
onDelete: () => {},
|
|
159
162
|
onConnect: () => {},
|
|
160
|
-
enableSwitchToSpace: true
|
|
163
|
+
enableSwitchToSpace: true,
|
|
164
|
+
backupInProgress: false
|
|
161
165
|
};
|
|
162
166
|
var _default = exports.default = SpaceItemAction;
|
|
@@ -455,7 +455,8 @@ function SpaceItem(_ref) {
|
|
|
455
455
|
connected: connected,
|
|
456
456
|
onDelete: onDelete,
|
|
457
457
|
onConnect: onConnect,
|
|
458
|
-
enableSwitchToSpace: (backupProgress === null || backupProgress === void 0 ? void 0 : backupProgress.completed) || (0, _lodash.isEmpty)(backupProgress === null || backupProgress === void 0 ? void 0 : backupProgress.message)
|
|
458
|
+
enableSwitchToSpace: (backupProgress === null || backupProgress === void 0 ? void 0 : backupProgress.completed) || (0, _lodash.isEmpty)(backupProgress === null || backupProgress === void 0 ? void 0 : backupProgress.message),
|
|
459
|
+
backupInProgress: shouldDisplayBackupProgress
|
|
459
460
|
})]
|
|
460
461
|
})]
|
|
461
462
|
})), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Connect.default, {
|
|
@@ -153,10 +153,6 @@ function BlockletStorageProvider(_ref) {
|
|
|
153
153
|
if (!spaceGateway) {
|
|
154
154
|
return;
|
|
155
155
|
}
|
|
156
|
-
if (spaceGateway.endpoint === backupEndpoint) {
|
|
157
|
-
_Toast.default.warning(t('storage.spaces.gateway.delete.failedForConnected'));
|
|
158
|
-
return;
|
|
159
|
-
}
|
|
160
156
|
await api.deleteBlockletSpaceGateway({
|
|
161
157
|
input: {
|
|
162
158
|
did: blocklet.meta.did,
|
package/lib/locales/ar.js
CHANGED
|
@@ -360,7 +360,7 @@ var _default = exports.default = {
|
|
|
360
360
|
uploadToStore: 'تحميل إلى المتجر',
|
|
361
361
|
upload: 'تحميل',
|
|
362
362
|
blockletStudio: 'استوديو بلوكليت',
|
|
363
|
-
visitStore: '
|
|
363
|
+
visitStore: 'زيارة المتجر',
|
|
364
364
|
reconnect: 'إعادة الاتصال'
|
|
365
365
|
},
|
|
366
366
|
blocklet: {
|
|
@@ -709,7 +709,13 @@ var _default = exports.default = {
|
|
|
709
709
|
connectStoreSuccess: 'تم الاتصال بمتجر البلوكليت بنجاح',
|
|
710
710
|
uploadToStoreSuccess: 'تم تحميل بلوكليت بنجاح في المتجر ، تحتاج إلى نشره في المتجر',
|
|
711
711
|
viewLastRelease: 'عرض آخر إصدار',
|
|
712
|
-
reconnectStoreTip: 'بعد إعادة الاتصال، سيتم ربط مطور جديد. هل أنت متأكد أنك تريد إعادة الاتصال؟'
|
|
712
|
+
reconnectStoreTip: 'بعد إعادة الاتصال، سيتم ربط مطور جديد. هل أنت متأكد أنك تريد إعادة الاتصال؟',
|
|
713
|
+
deleteProject: {
|
|
714
|
+
title: 'احذف {name}',
|
|
715
|
+
scan: 'امسح رمز الاستجابة السريعة أدناه لحذف {name}',
|
|
716
|
+
confirm: 'يرجى تأكيد استخدام محفظة الهوية اللامركزية',
|
|
717
|
+
success: 'تم حذف مشروع Blocklet ، يرجى متابعة العملية الخاصة بك.'
|
|
718
|
+
}
|
|
713
719
|
},
|
|
714
720
|
titleValidationError: 'يجب أن يكون طول العنوان على الأقل 3 أحرف',
|
|
715
721
|
descriptionValidationError: 'يجب أن تكون طول الوصف بين 3 و 160 حرفًا'
|
|
@@ -1616,7 +1622,6 @@ var _default = exports.default = {
|
|
|
1616
1622
|
title: 'حذف البوابة',
|
|
1617
1623
|
succeeded: 'حذف DID Spaces {name} بنجاح',
|
|
1618
1624
|
failed: 'فشل حذف البوابة',
|
|
1619
|
-
failedForConnected: 'غير قادر على حذف فضاء DID متصل',
|
|
1620
1625
|
failedForSelected: 'غير قادر على حذف مساحة DID المحددة'
|
|
1621
1626
|
},
|
|
1622
1627
|
connect: {
|
package/lib/locales/de.js
CHANGED
|
@@ -671,7 +671,7 @@ var _default = exports.default = {
|
|
|
671
671
|
createBlocklet: 'Neuer Blocklet',
|
|
672
672
|
deleteBlockletTip: 'Der Blocklet kann nach dem Löschen nicht wiederhergestellt werden, bitte bestätigen',
|
|
673
673
|
componentNotRunning: 'Komponente {name} läuft nicht, starten Sie sie bitte zuerst',
|
|
674
|
-
releaseEmptyTip: '
|
|
674
|
+
releaseEmptyTip: 'Es gibt hier keine Veröffentlichungen',
|
|
675
675
|
createReleaseTip: 'Du kannst eine Veröffentlichung des Blocklets erstellen, zusammen mit Versionshinweisen und Ressourcen, die andere Personen nutzen können.',
|
|
676
676
|
createRelease: 'Neue Veröffentlichung',
|
|
677
677
|
deleteReleaseTip: 'Die Veröffentlichung kann nach Löschung nicht wiederhergestellt werden',
|
|
@@ -709,7 +709,13 @@ var _default = exports.default = {
|
|
|
709
709
|
connectStoreSuccess: 'Blocklet Store erfolgreich verbunden',
|
|
710
710
|
uploadToStoreSuccess: 'Blocklet erfolgreich im Store hochgeladen, du musst es im Store veröffentlichen',
|
|
711
711
|
viewLastRelease: 'Letzte Version anzeigen',
|
|
712
|
-
reconnectStoreTip: 'Nach dem erneuten Verbinden wird ein neuer Entwickler zugewiesen. Bist du sicher, dass du dich erneut verbinden möchtest?'
|
|
712
|
+
reconnectStoreTip: 'Nach dem erneuten Verbinden wird ein neuer Entwickler zugewiesen. Bist du sicher, dass du dich erneut verbinden möchtest?',
|
|
713
|
+
deleteProject: {
|
|
714
|
+
title: 'Lösche {name}',
|
|
715
|
+
scan: 'Scanne den QR-Code unten, um {name} zu löschen',
|
|
716
|
+
confirm: 'Bitte bestätigen Sie die Verwendung der DID-Brieftasche',
|
|
717
|
+
success: 'Das Blocklet-Projekt wurde gelöscht, bitte fahren Sie mit Ihrer Operation fort.'
|
|
718
|
+
}
|
|
713
719
|
},
|
|
714
720
|
titleValidationError: 'Die Länge des Titels muss mindestens 3 Zeichen betragen',
|
|
715
721
|
descriptionValidationError: 'Die Beschreibungslänge muss zwischen 3 und 160 Zeichen liegen'
|
|
@@ -1616,7 +1622,6 @@ var _default = exports.default = {
|
|
|
1616
1622
|
title: 'Lösche Gateway',
|
|
1617
1623
|
succeeded: 'Löschen Sie DID Spaces {name} Erfolg',
|
|
1618
1624
|
failed: 'Löschen des Gateways fehlgeschlagen',
|
|
1619
|
-
failedForConnected: 'Es ist nicht möglich, einen verbundenen DID Space zu löschen',
|
|
1620
1625
|
failedForSelected: 'Kann den ausgewählten DID-Space nicht löschen'
|
|
1621
1626
|
},
|
|
1622
1627
|
connect: {
|
package/lib/locales/en.js
CHANGED
|
@@ -248,7 +248,7 @@ var _default = exports.default = {
|
|
|
248
248
|
noticeTitle: 'Notice',
|
|
249
249
|
notification: 'Notification',
|
|
250
250
|
open: 'Open',
|
|
251
|
-
visitStore: 'Visit
|
|
251
|
+
visitStore: 'Visit Store',
|
|
252
252
|
management: 'Management',
|
|
253
253
|
os: 'Operating System',
|
|
254
254
|
overview: 'Overview',
|
|
@@ -666,10 +666,10 @@ var _default = exports.default = {
|
|
|
666
666
|
blockletEmptyTip: 'There aren’t any blocklets here',
|
|
667
667
|
createBlockletTip: 'You can create new blocklet through existing resources, components, and configuration in this application',
|
|
668
668
|
createBlocklet: 'New blocklet',
|
|
669
|
-
deleteBlockletTip:
|
|
669
|
+
deleteBlockletTip: "The blocklet cannot be recovered after deletion, You also can't republish a new version of the app in question, please confirm",
|
|
670
670
|
reconnectStoreTip: 'After reconnecting, a new developer will be bound. Are you sure you want to reconnect?',
|
|
671
671
|
componentNotRunning: 'Component {name} is not running, please start it first',
|
|
672
|
-
releaseEmptyTip:
|
|
672
|
+
releaseEmptyTip: "There aren't any releases here",
|
|
673
673
|
viewLastRelease: 'View last release',
|
|
674
674
|
createReleaseTip: 'You can create a release of the blocklet, along with release notes and resources, for other people to use',
|
|
675
675
|
createRelease: 'New release',
|
|
@@ -691,6 +691,12 @@ var _default = exports.default = {
|
|
|
691
691
|
confirm: 'Confirm using DID Wallet',
|
|
692
692
|
success: 'Blocklet DID has been generated, please continue your operation'
|
|
693
693
|
},
|
|
694
|
+
deleteProject: {
|
|
695
|
+
title: 'Delete {name}',
|
|
696
|
+
scan: 'Scan the QR code below to delete {name}',
|
|
697
|
+
confirm: 'Confirm using DID Wallet',
|
|
698
|
+
success: 'Blocklet project has been deleted, please continue your operation'
|
|
699
|
+
},
|
|
694
700
|
saveDraft: 'Save Draft',
|
|
695
701
|
releaseNote: 'Release Note',
|
|
696
702
|
errorTip: {
|
|
@@ -1606,7 +1612,6 @@ var _default = exports.default = {
|
|
|
1606
1612
|
title: 'Delete gateway',
|
|
1607
1613
|
succeeded: 'Delete DID Spaces{name} Success',
|
|
1608
1614
|
failed: 'Delete gateway failed',
|
|
1609
|
-
failedForConnected: 'Unable to delete a connected DID Spaces',
|
|
1610
1615
|
failedForSelected: 'Unable to delete a selected DID Spaces'
|
|
1611
1616
|
},
|
|
1612
1617
|
connect: {
|
package/lib/locales/es.js
CHANGED
|
@@ -360,7 +360,7 @@ var _default = exports.default = {
|
|
|
360
360
|
uploadToStore: 'Subir a la tienda',
|
|
361
361
|
upload: 'Subir',
|
|
362
362
|
blockletStudio: 'Blocklet Studio',
|
|
363
|
-
visitStore: '
|
|
363
|
+
visitStore: 'Visitar tienda',
|
|
364
364
|
reconnect: 'Reconecta'
|
|
365
365
|
},
|
|
366
366
|
blocklet: {
|
|
@@ -671,7 +671,7 @@ var _default = exports.default = {
|
|
|
671
671
|
createBlocklet: 'Nuevo bloque',
|
|
672
672
|
deleteBlockletTip: 'El blocklet no puede ser recuperado después de ser eliminado, por favor confirma',
|
|
673
673
|
componentNotRunning: 'El componente {name} no está en ejecución, por favor iniciar primero',
|
|
674
|
-
releaseEmptyTip: 'No hay
|
|
674
|
+
releaseEmptyTip: 'No hay ninguna versión aquí',
|
|
675
675
|
createReleaseTip: 'Puedes crear una versión de la blocklet, junto con notas de lanzamiento y recursos, para que otras personas la puedan utilizar',
|
|
676
676
|
createRelease: 'Nuevo lanzamiento',
|
|
677
677
|
deleteReleaseTip: 'La versión no se puede recuperar después de la eliminación',
|
|
@@ -709,7 +709,13 @@ var _default = exports.default = {
|
|
|
709
709
|
connectStoreSuccess: 'La tienda de Blocklet se conectó correctamente',
|
|
710
710
|
uploadToStoreSuccess: 'Bloque de carga a la tienda exitosamente, necesitas publicarlo en la tienda',
|
|
711
711
|
viewLastRelease: 'Ver última versión',
|
|
712
|
-
reconnectStoreTip: 'Después de reconectar, se vinculará un nuevo desarrollador. ¿Estás seguro de que deseas reconectar?'
|
|
712
|
+
reconnectStoreTip: 'Después de reconectar, se vinculará un nuevo desarrollador. ¿Estás seguro de que deseas reconectar?',
|
|
713
|
+
deleteProject: {
|
|
714
|
+
title: 'Borrar {name}',
|
|
715
|
+
scan: 'Escanee el código QR a continuación para eliminar a {name}',
|
|
716
|
+
confirm: 'Confirmar usando el monedero DID',
|
|
717
|
+
success: 'El proyecto Blocklet ha sido eliminado, por favor continúa tu operación'
|
|
718
|
+
}
|
|
713
719
|
},
|
|
714
720
|
titleValidationError: 'La longitud del título debe ser de al menos 3 caracteres',
|
|
715
721
|
descriptionValidationError: 'La longitud de la descripción debe estar entre 3 y 160 caracteres'
|
|
@@ -1616,7 +1622,6 @@ var _default = exports.default = {
|
|
|
1616
1622
|
title: 'Eliminar gateway',
|
|
1617
1623
|
succeeded: 'Eliminar espacios de DID {name} éxito',
|
|
1618
1624
|
failed: 'Eliminar puerta de enlace falló',
|
|
1619
|
-
failedForConnected: 'No se puede eliminar un espacio de DID conectado',
|
|
1620
1625
|
failedForSelected: 'No se puede eliminar un DID Espacios seleccionado'
|
|
1621
1626
|
},
|
|
1622
1627
|
connect: {
|