@blocklet/launcher-workflow 1.5.62 → 1.5.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/instance-operation.js +4 -4
- package/lib/components/page-header.js +1 -1
- package/lib/components/stripe/checkout.js +23 -10
- package/lib/components/stripe/paying.js +19 -7
- package/lib/index.js +35 -2
- package/lib/locales/en.js +8 -4
- package/lib/locales/zh.js +6 -4
- package/lib/prepare.js +3 -3
- package/lib/purchase.js +31 -21
- package/package.json +8 -7
- package/lib/constant.js +0 -31
|
@@ -23,6 +23,8 @@ var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
|
|
|
23
23
|
|
|
24
24
|
var _Spinner = _interopRequireDefault(require("@arcblock/ux/lib/Spinner"));
|
|
25
25
|
|
|
26
|
+
var _launcherConstant = require("@blocklet/launcher-constant");
|
|
27
|
+
|
|
26
28
|
var _util = require("../util");
|
|
27
29
|
|
|
28
30
|
var _query = _interopRequireDefault(require("../hooks/query"));
|
|
@@ -33,8 +35,6 @@ var _router = _interopRequireDefault(require("../contexts/router"));
|
|
|
33
35
|
|
|
34
36
|
var _locale = require("../contexts/locale");
|
|
35
37
|
|
|
36
|
-
var _constant = require("../constant");
|
|
37
|
-
|
|
38
38
|
var _pageHeader = _interopRequireDefault(require("./page-header"));
|
|
39
39
|
|
|
40
40
|
var _launchResultMessage = _interopRequireDefault(require("./launch-result-message"));
|
|
@@ -92,7 +92,7 @@ function OperationPage(_ref) {
|
|
|
92
92
|
}
|
|
93
93
|
} = await api.get("/public/instances/".concat(nftId, "/status"));
|
|
94
94
|
|
|
95
|
-
if (instance.status >=
|
|
95
|
+
if (instance.status >= _launcherConstant.INSTANCE_STATUS.running) {
|
|
96
96
|
const url = (0, _util.getLaunchBlockletUrl)(instance.serverUrl, blockletMetaUrl, locale);
|
|
97
97
|
setLaunchState(pre => _objectSpread(_objectSpread({}, pre), {}, {
|
|
98
98
|
status: STATUS.success,
|
|
@@ -187,7 +187,7 @@ function OperationPage(_ref) {
|
|
|
187
187
|
const Content = _styledComponents.default.div.withConfig({
|
|
188
188
|
displayName: "instance-operation__Content",
|
|
189
189
|
componentId: "sc-1fcaixs-0"
|
|
190
|
-
})(["margin:auto;height:100%;.link{color
|
|
190
|
+
})(["margin:auto;height:100%;.link{color:", ";}.link:hover{text-decoration:underline !important;}.status{color:", ";display:flex;flex-direction:column;align-items:center;.status-spinner{color:inherit !important;}.status-text{display:inline-block;padding:0 20px;max-width:420px;margin-top:24px;text-align:center;}}.button{min-width:150px;margin-bottom:100px;}.center{display:flex;align-items:center;justify-content:center;width:100%;height:100%;}"], props => props.theme.palette.primary.main, props => props.theme.palette.primary.main);
|
|
191
191
|
|
|
192
192
|
OperationPage.propTypes = {
|
|
193
193
|
type: _propTypes.default.oneOf(['launch', 'start']),
|
|
@@ -28,7 +28,7 @@ function PageHeader(_ref) {
|
|
|
28
28
|
const Content = _styledComponents.default.div.withConfig({
|
|
29
29
|
displayName: "page-header__Content",
|
|
30
30
|
componentId: "sc-2cz88s-0"
|
|
31
|
-
})(["width:100%;text-align:center;.title{font-size:24px;color:", ";}.sub-title{font-size:14px;color:", ";}"], props => props.theme.palette.common.black, props => props.theme.palette.grey[600]);
|
|
31
|
+
})(["width:100%;text-align:center;.title{font-size:24px;font-weight:700;color:", ";}.sub-title{font-size:14px;color:", ";padding:0 14px;font-weight:400;}"], props => props.theme.palette.common.black, props => props.theme.palette.grey[600]);
|
|
32
32
|
|
|
33
33
|
var _default = PageHeader;
|
|
34
34
|
exports.default = _default;
|
|
@@ -21,6 +21,8 @@ var _Spinner = _interopRequireDefault(require("@arcblock/ux/lib/Spinner"));
|
|
|
21
21
|
|
|
22
22
|
var _Dialog = _interopRequireDefault(require("@arcblock/ux/lib/Dialog"));
|
|
23
23
|
|
|
24
|
+
var _launcherConstant = require("@blocklet/launcher-constant");
|
|
25
|
+
|
|
24
26
|
var _locale = require("../../contexts/locale");
|
|
25
27
|
|
|
26
28
|
var _paying = _interopRequireDefault(require("./paying"));
|
|
@@ -34,7 +36,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
34
36
|
function CheckoutForm(_ref) {
|
|
35
37
|
let {
|
|
36
38
|
clientSecret,
|
|
37
|
-
|
|
39
|
+
onLoad
|
|
38
40
|
} = _ref;
|
|
39
41
|
const stripe = (0, _reactStripeJs.useStripe)();
|
|
40
42
|
const elements = (0, _reactStripeJs.useElements)();
|
|
@@ -104,7 +106,7 @@ function CheckoutForm(_ref) {
|
|
|
104
106
|
return;
|
|
105
107
|
}
|
|
106
108
|
|
|
107
|
-
|
|
109
|
+
onLoad();
|
|
108
110
|
};
|
|
109
111
|
|
|
110
112
|
return /*#__PURE__*/_react.default.createElement(Content, null, /*#__PURE__*/_react.default.createElement("form", {
|
|
@@ -132,7 +134,7 @@ const Content = _styledComponents.default.div.withConfig({
|
|
|
132
134
|
|
|
133
135
|
CheckoutForm.propTypes = {
|
|
134
136
|
clientSecret: _propTypes.default.string.isRequired,
|
|
135
|
-
|
|
137
|
+
onLoad: _propTypes.default.func.isRequired
|
|
136
138
|
};
|
|
137
139
|
|
|
138
140
|
function Checkout(_ref3) {
|
|
@@ -140,11 +142,16 @@ function Checkout(_ref3) {
|
|
|
140
142
|
clientSecret,
|
|
141
143
|
orderId,
|
|
142
144
|
userDid,
|
|
143
|
-
|
|
144
|
-
onCancel
|
|
145
|
+
onComplete,
|
|
146
|
+
onCancel,
|
|
147
|
+
status
|
|
145
148
|
} = _ref3;
|
|
146
149
|
const [open, setOpen] = (0, _react.useState)(true);
|
|
147
|
-
const
|
|
150
|
+
const {
|
|
151
|
+
t
|
|
152
|
+
} = (0, _locale.useLocaleContext)();
|
|
153
|
+
const [showCloseButton, setShowCloseButton] = (0, _react.useState)(true);
|
|
154
|
+
const [waitingCompleted, setWaitingCompleted] = (0, _react.useState)(status === _launcherConstant.ORDER_STATUS.paid);
|
|
148
155
|
const stripePromise = (0, _stripeJs.loadStripe)(window.env.stripePublicKey);
|
|
149
156
|
const options = {
|
|
150
157
|
clientSecret,
|
|
@@ -153,7 +160,9 @@ function Checkout(_ref3) {
|
|
|
153
160
|
}
|
|
154
161
|
};
|
|
155
162
|
|
|
156
|
-
const
|
|
163
|
+
const handleLoad = () => setWaitingCompleted(true);
|
|
164
|
+
|
|
165
|
+
const handlePaid = () => setShowCloseButton(false);
|
|
157
166
|
|
|
158
167
|
const handleClose = (_, reason) => {
|
|
159
168
|
if (reason === 'backdropClick') {
|
|
@@ -165,27 +174,31 @@ function Checkout(_ref3) {
|
|
|
165
174
|
};
|
|
166
175
|
|
|
167
176
|
return /*#__PURE__*/_react.default.createElement(_Dialog.default, {
|
|
177
|
+
title: t('common.pay'),
|
|
178
|
+
showCloseButton: showCloseButton,
|
|
168
179
|
open: open,
|
|
169
180
|
onClose: handleClose,
|
|
170
181
|
disableEscapeKeyDown: true
|
|
171
182
|
}, waitingCompleted && /*#__PURE__*/_react.default.createElement(_paying.default, {
|
|
172
183
|
orderId: orderId,
|
|
173
184
|
userDid: userDid,
|
|
174
|
-
|
|
185
|
+
onComplete: onComplete,
|
|
186
|
+
onPaid: handlePaid
|
|
175
187
|
}), !waitingCompleted && /*#__PURE__*/_react.default.createElement(_reactStripeJs.Elements, {
|
|
176
188
|
options: options,
|
|
177
189
|
stripe: stripePromise
|
|
178
190
|
}, /*#__PURE__*/_react.default.createElement(CheckoutForm, {
|
|
179
191
|
clientSecret: clientSecret,
|
|
180
|
-
|
|
192
|
+
onLoad: handleLoad
|
|
181
193
|
})));
|
|
182
194
|
}
|
|
183
195
|
|
|
184
196
|
Checkout.propTypes = {
|
|
185
197
|
clientSecret: _propTypes.default.string.isRequired,
|
|
186
198
|
orderId: _propTypes.default.string.isRequired,
|
|
199
|
+
status: _propTypes.default.number.isRequired,
|
|
187
200
|
userDid: _propTypes.default.string.isRequired,
|
|
188
|
-
|
|
201
|
+
onComplete: _propTypes.default.func.isRequired,
|
|
189
202
|
onCancel: _propTypes.default.func
|
|
190
203
|
};
|
|
191
204
|
Checkout.defaultProps = {
|
|
@@ -17,6 +17,10 @@ var _useInterval = _interopRequireDefault(require("react-use/lib/useInterval"));
|
|
|
17
17
|
|
|
18
18
|
var _Spinner = _interopRequireDefault(require("@arcblock/ux/lib/Spinner"));
|
|
19
19
|
|
|
20
|
+
var _launcherConstant = require("@blocklet/launcher-constant");
|
|
21
|
+
|
|
22
|
+
var _Check = _interopRequireDefault(require("@material-ui/icons/Check"));
|
|
23
|
+
|
|
20
24
|
var _locale = require("../../contexts/locale");
|
|
21
25
|
|
|
22
26
|
var _request = _interopRequireDefault(require("../../contexts/request"));
|
|
@@ -30,14 +34,15 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
30
34
|
function Paying(_ref) {
|
|
31
35
|
let {
|
|
32
36
|
orderId,
|
|
37
|
+
userDid,
|
|
33
38
|
onPaid,
|
|
34
|
-
|
|
39
|
+
onComplete
|
|
35
40
|
} = _ref;
|
|
36
41
|
const {
|
|
37
42
|
t
|
|
38
43
|
} = (0, _locale.useLocaleContext)();
|
|
39
44
|
const [needFetchOrderStatus, setNeedFetchOrderStatus] = (0, _react.useState)(true);
|
|
40
|
-
const [status, setStatus] = (0, _react.useState)(
|
|
45
|
+
const [status, setStatus] = (0, _react.useState)(_launcherConstant.ORDER_STATUS.unpaid);
|
|
41
46
|
const {
|
|
42
47
|
api
|
|
43
48
|
} = (0, _request.default)();
|
|
@@ -46,29 +51,36 @@ function Paying(_ref) {
|
|
|
46
51
|
data: order
|
|
47
52
|
} = await api.get("/orders/".concat(orderId, "?userDid=").concat(userDid));
|
|
48
53
|
|
|
49
|
-
if (order.status ===
|
|
54
|
+
if (order.status === _launcherConstant.ORDER_STATUS.nftSent) {
|
|
50
55
|
fetchOrder.cancel();
|
|
51
56
|
setNeedFetchOrderStatus(false);
|
|
52
|
-
setTimeout(() =>
|
|
57
|
+
setTimeout(() => onComplete({
|
|
53
58
|
nftId: order.nftId
|
|
54
59
|
}), 2000);
|
|
55
60
|
}
|
|
56
61
|
|
|
62
|
+
if (order.status >= _launcherConstant.ORDER_STATUS.paid) {
|
|
63
|
+
onPaid();
|
|
64
|
+
}
|
|
65
|
+
|
|
57
66
|
setStatus(order.status);
|
|
58
67
|
}, 3000);
|
|
59
68
|
(0, _useInterval.default)(fetchOrder, needFetchOrderStatus ? 3000 : null);
|
|
60
|
-
return /*#__PURE__*/_react.default.createElement(Content, null, status
|
|
69
|
+
return /*#__PURE__*/_react.default.createElement(Content, null, status <= _launcherConstant.ORDER_STATUS.paid && /*#__PURE__*/_react.default.createElement(_Spinner.default, null), status === _launcherConstant.ORDER_STATUS.nftSent && /*#__PURE__*/_react.default.createElement(_Check.default, {
|
|
70
|
+
className: "status--succeed_icon"
|
|
71
|
+
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
61
72
|
className: "status"
|
|
62
73
|
}, t("plan.paymentCredit.status.".concat(status))));
|
|
63
74
|
}
|
|
64
75
|
|
|
65
76
|
Paying.propTypes = {
|
|
66
77
|
orderId: _propTypes.default.string.isRequired,
|
|
78
|
+
userDid: _propTypes.default.string.isRequired,
|
|
67
79
|
onPaid: _propTypes.default.func.isRequired,
|
|
68
|
-
|
|
80
|
+
onComplete: _propTypes.default.func.isRequired
|
|
69
81
|
};
|
|
70
82
|
|
|
71
83
|
const Content = _styledComponents.default.div.withConfig({
|
|
72
84
|
displayName: "paying__Content",
|
|
73
85
|
componentId: "sc-1n02bp2-0"
|
|
74
|
-
})(["display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;.status{margin-top:32px;}"]);
|
|
86
|
+
})(["display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;.status{margin-top:32px;}.status--succeed_icon{background-color:#3ab39d;display:inline-flex;justify-content:center;align-items:center;width:48px;height:48px;border-radius:100%;color:", ";}"], props => props.theme.palette.common.white);
|
package/lib/index.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
exports.Stripe = Stripe;
|
|
6
7
|
exports.default = Launcher;
|
|
7
8
|
|
|
8
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
@@ -17,6 +18,8 @@ var _launch = _interopRequireDefault(require("./launch"));
|
|
|
17
18
|
|
|
18
19
|
var _prepare = _interopRequireDefault(require("./prepare"));
|
|
19
20
|
|
|
21
|
+
var _checkout = _interopRequireDefault(require("./components/stripe/checkout"));
|
|
22
|
+
|
|
20
23
|
var _router = _interopRequireWildcard(require("./contexts/router"));
|
|
21
24
|
|
|
22
25
|
var _locales = require("./locales");
|
|
@@ -25,12 +28,18 @@ var _request = require("./contexts/request");
|
|
|
25
28
|
|
|
26
29
|
var _locale = require("./contexts/locale");
|
|
27
30
|
|
|
31
|
+
const _excluded = ["locale", "baseURL"];
|
|
32
|
+
|
|
28
33
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
29
34
|
|
|
30
35
|
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); }
|
|
31
36
|
|
|
32
37
|
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; }
|
|
33
38
|
|
|
39
|
+
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; }
|
|
40
|
+
|
|
41
|
+
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; }
|
|
42
|
+
|
|
34
43
|
// eslint-disable-next-line react/prop-types
|
|
35
44
|
function LaunchContent(_ref) {
|
|
36
45
|
let {
|
|
@@ -61,13 +70,37 @@ function LaunchContent(_ref) {
|
|
|
61
70
|
})));
|
|
62
71
|
}
|
|
63
72
|
|
|
64
|
-
function
|
|
73
|
+
function Stripe(_ref2) {
|
|
74
|
+
let {
|
|
75
|
+
locale,
|
|
76
|
+
baseURL
|
|
77
|
+
} = _ref2,
|
|
78
|
+
rest = _objectWithoutProperties(_ref2, _excluded);
|
|
79
|
+
|
|
80
|
+
return /*#__PURE__*/_react.default.createElement(_request.RequestProvider, {
|
|
81
|
+
baseURL: baseURL
|
|
82
|
+
}, /*#__PURE__*/_react.default.createElement(_locale.LocaleProvider, {
|
|
83
|
+
translations: _locales.translations,
|
|
84
|
+
locale: locale
|
|
85
|
+
}, /*#__PURE__*/_react.default.createElement(_checkout.default, rest)));
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
Stripe.propTypes = {
|
|
89
|
+
locale: _propTypes.default.string,
|
|
90
|
+
baseURL: _propTypes.default.string
|
|
91
|
+
};
|
|
92
|
+
Stripe.defaultProps = {
|
|
93
|
+
locale: 'en',
|
|
94
|
+
baseURL: '/'
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
function Launcher(_ref3) {
|
|
65
98
|
let {
|
|
66
99
|
Route,
|
|
67
100
|
routerPrefix,
|
|
68
101
|
locale,
|
|
69
102
|
baseURL
|
|
70
|
-
} =
|
|
103
|
+
} = _ref3;
|
|
71
104
|
return /*#__PURE__*/_react.default.createElement(_request.RequestProvider, {
|
|
72
105
|
baseURL: baseURL
|
|
73
106
|
}, /*#__PURE__*/_react.default.createElement(_locale.LocaleProvider, {
|
package/lib/locales/en.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
const {
|
|
4
|
+
ORDER_STATUS
|
|
5
|
+
} = require('@blocklet/launcher-constant');
|
|
6
|
+
|
|
3
7
|
module.exports = {
|
|
4
8
|
common: {
|
|
5
9
|
paymentMethod: 'Payment Method',
|
|
@@ -21,10 +25,10 @@ module.exports = {
|
|
|
21
25
|
loadListFailed: 'Plan list load error',
|
|
22
26
|
paymentCredit: {
|
|
23
27
|
status: {
|
|
24
|
-
unpaid: 'Waiting for payment',
|
|
25
|
-
paid: 'Payment completed, waiting for order completion',
|
|
26
|
-
|
|
27
|
-
expired: 'Order has expired'
|
|
28
|
+
[ORDER_STATUS.unpaid]: 'Waiting for payment',
|
|
29
|
+
[ORDER_STATUS.paid]: 'Payment completed, waiting for order completion',
|
|
30
|
+
[ORDER_STATUS.nftSent]: 'Completed',
|
|
31
|
+
[ORDER_STATUS.expired]: 'Order has expired'
|
|
28
32
|
}
|
|
29
33
|
},
|
|
30
34
|
useCrypto: 'Crypto',
|
package/lib/locales/zh.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _launcherConstant = require("@blocklet/launcher-constant");
|
|
4
|
+
|
|
3
5
|
module.exports = {
|
|
4
6
|
common: {
|
|
5
7
|
paymentMethod: '付款方式',
|
|
@@ -21,10 +23,10 @@ module.exports = {
|
|
|
21
23
|
loadListFailed: '加载节点类型列表出错',
|
|
22
24
|
paymentCredit: {
|
|
23
25
|
status: {
|
|
24
|
-
unpaid: '支付中',
|
|
25
|
-
paid: '支付完成, 等待订单完成',
|
|
26
|
-
|
|
27
|
-
expired: '订单已过期'
|
|
26
|
+
[_launcherConstant.ORDER_STATUS.unpaid]: '支付中',
|
|
27
|
+
[_launcherConstant.ORDER_STATUS.paid]: '支付完成, 等待订单完成',
|
|
28
|
+
[_launcherConstant.ORDER_STATUS.nftSent]: '已完成',
|
|
29
|
+
[_launcherConstant.ORDER_STATUS.expired]: '订单已过期'
|
|
28
30
|
}
|
|
29
31
|
},
|
|
30
32
|
useCrypto: '数字货币支付',
|
package/lib/prepare.js
CHANGED
|
@@ -23,14 +23,14 @@ var _FormControl = _interopRequireDefault(require("@material-ui/core/FormControl
|
|
|
23
23
|
|
|
24
24
|
var _FormHelperText = _interopRequireDefault(require("@material-ui/core/FormHelperText"));
|
|
25
25
|
|
|
26
|
+
var _launcherConstant = require("@blocklet/launcher-constant");
|
|
27
|
+
|
|
26
28
|
var _pageHeader = _interopRequireDefault(require("./components/page-header"));
|
|
27
29
|
|
|
28
30
|
var _request = _interopRequireDefault(require("./contexts/request"));
|
|
29
31
|
|
|
30
32
|
var _locale = require("./contexts/locale");
|
|
31
33
|
|
|
32
|
-
var _constant = require("./constant");
|
|
33
|
-
|
|
34
34
|
var _router = _interopRequireWildcard(require("./contexts/router"));
|
|
35
35
|
|
|
36
36
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -165,7 +165,7 @@ function PreparePage() {
|
|
|
165
165
|
|
|
166
166
|
const handleCloseAuthDialog = () => setShowLaunchInstanceDialog(false);
|
|
167
167
|
|
|
168
|
-
const isRedeem = nftId ===
|
|
168
|
+
const isRedeem = nftId === _launcherConstant.REDEEM_NFT_ID;
|
|
169
169
|
const headerScope = isRedeem ? 'redeem' : 'prepare';
|
|
170
170
|
const buttonScope = isRedeem ? 'redeem' : 'launch';
|
|
171
171
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Container, null, /*#__PURE__*/_react.default.createElement(_pageHeader.default, {
|
package/lib/purchase.js
CHANGED
|
@@ -15,6 +15,8 @@ var _lodash = _interopRequireDefault(require("lodash.get"));
|
|
|
15
15
|
|
|
16
16
|
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
17
17
|
|
|
18
|
+
var _Coins = require("@styled-icons/remix-fill/Coins");
|
|
19
|
+
|
|
18
20
|
var _util = require("@ocap/util");
|
|
19
21
|
|
|
20
22
|
var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
|
|
@@ -25,17 +27,19 @@ var _Connect = _interopRequireDefault(require("@arcblock/did-connect/lib/Connect
|
|
|
25
27
|
|
|
26
28
|
var _utils = require("@arcblock/did-connect/lib/utils");
|
|
27
29
|
|
|
28
|
-
var
|
|
30
|
+
var _useMediaQuery = _interopRequireDefault(require("@material-ui/core/useMediaQuery"));
|
|
29
31
|
|
|
30
|
-
var
|
|
32
|
+
var _compactLayout = _interopRequireDefault(require("@blocklet/launcher-layout/lib/compact-layout"));
|
|
31
33
|
|
|
32
34
|
var _Empty = _interopRequireDefault(require("@arcblock/ux/lib/Empty"));
|
|
33
35
|
|
|
34
36
|
var _Tabs = _interopRequireDefault(require("@arcblock/ux/lib/Tabs"));
|
|
35
37
|
|
|
36
|
-
var
|
|
38
|
+
var _launcherConstant = require("@blocklet/launcher-constant");
|
|
37
39
|
|
|
38
|
-
var
|
|
40
|
+
var _Alert = _interopRequireDefault(require("@material-ui/lab/Alert"));
|
|
41
|
+
|
|
42
|
+
var _CreditCard = _interopRequireDefault(require("@material-ui/icons/CreditCard"));
|
|
39
43
|
|
|
40
44
|
var _plan = _interopRequireDefault(require("./components/plan"));
|
|
41
45
|
|
|
@@ -49,8 +53,6 @@ var _locale = require("./contexts/locale");
|
|
|
49
53
|
|
|
50
54
|
var _session = require("./contexts/session");
|
|
51
55
|
|
|
52
|
-
var _constant = require("./constant");
|
|
53
|
-
|
|
54
56
|
var _request = _interopRequireDefault(require("./contexts/request"));
|
|
55
57
|
|
|
56
58
|
var _router = _interopRequireWildcard(require("./contexts/router"));
|
|
@@ -61,6 +63,12 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
61
63
|
|
|
62
64
|
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; }
|
|
63
65
|
|
|
66
|
+
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; }
|
|
67
|
+
|
|
68
|
+
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; }
|
|
69
|
+
|
|
70
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
71
|
+
|
|
64
72
|
const formatTokenPrice = token => "".concat((0, _util.fromUnitToToken)(token.value, token.decimal), " ").concat(token.symbol);
|
|
65
73
|
|
|
66
74
|
const formatFiatPrice = price => "".concat(price.symbol || price.unit).concat(price.value);
|
|
@@ -77,14 +85,14 @@ function PurchasePage() {
|
|
|
77
85
|
session
|
|
78
86
|
} = (0, _session.useSessionContext)();
|
|
79
87
|
const {
|
|
80
|
-
t
|
|
81
|
-
locale
|
|
88
|
+
t
|
|
82
89
|
} = (0, _locale.useLocaleContext)();
|
|
83
90
|
const [paying, setPaying] = (0, _react.useState)(false);
|
|
84
91
|
const [paymentInfo, setPaymentInfo] = (0, _react.useState)(null);
|
|
85
92
|
const [buttonInFix, setButtonInFix] = (0, _react.useState)(false);
|
|
86
93
|
const [paymentType, setPaymentType] = (0, _react.useState)('crypto');
|
|
87
94
|
const routerPrefix = (0, _router.usePrefix)();
|
|
95
|
+
const isMobile = (0, _useMediaQuery.default)(theme => theme.breakpoints.down('sm'));
|
|
88
96
|
const userDid = query.get('userDid') || (0, _lodash.default)(session, 'user.did');
|
|
89
97
|
const isEmbed = !!query.get('blocklet_meta_url');
|
|
90
98
|
(0, _react.useEffect)(() => {
|
|
@@ -150,7 +158,7 @@ function PurchasePage() {
|
|
|
150
158
|
plans
|
|
151
159
|
} = plansState.value;
|
|
152
160
|
|
|
153
|
-
const
|
|
161
|
+
const handlePaid = _ref => {
|
|
154
162
|
let {
|
|
155
163
|
nftId
|
|
156
164
|
} = _ref;
|
|
@@ -207,10 +215,13 @@ function PurchasePage() {
|
|
|
207
215
|
try {
|
|
208
216
|
const {
|
|
209
217
|
data
|
|
210
|
-
} = await api.post(
|
|
218
|
+
} = await api.post('/pay', _objectSpread(_objectSpread({}, params), {}, {
|
|
219
|
+
userDid
|
|
220
|
+
}));
|
|
211
221
|
setPaymentInfo({
|
|
212
222
|
orderId: data.orderId,
|
|
213
|
-
clientSecret: data.clientSecret
|
|
223
|
+
clientSecret: data.clientSecret,
|
|
224
|
+
status: data.status
|
|
214
225
|
});
|
|
215
226
|
} catch (error) {
|
|
216
227
|
console.error(error);
|
|
@@ -220,15 +231,14 @@ function PurchasePage() {
|
|
|
220
231
|
};
|
|
221
232
|
|
|
222
233
|
const handleRedeem = () => {
|
|
223
|
-
|
|
224
|
-
nftId:
|
|
234
|
+
handlePaid({
|
|
235
|
+
nftId: _launcherConstant.REDEEM_NFT_ID
|
|
225
236
|
});
|
|
226
237
|
};
|
|
227
238
|
|
|
228
239
|
const PayButton = () => /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
229
240
|
onClick: () => handlePay(paymentType),
|
|
230
241
|
disabled: paying,
|
|
231
|
-
rounded: true,
|
|
232
242
|
variant: "contained",
|
|
233
243
|
color: "primary"
|
|
234
244
|
}, paying && /*#__PURE__*/_react.default.createElement(_Spinner.default, {
|
|
@@ -237,7 +247,6 @@ function PurchasePage() {
|
|
|
237
247
|
|
|
238
248
|
const RedeemButton = () => /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
239
249
|
onClick: () => handleRedeem(),
|
|
240
|
-
rounded: true,
|
|
241
250
|
variant: "outlined",
|
|
242
251
|
color: "primary",
|
|
243
252
|
style: {
|
|
@@ -259,7 +268,7 @@ function PurchasePage() {
|
|
|
259
268
|
}
|
|
260
269
|
};
|
|
261
270
|
|
|
262
|
-
return /*#__PURE__*/_react.default.createElement(Container, null, isEmbed && /*#__PURE__*/_react.default.createElement(_pageHeader.default, {
|
|
271
|
+
return /*#__PURE__*/_react.default.createElement(Container, null, isEmbed && !isMobile && /*#__PURE__*/_react.default.createElement(_pageHeader.default, {
|
|
263
272
|
title: t('plan.title'),
|
|
264
273
|
subTitle: t('plan.subTitle')
|
|
265
274
|
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -271,7 +280,7 @@ function PurchasePage() {
|
|
|
271
280
|
bottom: plans.length ? /*#__PURE__*/_react.default.createElement("div", {
|
|
272
281
|
className: "button-container container-padding ".concat(buttonInFix ? 'has-shadow' : '')
|
|
273
282
|
}, /*#__PURE__*/_react.default.createElement(RedeemButton, null), /*#__PURE__*/_react.default.createElement(PayButton, null)) : ''
|
|
274
|
-
}, !isEmbed && /*#__PURE__*/_react.default.createElement(_pageHeader.default, {
|
|
283
|
+
}, (!isEmbed || isMobile) && /*#__PURE__*/_react.default.createElement(_pageHeader.default, {
|
|
275
284
|
title: t('plan.title'),
|
|
276
285
|
subTitle: t('plan.subTitle')
|
|
277
286
|
}), plans.length ? /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -295,7 +304,7 @@ function PurchasePage() {
|
|
|
295
304
|
popup: true,
|
|
296
305
|
action: "purchase",
|
|
297
306
|
checkFn: createRequest().get,
|
|
298
|
-
onSuccess:
|
|
307
|
+
onSuccess: handlePaid,
|
|
299
308
|
onClose: handleCloseAuthDialog,
|
|
300
309
|
checkTimeout: 60 * 5000,
|
|
301
310
|
extraParams: getPurchaseParams(),
|
|
@@ -311,8 +320,9 @@ function PurchasePage() {
|
|
|
311
320
|
clientSecret: paymentInfo.clientSecret,
|
|
312
321
|
orderId: paymentInfo.orderId,
|
|
313
322
|
userDid: userDid,
|
|
314
|
-
|
|
315
|
-
onCancel: handleCancelPay
|
|
323
|
+
onComplete: handlePaid,
|
|
324
|
+
onCancel: handleCancelPay,
|
|
325
|
+
status: paymentInfo.status
|
|
316
326
|
}));
|
|
317
327
|
}
|
|
318
328
|
|
|
@@ -324,7 +334,7 @@ const Center = _styledComponents.default.div.withConfig({
|
|
|
324
334
|
const Container = _styledComponents.default.div.withConfig({
|
|
325
335
|
displayName: "purchase__Container",
|
|
326
336
|
componentId: "sc-1knmtel-1"
|
|
327
|
-
})(["display:flex;flex-direction:column;width:100%;height:100%;.select-payment{display:flex;justify-content:center;align-items:center;padding-top:30px;}.select-plan{margin:48px auto 33px;", "{margin:30px auto;}&.small-select-plan-2{max-width:780px;}&.small-select-plan-0,&.small-select-plan-1{max-width:460px;}}.page-body{position:relative;flex:1;margin-top:0;}.page-body-article{position:absolute;left:0;top:0;width:100%;height:100%;overflow-y:auto;}.selector-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:24px;margin-top:18px;}.button-container{display:flex;justify-content:center;align-items:center;padding-bottom:15px;padding-top:15px;> button{width:200px;}&.has-shadow{box-shadow:rgba(
|
|
337
|
+
})(["display:flex;flex-direction:column;width:100%;height:100%;.select-payment{display:flex;justify-content:center;align-items:center;padding-top:30px;}.select-plan{margin:48px auto 33px;", "{margin:30px auto;}&.small-select-plan-2{max-width:780px;}&.small-select-plan-0,&.small-select-plan-1{max-width:460px;}}.page-body{position:relative;flex:1;margin-top:0;}.page-body-article{position:absolute;left:0;top:0;width:100%;height:100%;overflow-y:auto;}.selector-container{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:24px;margin-top:18px;}.button-container{display:flex;justify-content:center;align-items:center;padding-bottom:15px;padding-top:15px;> button{width:200px;}&.has-shadow{box-shadow:0px -1px 1px 0px rgba(168,180,197,0.12);}}.select-body-item{cursor:pointer;transition:background-color ease 0.2s,border ease 0.2s;}.selected{border-color:", ";cursor:default;}.container-padding{padding-left:24px;padding-right:24px;}"], props => props.theme.breakpoints.down('sm'), props => props.theme.palette.primary.main);
|
|
328
338
|
|
|
329
339
|
const PaymentLabel = _styledComponents.default.div.withConfig({
|
|
330
340
|
displayName: "purchase__PaymentLabel",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blocklet/launcher-workflow",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.65",
|
|
4
4
|
"description": "Purchase components for Launcher UI",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -37,14 +37,15 @@
|
|
|
37
37
|
"react": ">=16.12.0"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@arcblock/did-connect": "^1.16.
|
|
41
|
-
"@arcblock/icons": "^1.16.
|
|
42
|
-
"@arcblock/ux": "^1.16.
|
|
43
|
-
"@blocklet/launcher-
|
|
40
|
+
"@arcblock/did-connect": "^1.16.49",
|
|
41
|
+
"@arcblock/icons": "^1.16.49",
|
|
42
|
+
"@arcblock/ux": "^1.16.49",
|
|
43
|
+
"@blocklet/launcher-constant": "1.5.65",
|
|
44
|
+
"@blocklet/launcher-layout": "1.5.65",
|
|
44
45
|
"@material-ui/core": "^4.12.3",
|
|
45
46
|
"@material-ui/icons": "^4.11.2",
|
|
46
47
|
"@material-ui/lab": "^4.0.0-alpha.60",
|
|
47
|
-
"@ocap/util": "^1.
|
|
48
|
+
"@ocap/util": "^1.15.2",
|
|
48
49
|
"@stripe/react-stripe-js": "^1.7.0",
|
|
49
50
|
"@stripe/stripe-js": "^1.22.0",
|
|
50
51
|
"@styled-icons/remix-fill": "^10.18.0",
|
|
@@ -66,5 +67,5 @@
|
|
|
66
67
|
"babel-plugin-inline-react-svg": "^2.0.1",
|
|
67
68
|
"babel-plugin-styled-components": "^1.10.7"
|
|
68
69
|
},
|
|
69
|
-
"gitHead": "
|
|
70
|
+
"gitHead": "f0d418d80249fc4d18fe2fd8481bd64a1010d4f4"
|
|
70
71
|
}
|
package/lib/constant.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.fromInstanceStatus = exports.REDEEM_NFT_ID = exports.INSTANCE_STATUS = void 0;
|
|
7
|
-
const INSTANCE_STATUS = Object.freeze({
|
|
8
|
-
unknown: -1,
|
|
9
|
-
pending: 0,
|
|
10
|
-
starting: 10,
|
|
11
|
-
running: 20,
|
|
12
|
-
restarting: 30,
|
|
13
|
-
stopping: 40,
|
|
14
|
-
stopped: 50,
|
|
15
|
-
terminated: 60,
|
|
16
|
-
expired: 70,
|
|
17
|
-
error: 80,
|
|
18
|
-
createError: 90,
|
|
19
|
-
waiting: 10000
|
|
20
|
-
});
|
|
21
|
-
exports.INSTANCE_STATUS = INSTANCE_STATUS;
|
|
22
|
-
const statusInstanceMap = Object.keys(INSTANCE_STATUS).reduce((acc, cur) => {
|
|
23
|
-
acc[INSTANCE_STATUS[cur]] = cur;
|
|
24
|
-
return acc;
|
|
25
|
-
}, {});
|
|
26
|
-
|
|
27
|
-
const fromInstanceStatus = status => statusInstanceMap[status];
|
|
28
|
-
|
|
29
|
-
exports.fromInstanceStatus = fromInstanceStatus;
|
|
30
|
-
const REDEEM_NFT_ID = 'redeem';
|
|
31
|
-
exports.REDEEM_NFT_ID = REDEEM_NFT_ID;
|