@blocklet/launcher-workflow 1.5.18

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/LICENSE ADDED
@@ -0,0 +1,13 @@
1
+ Copyright 2018-2022 ArcBlock
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
package/README.md ADDED
@@ -0,0 +1,25 @@
1
+ # `@blocklet/launcher-workflow`
2
+
3
+ Client package of Blocklet Launcher flow.
4
+
5
+ ## Usage
6
+
7
+ ```javascript
8
+ import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
9
+ import ServerLauncher from '@blocklet/launcher-workflow';
10
+ import { SessionProvider, useSessionContext } from '@blocklet/launcher-workflow/lib/contexts/session';
11
+ ```
12
+
13
+ ### Layout
14
+
15
+ ```jsx
16
+ <SessionProvider>
17
+ <Switch>
18
+ <Route exact path="/home" component={HomePage} />
19
+ <ServerLauncher Route={Route} locale={locale} />
20
+ <Route path="*">
21
+ <Redirect to="/" />
22
+ </Route>
23
+ </Switch>
24
+ </SessionProvider>
25
+ ```
package/lib/api.js ADDED
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useRequest;
7
+
8
+ var _axios = _interopRequireDefault(require("axios"));
9
+
10
+ var _lodash = _interopRequireDefault(require("lodash.get"));
11
+
12
+ var _urlJoin = _interopRequireDefault(require("url-join"));
13
+
14
+ var _session = require("./contexts/session");
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ _axios.default.defaults.timeout = 200000;
19
+
20
+ function useRequest() {
21
+ const {
22
+ session
23
+ } = (0, _session.useSessionContext)();
24
+ const baseURL = 'https://launcher.staging.arcblock.io/';
25
+
26
+ const privateRequest = _axios.default.create({
27
+ baseURL
28
+ });
29
+
30
+ privateRequest.interceptors.request.use(config => {
31
+ config.url = (0, _urlJoin.default)('/api', config.url);
32
+ return config;
33
+ });
34
+ privateRequest.interceptors.response.use(response => response, err => {
35
+ if ((0, _lodash.default)(err, 'response.status') === 401) {
36
+ session.login();
37
+ }
38
+
39
+ return Promise.reject(err);
40
+ });
41
+ return {
42
+ privateRequest,
43
+ create: _axios.default.create
44
+ };
45
+ }
@@ -0,0 +1,10 @@
1
+ <svg width="46" height="46" viewBox="0 0 46 46" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M1.99999 4.8999C2.60751 4.8999 3.09999 5.39239 3.09999 5.9999V17.9999C3.09999 18.1945 3.18413 18.4626 3.50417 18.7989C3.82963 19.1409 4.35257 19.4989 5.08292 19.8234C6.54086 20.4713 8.632 20.8999 11 20.8999C13.368 20.8999 15.4591 20.4713 16.9171 19.8234C17.6474 19.4989 18.1704 19.1409 18.4958 18.7989C18.8159 18.4626 18.9 18.1945 18.9 17.9999V5.9999C18.9 5.39239 19.3925 4.8999 20 4.8999C20.6075 4.8999 21.1 5.39239 21.1 5.9999V17.9999C21.1 18.9103 20.6804 19.6947 20.0895 20.3156C19.504 20.9308 18.7088 21.4347 17.8104 21.8339C16.0109 22.6335 13.602 23.0999 11 23.0999C8.39799 23.0999 5.98913 22.6335 4.18956 21.8339C3.29117 21.4347 2.49598 20.9308 1.91051 20.3156C1.31961 19.6947 0.899994 18.9103 0.899994 17.9999V5.9999C0.899994 5.39239 1.39248 4.8999 1.99999 4.8999Z" fill="#BFBFBF"/>
3
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M1.99999 10.8999C2.60751 10.8999 3.09999 11.3924 3.09999 11.9999C3.09999 12.1945 3.18413 12.4626 3.50417 12.7989C3.82963 13.1409 4.35257 13.4989 5.08292 13.8234C6.54086 14.4713 8.632 14.8999 11 14.8999C13.368 14.8999 15.4591 14.4713 16.9171 13.8234C17.6474 13.4989 18.1704 13.1409 18.4958 12.7989C18.8159 12.4626 18.9 12.1945 18.9 11.9999C18.9 11.3924 19.3925 10.8999 20 10.8999C20.6075 10.8999 21.1 11.3924 21.1 11.9999C21.1 12.9103 20.6804 13.6947 20.0895 14.3156C19.504 14.9308 18.7088 15.4347 17.8104 15.8339C16.0109 16.6335 13.602 17.0999 11 17.0999C8.39799 17.0999 5.98913 16.6335 4.18956 15.8339C3.29117 15.4347 2.49598 14.9308 1.91051 14.3156C1.31961 13.6947 0.899994 12.9103 0.899994 11.9999C0.899994 11.3924 1.39248 10.8999 1.99999 10.8999Z" fill="#BFBFBF"/>
4
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M3.50417 5.20089C3.18413 5.53718 3.09999 5.80526 3.09999 5.9999C3.09999 6.19454 3.18413 6.46263 3.50417 6.79892C3.82963 7.14091 4.35257 7.49889 5.08292 7.82343C6.54086 8.47127 8.632 8.8999 11 8.8999C13.368 8.8999 15.4591 8.47127 16.9171 7.82343C17.6474 7.49889 18.1704 7.14091 18.4958 6.79892C18.8159 6.46263 18.9 6.19454 18.9 5.9999C18.9 5.80526 18.8159 5.53718 18.4958 5.20089C18.1704 4.8589 17.6474 4.50092 16.9171 4.17638C15.4591 3.52853 13.368 3.0999 11 3.0999C8.632 3.0999 6.54086 3.52853 5.08292 4.17638C4.35257 4.50092 3.82963 4.8589 3.50417 5.20089ZM4.18956 2.16593C5.98913 1.36627 8.39799 0.899902 11 0.899902C13.602 0.899902 16.0109 1.36627 17.8104 2.16593C18.7088 2.56514 19.504 3.06903 20.0895 3.68423C20.6804 4.30513 21.1 5.08954 21.1 5.9999C21.1 6.91026 20.6804 7.69468 20.0895 8.31557C19.504 8.93077 18.7088 9.43467 17.8104 9.83388C16.0109 10.6335 13.602 11.0999 11 11.0999C8.39799 11.0999 5.98913 10.6335 4.18956 9.83388C3.29117 9.43467 2.49598 8.93077 1.91051 8.31557C1.31961 7.69468 0.899994 6.91026 0.899994 5.9999C0.899994 5.08954 1.31961 4.30513 1.91051 3.68423C2.49598 3.06903 3.29117 2.56514 4.18956 2.16593Z" fill="#BFBFBF"/>
5
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M24 24.8999C24.6075 24.8999 25.1 25.3924 25.1 25.9999V37.9999C25.1 38.1945 25.1841 38.4626 25.5042 38.7989C25.8296 39.1409 26.3526 39.4989 27.0829 39.8234C28.5409 40.4713 30.632 40.8999 33 40.8999C35.368 40.8999 37.4591 40.4713 38.9171 39.8234C39.6474 39.4989 40.1704 39.1409 40.4958 38.7989C40.8159 38.4626 40.9 38.1945 40.9 37.9999V25.9999C40.9 25.3924 41.3925 24.8999 42 24.8999C42.6075 24.8999 43.1 25.3924 43.1 25.9999V37.9999C43.1 38.9103 42.6804 39.6947 42.0895 40.3156C41.504 40.9308 40.7088 41.4347 39.8104 41.8339C38.0109 42.6335 35.602 43.0999 33 43.0999C30.398 43.0999 27.9891 42.6335 26.1896 41.8339C25.2912 41.4347 24.496 40.9308 23.9105 40.3156C23.3196 39.6947 22.9 38.9103 22.9 37.9999V25.9999C22.9 25.3924 23.3925 24.8999 24 24.8999Z" fill="#BFBFBF"/>
6
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M24 30.8999C24.6075 30.8999 25.1 31.3924 25.1 31.9999C25.1 32.1945 25.1841 32.4626 25.5042 32.7989C25.8296 33.1409 26.3526 33.4989 27.0829 33.8234C28.5409 34.4713 30.632 34.8999 33 34.8999C35.368 34.8999 37.4591 34.4713 38.9171 33.8234C39.6474 33.4989 40.1704 33.1409 40.4958 32.7989C40.8159 32.4626 40.9 32.1945 40.9 31.9999C40.9 31.3924 41.3925 30.8999 42 30.8999C42.6075 30.8999 43.1 31.3924 43.1 31.9999C43.1 32.9103 42.6804 33.6947 42.0895 34.3156C41.504 34.9308 40.7088 35.4347 39.8104 35.8339C38.0109 36.6335 35.602 37.0999 33 37.0999C30.398 37.0999 27.9891 36.6335 26.1896 35.8339C25.2912 35.4347 24.496 34.9308 23.9105 34.3156C23.3196 33.6947 22.9 32.9103 22.9 31.9999C22.9 31.3924 23.3925 30.8999 24 30.8999Z" fill="#BFBFBF"/>
7
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M25.5042 25.2009C25.1841 25.5372 25.1 25.8053 25.1 25.9999C25.1 26.1945 25.1841 26.4626 25.5042 26.7989C25.8296 27.1409 26.3526 27.4989 27.0829 27.8234C28.5409 28.4713 30.632 28.8999 33 28.8999C35.368 28.8999 37.4591 28.4713 38.9171 27.8234C39.6474 27.4989 40.1704 27.1409 40.4958 26.7989C40.8159 26.4626 40.9 26.1945 40.9 25.9999C40.9 25.8053 40.8159 25.5372 40.4958 25.2009C40.1704 24.8589 39.6474 24.5009 38.9171 24.1764C37.4591 23.5285 35.368 23.0999 33 23.0999C30.632 23.0999 28.5409 23.5285 27.0829 24.1764C26.3526 24.5009 25.8296 24.8589 25.5042 25.2009ZM26.1896 22.1659C27.9891 21.3663 30.398 20.8999 33 20.8999C35.602 20.8999 38.0109 21.3663 39.8104 22.1659C40.7088 22.5651 41.504 23.069 42.0895 23.6842C42.6804 24.3051 43.1 25.0895 43.1 25.9999C43.1 26.9103 42.6804 27.6947 42.0895 28.3156C41.504 28.9308 40.7088 29.4347 39.8104 29.8339C38.0109 30.6335 35.602 31.0999 33 31.0999C30.398 31.0999 27.9891 30.6335 26.1896 29.8339C25.2912 29.4347 24.496 28.9308 23.9105 28.3156C23.3196 27.6947 22.9 26.9103 22.9 25.9999C22.9 25.0895 23.3196 24.3051 23.9105 23.6842C24.496 23.069 25.2912 22.5651 26.1896 22.1659Z" fill="#BFBFBF"/>
8
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M28.9 3.9999C28.9 3.39239 29.3925 2.8999 30 2.8999H36C37.3526 2.8999 38.6498 3.43722 39.6062 4.39366C40.5627 5.35009 41.1 6.6473 41.1 7.9999V13.9999C41.1 14.6074 40.6075 15.0999 40 15.0999C39.3925 15.0999 38.9 14.6074 38.9 13.9999V7.9999C38.9 7.23077 38.5945 6.49315 38.0506 5.94929C37.5067 5.40544 36.7691 5.0999 36 5.0999H30C29.3925 5.0999 28.9 4.60742 28.9 3.9999Z" fill="#BFBFBF"/>
9
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M3.99999 28.8999C4.60751 28.8999 5.09999 29.3924 5.09999 29.9999V35.9999C5.09999 36.769 5.40553 37.5067 5.94938 38.0505C6.49324 38.5944 7.23087 38.8999 7.99999 38.8999H14C14.6075 38.8999 15.1 39.3924 15.1 39.9999C15.1 40.6074 14.6075 41.0999 14 41.0999H7.99999C6.64739 41.0999 5.35018 40.5626 4.39375 39.6061C3.43731 38.6497 2.89999 37.3525 2.89999 35.9999V29.9999C2.89999 29.3924 3.39248 28.8999 3.99999 28.8999Z" fill="#BFBFBF"/>
10
+ </svg>
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = LaunchResultMessage;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
13
+
14
+ var _Check = _interopRequireDefault(require("@material-ui/icons/Check"));
15
+
16
+ var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
17
+
18
+ const _excluded = ["variant", "title", "subTitle", "footer"];
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+ 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; }
23
+
24
+ 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; }
25
+
26
+ function LaunchResultMessage(_ref) {
27
+ let {
28
+ variant,
29
+ title,
30
+ subTitle,
31
+ footer
32
+ } = _ref,
33
+ props = _objectWithoutProperties(_ref, _excluded);
34
+
35
+ const Icon = variant === 'error' ? _Close.default : _Check.default;
36
+ return /*#__PURE__*/_react.default.createElement(Container, Object.assign({
37
+ variant: variant
38
+ }, props), /*#__PURE__*/_react.default.createElement("span", {
39
+ className: "icon"
40
+ }, /*#__PURE__*/_react.default.createElement(Icon, null)), title && /*#__PURE__*/_react.default.createElement("div", {
41
+ className: "result-message-title"
42
+ }, title), subTitle && /*#__PURE__*/_react.default.createElement("div", {
43
+ className: "sub-title"
44
+ }, subTitle), footer && /*#__PURE__*/_react.default.createElement("div", {
45
+ className: "result-message-footer"
46
+ }, footer));
47
+ }
48
+
49
+ LaunchResultMessage.propTypes = {
50
+ variant: _propTypes.default.oneOf(['success', 'error']),
51
+ title: _propTypes.default.string,
52
+ subTitle: _propTypes.default.string,
53
+ footer: _propTypes.default.object
54
+ };
55
+ LaunchResultMessage.defaultProps = {
56
+ variant: 'success',
57
+ title: '',
58
+ subTitle: '',
59
+ footer: null
60
+ };
61
+
62
+ const Container = _styledComponents.default.div.withConfig({
63
+ displayName: "launch-result-message__Container",
64
+ componentId: "sc-17nd2le-0"
65
+ })(["display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;width:100%;height:100%;.icon{display:inline-flex;justify-content:center;align-items:center;width:48px;height:48px;border-radius:100%;background-color:", ";color:", ";}.result-message-title{margin-top:24px;color:", ";font-size:24px;font-weight:bolder;}.sub-title{margin-top:8px;color:", ";font-size:14px;}.result-message-footer{margin-top:24px;}"], props => props.variant === 'error' ? props.theme.palette.error.main : props.theme.palette.success.main, props => props.theme.palette.common.white, props => props.variant === 'error' ? props.theme.palette.error.main : props.theme.palette.success.main, props => props.theme.palette.grey[700]);
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
11
+
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+
14
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+
16
+ function PageHeader(_ref) {
17
+ let {
18
+ title,
19
+ subTitle
20
+ } = _ref;
21
+ return /*#__PURE__*/_react.default.createElement(Content, null, /*#__PURE__*/_react.default.createElement("div", {
22
+ className: "title"
23
+ }, title), /*#__PURE__*/_react.default.createElement("div", {
24
+ className: "sub-title"
25
+ }, subTitle));
26
+ }
27
+
28
+ const Content = _styledComponents.default.div.withConfig({
29
+ displayName: "page-header__Content",
30
+ componentId: "sc-2cz88s-0"
31
+ })(["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]);
32
+
33
+ var _default = PageHeader;
34
+ exports.default = _default;
35
+ PageHeader.propTypes = {
36
+ title: _propTypes.default.string,
37
+ subTitle: _propTypes.default.string
38
+ };
39
+ PageHeader.defaultProps = {
40
+ title: '',
41
+ subTitle: ''
42
+ };
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = PaymentType;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
11
+
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+
14
+ var _locale = require("../contexts/locale");
15
+
16
+ const _excluded = ["type"];
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ 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; }
21
+
22
+ 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; }
23
+
24
+ function PaymentType(_ref) {
25
+ let {
26
+ type
27
+ } = _ref,
28
+ props = _objectWithoutProperties(_ref, _excluded);
29
+
30
+ const {
31
+ t
32
+ } = (0, _locale.useLocaleContext)();
33
+ const contentMap = {
34
+ crypto: t('plan.useCrypto'),
35
+ fiat: t('plan.useFiat')
36
+ };
37
+ return /*#__PURE__*/_react.default.createElement(Container, props, contentMap[type]);
38
+ }
39
+
40
+ const Container = _styledComponents.default.div.withConfig({
41
+ displayName: "payment-type__Container",
42
+ componentId: "sc-9eyuza-0"
43
+ })(["width:220px;height:56px;border-radius:8px;border:1px solid ", ";padding:16px;display:flex;justify-content:flex-start;align-items:center;"], props => props.theme.palette.grey[200]);
44
+
45
+ PaymentType.propTypes = {
46
+ type: _propTypes.default.oneOf(['crypto', 'fiat']).isRequired
47
+ };
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = NodeType;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
11
+
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+
14
+ var _lodash = _interopRequireDefault(require("lodash.get"));
15
+
16
+ var _core = require("@material-ui/core");
17
+
18
+ var _Check = _interopRequireDefault(require("@material-ui/icons/Check"));
19
+
20
+ var _locale = require("../contexts/locale");
21
+
22
+ const _excluded = ["data", "selected", "paymentType"];
23
+
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
+
26
+ 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; }
27
+
28
+ 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; }
29
+
30
+ function NodeType(_ref) {
31
+ let {
32
+ data,
33
+ selected,
34
+ paymentType
35
+ } = _ref,
36
+ props = _objectWithoutProperties(_ref, _excluded);
37
+
38
+ const {
39
+ locale
40
+ } = (0, _locale.useLocaleContext)();
41
+ return /*#__PURE__*/_react.default.createElement(Container, props, /*#__PURE__*/_react.default.createElement(_core.Typography, {
42
+ className: "name",
43
+ component: "span"
44
+ }, (0, _lodash.default)(data, "name.".concat(locale))), /*#__PURE__*/_react.default.createElement("div", {
45
+ className: "price",
46
+ component: "span"
47
+ }, data.prices[paymentType]), /*#__PURE__*/_react.default.createElement("div", {
48
+ className: "rights"
49
+ }, /*#__PURE__*/_react.default.createElement("ul", {
50
+ className: "rights-list"
51
+ }, data.features.map(feat => /*#__PURE__*/_react.default.createElement("li", {
52
+ key: feat[locale]
53
+ }, /*#__PURE__*/_react.default.createElement("div", {
54
+ className: "item-block"
55
+ }, /*#__PURE__*/_react.default.createElement("div", {
56
+ className: "item-icon"
57
+ }, /*#__PURE__*/_react.default.createElement(_Check.default, {
58
+ fontSize: "small"
59
+ })), /*#__PURE__*/_react.default.createElement("div", {
60
+ className: "item-desc"
61
+ }, feat[locale])))))));
62
+ }
63
+
64
+ NodeType.propTypes = {
65
+ data: _propTypes.default.object.isRequired,
66
+ paymentType: _propTypes.default.string,
67
+ selected: _propTypes.default.bool
68
+ };
69
+ NodeType.defaultProps = {
70
+ selected: false,
71
+ paymentType: 'crypto'
72
+ };
73
+
74
+ const Container = _styledComponents.default.div.withConfig({
75
+ displayName: "plan__Container",
76
+ componentId: "sc-1ts75ga-0"
77
+ })(["border:1px solid ", ";border-radius:8px;min-height:240px;padding:24px;.name{color:", ";font-size:16px;line-height:20px;font-weight:bold;}.price{margin-top:8px;font-size:24px;color:", ";}.rights{margin-top:32px;font-size:14px;& > ul li{list-style-type:none;margin:0;vertical-align:middle;color:", ";}& > ul li:not(:first-child){margin-top:16px;}.rights-list{margin-top:16px;}}.item-block{display:flex;.item-icon{margin-right:6px;font-size:14px;color:", ";flex-shrink:0;}.item-desc{flex:1;}}"], props => props.theme.palette.grey[200], props => props.theme.palette.grey[900], props => props.theme.palette.grey[900], props => props.theme.palette.grey[700], props => props.theme.palette.primary.main);
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = Checkout;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
13
+
14
+ var _stripeJs = require("@stripe/stripe-js");
15
+
16
+ var _reactStripeJs = require("@stripe/react-stripe-js");
17
+
18
+ var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
19
+
20
+ var _Spinner = _interopRequireDefault(require("@arcblock/ux/lib/Spinner"));
21
+
22
+ var _Dialog = _interopRequireDefault(require("@arcblock/ux/lib/Dialog"));
23
+
24
+ var _locale = require("../../contexts/locale");
25
+
26
+ var _paying = _interopRequireDefault(require("./paying"));
27
+
28
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
+
30
+ 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
+
32
+ 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
+
34
+ function CheckoutForm(_ref) {
35
+ let {
36
+ clientSecret,
37
+ onPaid
38
+ } = _ref;
39
+ const stripe = (0, _reactStripeJs.useStripe)();
40
+ const elements = (0, _reactStripeJs.useElements)();
41
+ const {
42
+ t
43
+ } = (0, _locale.useLocaleContext)();
44
+ const [message, setMessage] = (0, _react.useState)(null);
45
+ const [isLoading, setIsLoading] = (0, _react.useState)(false);
46
+ const [elementReady, setElementReady] = (0, _react.useState)(false);
47
+ (0, _react.useEffect)(() => {
48
+ if (!stripe) {
49
+ return;
50
+ }
51
+
52
+ if (!clientSecret) {
53
+ return;
54
+ }
55
+
56
+ stripe.retrievePaymentIntent(clientSecret).then(_ref2 => {
57
+ let {
58
+ paymentIntent
59
+ } = _ref2;
60
+
61
+ switch (paymentIntent.status) {
62
+ case 'succeeded':
63
+ setMessage(t('plan.paymentCredit.preparePayMessage.succeeded'));
64
+ break;
65
+
66
+ case 'processing':
67
+ setMessage(t('plan.paymentCredit.preparePayMessage.processing'));
68
+ break;
69
+
70
+ case 'requires_payment_method':
71
+ // 忽略该状态
72
+ break;
73
+
74
+ default:
75
+ setMessage(t('plan.paymentCredit.preparePayMessage.default'));
76
+ break;
77
+ }
78
+ });
79
+ }, [stripe, clientSecret, t]);
80
+
81
+ const handleSubmit = async e => {
82
+ e.preventDefault();
83
+
84
+ if (!stripe || !elements) {
85
+ return;
86
+ }
87
+
88
+ setIsLoading(true);
89
+ const {
90
+ error
91
+ } = await stripe.confirmPayment({
92
+ elements,
93
+ redirect: 'if_required'
94
+ });
95
+ setIsLoading(false);
96
+
97
+ if (error) {
98
+ if (error.type === 'card_error' || error.type === 'validation_error') {
99
+ setMessage(error.message);
100
+ } else {
101
+ setMessage(t('plan.paymentCredit.submitPayError'));
102
+ }
103
+
104
+ return;
105
+ }
106
+
107
+ onPaid();
108
+ };
109
+
110
+ return /*#__PURE__*/_react.default.createElement(Content, null, /*#__PURE__*/_react.default.createElement("form", {
111
+ onSubmit: handleSubmit
112
+ }, /*#__PURE__*/_react.default.createElement(_reactStripeJs.PaymentElement, {
113
+ onReady: () => setElementReady(true)
114
+ }), (!stripe || !elements || !elementReady) && /*#__PURE__*/_react.default.createElement(_Spinner.default, null), stripe && elements && elementReady && /*#__PURE__*/_react.default.createElement(_Button.default, {
115
+ id: "submit",
116
+ type: "submit",
117
+ disabled: isLoading,
118
+ rounded: true,
119
+ variant: "contained",
120
+ color: "primary"
121
+ }, isLoading ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Spinner.default, {
122
+ size: 12
123
+ }), t('common.paying')) : t('common.pay')), message && /*#__PURE__*/_react.default.createElement("div", {
124
+ id: "payment-message"
125
+ }, message)));
126
+ }
127
+
128
+ const Content = _styledComponents.default.div.withConfig({
129
+ displayName: "checkout__Content",
130
+ componentId: "sc-1ktna5f-0"
131
+ })(["display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;#submit{margin-top:16px;width:100%;}#payment-message{margin-top:16px;color:", ";}"], props => props.theme.palette.error.main);
132
+
133
+ CheckoutForm.propTypes = {
134
+ clientSecret: _propTypes.default.string.isRequired,
135
+ onPaid: _propTypes.default.func.isRequired
136
+ };
137
+
138
+ function Checkout(_ref3) {
139
+ let {
140
+ clientSecret,
141
+ orderId,
142
+ userDid,
143
+ onPaid,
144
+ onCancel
145
+ } = _ref3;
146
+ const [open, setOpen] = (0, _react.useState)(true);
147
+ const [waitingCompleted, setWaitingCompleted] = (0, _react.useState)(false);
148
+ const stripePromise = (0, _stripeJs.loadStripe)(window.env.stripePublicKey);
149
+ const options = {
150
+ clientSecret,
151
+ appearance: {
152
+ theme: 'stripe'
153
+ }
154
+ };
155
+
156
+ const handlePaid = () => setWaitingCompleted(true);
157
+
158
+ const handleClose = (_, reason) => {
159
+ if (reason === 'backdropClick') {
160
+ return;
161
+ }
162
+
163
+ setOpen(false);
164
+ onCancel();
165
+ };
166
+
167
+ return /*#__PURE__*/_react.default.createElement(_Dialog.default, {
168
+ open: open,
169
+ onClose: handleClose,
170
+ disableEscapeKeyDown: true
171
+ }, waitingCompleted && /*#__PURE__*/_react.default.createElement(_paying.default, {
172
+ orderId: orderId,
173
+ userDid: userDid,
174
+ onPaid: onPaid
175
+ }), !waitingCompleted && /*#__PURE__*/_react.default.createElement(_reactStripeJs.Elements, {
176
+ options: options,
177
+ stripe: stripePromise
178
+ }, /*#__PURE__*/_react.default.createElement(CheckoutForm, {
179
+ clientSecret: clientSecret,
180
+ onPaid: handlePaid
181
+ })));
182
+ }
183
+
184
+ Checkout.propTypes = {
185
+ clientSecret: _propTypes.default.string.isRequired,
186
+ orderId: _propTypes.default.string.isRequired,
187
+ userDid: _propTypes.default.string.isRequired,
188
+ onPaid: _propTypes.default.func.isRequired,
189
+ onCancel: _propTypes.default.func
190
+ };
191
+ Checkout.defaultProps = {
192
+ onCancel: () => {}
193
+ };
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = Paying;
7
+
8
+ var _react = _interopRequireWildcard(require("react"));
9
+
10
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
11
+
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+
14
+ var _lodash = _interopRequireDefault(require("lodash.throttle"));
15
+
16
+ var _useInterval = _interopRequireDefault(require("react-use/lib/useInterval"));
17
+
18
+ var _Spinner = _interopRequireDefault(require("@arcblock/ux/lib/Spinner"));
19
+
20
+ var _locale = require("../../contexts/locale");
21
+
22
+ var _request = _interopRequireDefault(require("../../contexts/request"));
23
+
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
+
26
+ 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); }
27
+
28
+ 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; }
29
+
30
+ function Paying(_ref) {
31
+ let {
32
+ orderId,
33
+ onPaid,
34
+ userDid
35
+ } = _ref;
36
+ const {
37
+ t
38
+ } = (0, _locale.useLocaleContext)();
39
+ const [needFetchOrderStatus, setNeedFetchOrderStatus] = (0, _react.useState)(true);
40
+ const [status, setStatus] = (0, _react.useState)('unpaid');
41
+ const {
42
+ api
43
+ } = (0, _request.default)();
44
+ const fetchOrder = (0, _lodash.default)(async () => {
45
+ const {
46
+ data: order
47
+ } = await api.get("/orders/".concat(orderId, "?userDid=").concat(userDid));
48
+
49
+ if (order.status === 'completed') {
50
+ fetchOrder.cancel();
51
+ setNeedFetchOrderStatus(false);
52
+ setTimeout(() => onPaid({
53
+ nftId: order.nftId
54
+ }), 2000);
55
+ }
56
+
57
+ setStatus(order.status);
58
+ }, 3000);
59
+ (0, _useInterval.default)(fetchOrder, needFetchOrderStatus ? 3000 : null);
60
+ return /*#__PURE__*/_react.default.createElement(Content, null, status === 'unpaid' && /*#__PURE__*/_react.default.createElement(_Spinner.default, null), /*#__PURE__*/_react.default.createElement("div", {
61
+ className: "status"
62
+ }, t("plan.paymentCredit.status.".concat(status))));
63
+ }
64
+
65
+ Paying.propTypes = {
66
+ orderId: _propTypes.default.string.isRequired,
67
+ onPaid: _propTypes.default.func.isRequired,
68
+ userDid: _propTypes.default.string.isRequired
69
+ };
70
+
71
+ const Content = _styledComponents.default.div.withConfig({
72
+ displayName: "paying__Content",
73
+ componentId: "sc-1n02bp2-0"
74
+ })(["display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;.status{margin-top:32px;}"]);
@@ -0,0 +1,31 @@
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;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useLocaleContext = exports.LocaleProvider = exports.LocaleContext = exports.LocaleConsumer = void 0;
7
+
8
+ var _context = require("@arcblock/ux/lib/Locale/context");
9
+
10
+ const {
11
+ LocaleProvider,
12
+ LocaleConsumer,
13
+ LocaleContext,
14
+ useLocaleContext
15
+ } = (0, _context.create)();
16
+ exports.useLocaleContext = useLocaleContext;
17
+ exports.LocaleContext = LocaleContext;
18
+ exports.LocaleConsumer = LocaleConsumer;
19
+ exports.LocaleProvider = LocaleProvider;