@blocklet/launcher-workflow 1.9.64 → 2.0.0

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/purchase.js CHANGED
@@ -7,238 +7,196 @@ exports.default = void 0;
7
7
  var _react = require("react");
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _reactRouterDom = require("react-router-dom");
10
- var _lodash = _interopRequireDefault(require("lodash.get"));
11
- var _styled = _interopRequireDefault(require("@emotion/styled"));
12
- var _jsCookie = _interopRequireDefault(require("js-cookie"));
10
+ var _useAsync = _interopRequireDefault(require("react-use/lib/useAsync"));
11
+ var _reactMaterialUiCarousel = _interopRequireDefault(require("react-material-ui-carousel"));
13
12
  var _urlJoin = _interopRequireDefault(require("url-join"));
14
- var _Toast = _interopRequireDefault(require("@arcblock/ux/lib/Toast"));
13
+ var _styled = _interopRequireDefault(require("@emotion/styled"));
15
14
  var _Button = _interopRequireDefault(require("@arcblock/ux/lib/Button"));
16
- var _Spinner = _interopRequireDefault(require("@arcblock/ux/lib/Spinner"));
17
- var _compactLayout = _interopRequireDefault(require("@blocklet/launcher-layout/lib/compact-layout"));
18
- var _pageHeader = _interopRequireDefault(require("@blocklet/launcher-layout/lib/page-header"));
19
- var _constant = require("@blocklet/launcher-util/lib/constant");
20
- var _submit = _interopRequireDefault(require("@blocklet/launcher-ux/lib/hot-key/submit"));
21
- var _useMediaQuery = _interopRequireDefault(require("@mui/material/useMediaQuery"));
22
- var _Dialog = require("@arcblock/ux/lib/Dialog");
23
- var _payment = _interopRequireDefault(require("@did-pay/react/lib/payment"));
24
- var _list = _interopRequireDefault(require("@did-pay/react/lib/payment-method/list"));
25
- var _list2 = _interopRequireDefault(require("@did-pay/react/lib/plan/list"));
26
- var _query = _interopRequireDefault(require("./hooks/query"));
15
+ var _useMobile = _interopRequireDefault(require("@blocklet/launcher-ux/lib/use-mobile"));
16
+ var _Grid = _interopRequireDefault(require("@mui/material/Grid"));
17
+ var _CircularProgress = _interopRequireDefault(require("@mui/material/CircularProgress"));
18
+ var _body = _interopRequireDefault(require("./components/layout/body"));
19
+ var _plan = _interopRequireDefault(require("./components/plan"));
20
+ var _layout = _interopRequireDefault(require("./components/layout"));
21
+ var _header = _interopRequireDefault(require("./components/layout/header"));
22
+ var _footer = _interopRequireDefault(require("./components/layout/footer"));
27
23
  var _locale = require("./contexts/locale");
28
- var _session = require("./contexts/session");
29
- var _router = _interopRequireWildcard(require("./contexts/router"));
30
- var _util = require("./util");
24
+ var _request = _interopRequireDefault(require("./contexts/request"));
25
+ var _workflow = require("./contexts/workflow");
31
26
  var _jsxRuntime = require("react/jsx-runtime");
32
27
  var _templateObject;
33
- 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); }
34
- 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; }
35
28
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
36
29
  function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
30
+ 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; }
31
+ 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; }
32
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
33
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
34
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
37
35
  function PurchasePage(_ref) {
38
- var _session$user;
36
+ var _planState$value;
39
37
  let {
40
- baseURL
38
+ disableBack
41
39
  } = _ref;
42
- const query = (0, _query.default)();
43
- const navigate = (0, _reactRouterDom.useNavigate)();
44
- const disabledBack = (0, _router.useDisabledBack)();
45
- const [plan, setPlan] = (0, _react.useState)(null);
46
- const {
47
- session
48
- } = (0, _session.useSessionContext)();
49
40
  const {
50
- t,
51
- locale
41
+ t
52
42
  } = (0, _locale.useLocaleContext)();
53
- const [paying, setPaying] = (0, _react.useState)(false);
54
- const [buttonInFix, setButtonInFix] = (0, _react.useState)(false);
55
- const [paymentMethod, setPaymentMethod] = (0, _react.useState)(null);
56
- const routerPrefix = (0, _router.usePrefix)();
57
- const [planLoaded, setPlanLoaded] = (0, _react.useState)(false);
58
- const isMobile = (0, _useMediaQuery.default)(theme => theme.breakpoints.down('md'));
59
- const [searchParams] = (0, _reactRouterDom.useSearchParams)();
60
- const [openDialog, setOpenDialog] = (0, _react.useState)(false);
61
- const userDid = query.get('userDid') || (0, _lodash.default)(session, 'user.did');
62
- const isEmbed = !!query.get('blocklet_meta_url');
63
- const handlePaid = async (_ref2, decrypt) => {
64
- let {
65
- nftId,
66
- launchToken
67
- } = _ref2;
68
- if (launchToken) {
69
- _jsCookie.default.set('launch-token', decrypt(launchToken));
70
- }
71
- if (nftId !== _constant.REDEEM_NFT_ID) {
72
- const nftState = await (0, _util.getAsset)(window.blocklet.CHAIN_HOST, nftId);
73
- if ((nftState.tags || []).includes(_constant.NFT_TYPE_SERVERLESS)) {
74
- if (!isEmbed) {
75
- setOpenDialog(true);
76
- setPaying(false);
77
- return;
78
- }
79
- searchParams.set('launchType', 'serverless');
80
- }
43
+ const {
44
+ create
45
+ } = (0, _request.default)();
46
+ const {
47
+ isMobile
48
+ } = (0, _useMobile.default)();
49
+ const {
50
+ search
51
+ } = (0, _reactRouterDom.useLocation)();
52
+ const [selectedPlanId, setSelectedPlanId] = (0, _react.useState)();
53
+ const {
54
+ routerPrefix,
55
+ embed,
56
+ didPayPrefix
57
+ } = (0, _workflow.useWorkflowContext)();
58
+ const api = create({
59
+ baseURL: didPayPrefix
60
+ });
61
+ const planState = (0, _useAsync.default)(async () => {
62
+ const {
63
+ data
64
+ } = await api.get('/plans');
65
+ const plans = (data || []).sort((itemX, itemY) => itemX.weight - itemY.weight);
66
+ if (plans.length > 0) {
67
+ setSelectedPlanId(plans[0]._id);
81
68
  }
82
- navigate({
83
- pathname: (0, _router.default)(routerPrefix, "/prepare/".concat(nftId)),
84
- search: searchParams.toString()
85
- });
86
- setPaying(false);
69
+ return plans;
70
+ });
71
+ const handleSelect = planId => {
72
+ setSelectedPlanId(planId);
87
73
  };
88
- const getPurchaseParams = () => {
89
- const obj = {
90
- productId: plan ? plan._id : null,
91
- userDid
92
- };
93
- const params = {};
94
- Object.keys(obj).forEach(key => {
95
- if (obj[key] !== undefined && obj[key] !== null) {
96
- params[key] = obj[key];
74
+ const carouselProps = {
75
+ autoPlay: false,
76
+ animation: 'slide',
77
+ swipe: true,
78
+ index: 0,
79
+ indicators: true,
80
+ fullHeightHover: true,
81
+ cycleNavigation: false,
82
+ navButtonsWrapperProps: {
83
+ className: 'nav-buttons-wrapper'
84
+ },
85
+ navButtonsProps: {
86
+ style: {
87
+ margin: '0 0'
97
88
  }
98
- });
99
- return params;
100
- };
101
- const handleCancelPay = () => {
102
- setPaying(false);
103
- };
104
- const pay = () => {
105
- const params = getPurchaseParams();
106
- if (!params.productId) {
107
- return;
89
+ },
90
+ onChange: index => {
91
+ if (index < 0 || index > planState.value.length - 1) {
92
+ return;
93
+ }
94
+ handleSelect(planState.value[index]._id);
108
95
  }
109
- setPaying(true);
110
96
  };
111
- const handlePay = () => {
112
- if (!userDid) {
113
- session.login(() => pay());
114
- return;
97
+ const params = new URLSearchParams(search);
98
+ params.set('planId', selectedPlanId);
99
+ const productFeatures = [];
100
+ if (!planState.loading && ((_planState$value = planState.value) === null || _planState$value === void 0 ? void 0 : _planState$value.length) > 0) {
101
+ // TODO: Pricing Table: 临时做法
102
+ try {
103
+ const {
104
+ features
105
+ } = planState.value[0];
106
+ if (features && features.length > 0) {
107
+ const temp = JSON.parse(features[0].en);
108
+ temp.forEach(item => {
109
+ productFeatures.push({
110
+ _id: item.featureId,
111
+ name: item.name,
112
+ type: item.type
113
+ });
114
+ });
115
+ }
116
+ } catch (error) {
117
+ console.error('parse product feature failed:', error);
115
118
  }
116
- pay();
117
- };
118
- const handleRedeem = () => {
119
- handlePaid({
120
- nftId: _constant.REDEEM_NFT_ID
121
- });
122
- };
123
- const handlePayFailed = () => {
124
- setImmediate(() => {
125
- _Toast.default.error(t('common.payFailed'));
126
- setPaying(false);
127
- });
128
- };
129
- const clickBack = () => {
130
- navigate(-1);
131
- };
132
- const handlePaymentMethodsLoaded = method => {
133
- setPaymentMethod(method);
134
- };
135
- const handleSelectPaymenMethod = method => {
136
- setPlanLoaded(false);
137
- setPaymentMethod(method);
138
- };
139
- return (
140
- /*#__PURE__*/
141
- // layout-fix-container for compatibility with lower versions of safari, do not remove this className
142
- (0, _jsxRuntime.jsxs)(Container, {
143
- className: "layout-fix-container",
144
- children: [isEmbed && !isMobile && /*#__PURE__*/(0, _jsxRuntime.jsx)(_pageHeader.default, {
145
- title: t('plan.title'),
146
- subTitle: t('plan.subTitle'),
147
- onClickBack: disabledBack.includes('purchase') ? '' : clickBack
148
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
149
- className: "page-body body",
150
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
151
- className: "page-body-article",
152
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_submit.default, {
153
- disabled: paying,
154
- onConfirm: handlePay,
155
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_compactLayout.default, {
156
- onBottomFix: type => setButtonInFix(type === 'fix'),
157
- bottom: planLoaded ? /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
158
- className: "button-container container-padding ".concat(buttonInFix ? 'has-shadow' : ''),
159
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
160
- onClick: () => handleRedeem(),
161
- variant: "outlined",
162
- color: "primary",
163
- style: {
164
- marginRight: '24px'
165
- },
166
- children: t('common.redeem')
167
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Button.default, {
168
- onClick: handlePay,
169
- disabled: paying,
170
- variant: "contained",
171
- color: "primary",
172
- children: [paying && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spinner.default, {
173
- size: 14
174
- }), paying ? t('common.paying') : t('common.purchase')]
175
- })]
176
- }) : '',
177
- children: [(!isEmbed || isMobile) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_pageHeader.default, {
178
- title: t('plan.title'),
179
- subTitle: t('plan.subTitle'),
180
- onClickBack: disabledBack.includes('purchase') ? '' : clickBack
181
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
182
- className: "select-payment",
183
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_list.default, {
184
- locale: locale,
185
- baseURL: baseURL,
186
- onChange: handleSelectPaymenMethod,
187
- onLoaded: handlePaymentMethodsLoaded
188
- })
189
- }), paymentMethod && /*#__PURE__*/(0, _jsxRuntime.jsx)(_list2.default, {
190
- locale: locale,
191
- baseURL: baseURL,
192
- paymentMethod: paymentMethod,
193
- onSelect: v => setPlan(v),
194
- onLoaded: () => setPlanLoaded(true)
195
- })]
119
+ }
120
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Container, {
121
+ embed: embed,
122
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_header.default, {
123
+ title: t('purchase.pageTitle'),
124
+ disableBack: disableBack
125
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_body.default, {
126
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
127
+ className: "plan-list",
128
+ children: planState.loading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_CircularProgress.default, {}) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
129
+ children: [isMobile && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactMaterialUiCarousel.default, _objectSpread(_objectSpread({
130
+ className: "carousel"
131
+ }, carouselProps), {}, {
132
+ children: (planState.value || []).map((plan, index) => {
133
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_plan.default, {
134
+ style: {
135
+ width: '100%'
136
+ },
137
+ recommend: index === 0,
138
+ checked: plan._id === selectedPlanId,
139
+ plan: plan,
140
+ onClick: () => handleSelect(plan._id)
141
+ }, plan._id);
196
142
  })
197
- })
143
+ })), !isMobile && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Grid.default, {
144
+ container: true,
145
+ spacing: 2,
146
+ justifyContent: "space-between",
147
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Grid.default, {
148
+ item: true,
149
+ xs: 12,
150
+ sm: 12,
151
+ md: 4,
152
+ lg: 4,
153
+ xl: 3,
154
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_plan.default, {
155
+ toc: true,
156
+ productFeatures: productFeatures
157
+ })
158
+ }, "toc"), (planState.value || []).map((plan, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Grid.default, {
159
+ item: true,
160
+ xs: 12,
161
+ sm: 12,
162
+ md: 4,
163
+ lg: 4,
164
+ xl: 3,
165
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_plan.default, {
166
+ recommend: index === 0,
167
+ checked: plan._id === selectedPlanId,
168
+ plan: plan,
169
+ onClick: () => handleSelect(plan._id)
170
+ })
171
+ }, plan._id))]
172
+ })]
198
173
  })
199
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dialog.Confirm, {
200
- open: openDialog,
201
- disableEscapeKeyDown: true,
202
- title: t('purchase.serverlessDialog.title'),
203
- confirmButton: {
204
- text: t('purchase.serverlessDialog.redirectToStoreButton'),
205
- props: {
206
- variant: 'contained',
207
- color: 'secondary'
208
- }
209
- },
210
- PaperProps: {
211
- style: {
212
- maxWidth: 1200,
213
- minWidth: isMobile ? undefined : 600
214
- }
215
- },
216
- onCancel: () => setOpenDialog(false),
217
- showCancelButton: false,
218
- onConfirm: () => {
219
- window.location = _util.BLOCKLET_STORE_URL;
220
- },
221
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
222
- children: t('purchase.serverlessDialog.purchaseServerlessSuccess')
223
- })
224
- }), paying && /*#__PURE__*/(0, _jsxRuntime.jsx)(_payment.default, {
225
- baseURL: (0, _urlJoin.default)(window.location.origin, baseURL),
226
- method: paymentMethod,
227
- userDid: session === null || session === void 0 ? void 0 : (_session$user = session.user) === null || _session$user === void 0 ? void 0 : _session$user.did,
228
- productId: plan._id,
229
- onComplete: handlePaid,
230
- onFailed: handlePayFailed,
231
- onCancel: handleCancelPay
174
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_footer.default, {
175
+ className: "footer",
176
+ children: [embed && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
177
+ className: "select-space",
178
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactRouterDom.Link, {
179
+ to: (0, _urlJoin.default)(routerPrefix, "/select".concat(window.location.search)),
180
+ children: t('purchase.selectSpaceHint')
181
+ })
182
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
183
+ component: _reactRouterDom.Link,
184
+ disabled: planState.loading || !selectedPlanId,
185
+ to: (0, _urlJoin.default)(routerPrefix, "/checkout?".concat(params.toString())),
186
+ className: "button-next",
187
+ variant: "contained",
188
+ children: t('common.next')
189
+ })]
232
190
  })]
233
- })
234
- );
191
+ })]
192
+ });
235
193
  }
236
- const Container = _styled.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n .select-payment {\n display: flex;\n justify-content: center;\n align-items: center;\n padding-top: 30px;\n }\n\n .page-body {\n position: relative;\n flex: 1;\n margin-top: 0;\n }\n .page-body-article {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n overflow-y: auto;\n }\n\n .button-container {\n display: flex;\n justify-content: center;\n align-items: center;\n padding-bottom: 15px;\n padding-top: 15px;\n > button {\n width: 200px;\n }\n &.has-shadow {\n box-shadow: 0px -1px 1px 0px rgba(168, 180, 197, 0.12);\n }\n }\n .container-padding {\n padding-left: 24px;\n padding-right: 24px;\n }\n"])));
194
+ const Container = (0, _styled.default)(_layout.default)(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n .carousel {\n width: 100%;\n }\n\n .plan-list {\n display: flex;\n justify-content: center;\n align-items: center;\n margin-top: 20px;\n }\n\n .footer {\n display: flex;\n justify-content: ", ";\n align-item: center;\n margin-top: auto;\n\n @media (max-width: ", "px) {\n flex-direction: column;\n align-items: center;\n }\n\n .select-space {\n a {\n color: #000;\n }\n }\n\n .button-next {\n width: 200px;\n\n @media (max-width: ", "px) {\n width: 100%;\n margin-top: 20px;\n }\n }\n }\n"])), props => props.embed ? 'space-between' : 'flex-end', props => props.theme.breakpoints.values.sm, props => props.theme.breakpoints.values.sm);
237
195
  PurchasePage.propTypes = {
238
- baseURL: _propTypes.default.string
196
+ disableBack: _propTypes.default.bool
239
197
  };
240
198
  PurchasePage.defaultProps = {
241
- baseURL: '/'
199
+ disableBack: false
242
200
  };
243
201
  var _default = PurchasePage;
244
202
  exports.default = _default;
package/lib/util.js CHANGED
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getAsset = exports.getAPIResponseError = exports.BLOCKLET_STORE_URL = void 0;
7
7
  exports.getBlockletMetaUrl = getBlockletMetaUrl;
8
- exports.loadURL = exports.getLaunchBlockletUrl = void 0;
8
+ exports.loadURL = exports.getPrice = exports.getLaunchBlockletUrl = void 0;
9
9
  var _urlJoin = _interopRequireDefault(require("url-join"));
10
10
  var _lodash = _interopRequireDefault(require("lodash.get"));
11
11
  var _axios = _interopRequireDefault(require("axios"));
@@ -85,4 +85,20 @@ const getAsset = async (chainHost, address) => {
85
85
  }
86
86
  return state;
87
87
  };
88
- exports.getAsset = getAsset;
88
+ exports.getAsset = getAsset;
89
+ const formatOcapPrice = price => "".concat(price.value, " ").concat(price.paymentMethod.currency.symbol);
90
+ const formatStripePrice = price => "".concat(price.paymentMethod.currency.symbol || price.unit).concat(price.value);
91
+ const formatPrice = (price, providerName) => {
92
+ if (providerName === 'ocap') {
93
+ return formatOcapPrice(price);
94
+ }
95
+ return formatStripePrice(price);
96
+ };
97
+ const getPrice = (prices, providerName) => {
98
+ const price = prices.find(p => p.paymentMethod.provider.name === providerName);
99
+ if (!price) {
100
+ return '';
101
+ }
102
+ return formatPrice(price, providerName);
103
+ };
104
+ exports.getPrice = getPrice;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blocklet/launcher-workflow",
3
- "version": "1.9.64",
3
+ "version": "2.0.0",
4
4
  "description": "Purchase components for Launcher UI",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -40,9 +40,9 @@
40
40
  "@arcblock/icons": "^2.4.68",
41
41
  "@arcblock/license": "^2.4.68",
42
42
  "@arcblock/ux": "^2.4.68",
43
- "@blocklet/launcher-layout": "1.9.64",
44
- "@blocklet/launcher-util": "1.9.64",
45
- "@blocklet/launcher-ux": "1.9.64",
43
+ "@blocklet/launcher-layout": "2.0.0",
44
+ "@blocklet/launcher-util": "2.0.0",
45
+ "@blocklet/launcher-ux": "2.0.0",
46
46
  "@did-pay/react": "^1.9.38",
47
47
  "@emotion/react": "^11.10.5",
48
48
  "@emotion/styled": "^11.10.5",
@@ -58,6 +58,7 @@
58
58
  "lodash.throttle": "^4.1.1",
59
59
  "prop-types": "^15.8.1",
60
60
  "react-lottie-player": "^1.5.4",
61
+ "react-material-ui-carousel": "^3.4.2",
61
62
  "react-router-dom": "^6.8.1",
62
63
  "react-use": "^17.4.0",
63
64
  "url-join": "^4.0.1"
@@ -69,5 +70,5 @@
69
70
  "@babel/preset-react": "^7.18.6",
70
71
  "babel-plugin-inline-react-svg": "^2.0.1"
71
72
  },
72
- "gitHead": "df770b83c7ef03abdf29dcde2339ce48417b8718"
73
+ "gitHead": "d55d16c2830ccaea07e9dd5cc81e55bffa6f597d"
73
74
  }
package/lib/api.js DELETED
@@ -1,35 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = useRequest;
7
- var _axios = _interopRequireDefault(require("axios"));
8
- var _lodash = _interopRequireDefault(require("lodash.get"));
9
- var _urlJoin = _interopRequireDefault(require("url-join"));
10
- var _session = require("./contexts/session");
11
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
- _axios.default.defaults.timeout = 200000;
13
- function useRequest() {
14
- const {
15
- session
16
- } = (0, _session.useSessionContext)();
17
- const baseURL = 'https://launcher.staging.arcblock.io/';
18
- const privateRequest = _axios.default.create({
19
- baseURL
20
- });
21
- privateRequest.interceptors.request.use(config => {
22
- config.url = (0, _urlJoin.default)('/api', config.url);
23
- return config;
24
- });
25
- privateRequest.interceptors.response.use(response => response, err => {
26
- if ((0, _lodash.default)(err, 'response.status') === 401) {
27
- session.login();
28
- }
29
- return Promise.reject(err);
30
- });
31
- return {
32
- privateRequest,
33
- create: _axios.default.create
34
- };
35
- }