@coinflowlabs/angular 0.2.2 → 0.3.1
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/README.md +8 -0
- package/esm2022/lib/coinflow-purchase.component.mjs +2 -2
- package/esm2022/lib/common/CoinflowLibMessageHandlers.mjs +89 -22
- package/esm2022/lib/common/CoinflowTypes.mjs +1 -1
- package/esm2022/lib/common/CoinflowUtils.mjs +15 -3
- package/esm2022/lib/mobile-wallet/coinflow-apple-pay-button.component.mjs +1 -1
- package/esm2022/lib/mobile-wallet/coinflow-google-pay-button.component.mjs +1 -1
- package/esm2022/lib/mobile-wallet/coinflow-mobile-wallet-button.component.mjs +6 -1
- package/fesm2022/coinflowlabs-angular.mjs +108 -24
- package/fesm2022/coinflowlabs-angular.mjs.map +1 -1
- package/lib/common/CoinflowLibMessageHandlers.d.ts +4 -3
- package/lib/common/CoinflowTypes.d.ts +41 -14
- package/lib/common/CoinflowUtils.d.ts +2 -1
- package/lib/mobile-wallet/coinflow-apple-pay-button.component.d.ts +1 -0
- package/lib/mobile-wallet/coinflow-google-pay-button.component.d.ts +1 -0
- package/lib/mobile-wallet/coinflow-mobile-wallet-button.component.d.ts +1 -0
- package/package.json +2 -2
|
@@ -10,6 +10,11 @@ export class CoinflowMobileWalletButtonComponent {
|
|
|
10
10
|
handleMessage({ data }) {
|
|
11
11
|
try {
|
|
12
12
|
const res = JSON.parse(data);
|
|
13
|
+
console.log({ data });
|
|
14
|
+
if ('method' in res && res.data.startsWith('ERROR')) {
|
|
15
|
+
this.purchaseProps.onError?.(res.info);
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
13
18
|
if ('method' in res && res.method === 'loaded') {
|
|
14
19
|
this.opacity = 1;
|
|
15
20
|
setTimeout(() => {
|
|
@@ -88,4 +93,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
|
|
|
88
93
|
}], alignItems: [{
|
|
89
94
|
type: Input
|
|
90
95
|
}] } });
|
|
91
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29pbmZsb3ctbW9iaWxlLXdhbGxldC1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29pbmZsb3dsYWJzL3NyYy9saWIvbW9iaWxlLXdhbGxldC9jb2luZmxvdy1tb2JpbGUtd2FsbGV0LWJ1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0MsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDckUsT0FBTyxFQUlMLFdBQVcsRUFDWCxlQUFlLEVBQ2YsYUFBYSxHQUNkLE1BQU0sV0FBVyxDQUFDOztBQTBCbkIsTUFBTSxPQUFPLG1DQUFtQztJQXhCaEQ7UUFpQ0UsWUFBTyxHQUFXLEdBQUcsQ0FBQztRQUN0QixZQUFPLEdBQVcsTUFBTSxDQUFDO0tBc0MxQjtJQWpDQyxhQUFhLENBQUMsRUFBQyxJQUFJLEVBQWlCO1FBQ2xDLElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFDLElBQUksRUFBQyxDQUFDLENBQUM7WUFDcEIsSUFBSSxRQUFRLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQ3BELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN2QyxPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUksUUFBUSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUMvQyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztnQkFDakIsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDZCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztnQkFDeEIsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ1gsQ0FBQztRQUNILENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUEsQ0FBQztJQUNoQixDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCO1lBQ3JDLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUM7UUFFeEMsSUFBSSxDQUFDLFdBQVcsR0FBRztZQUNqQixHQUFHLElBQUksQ0FBQyxhQUFhO1lBQ3JCLFlBQVk7WUFDWixLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsVUFBVSxFQUFFO1lBQ3pELFdBQVcsRUFBRSxNQUFNO1lBQ25CLFdBQVcsRUFBRSxhQUFhLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7U0FDOUQsQ0FBQztJQUNKLENBQUM7K0dBL0NVLG1DQUFtQzttR0FBbkMsbUNBQW1DLHFPQXBCcEM7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQWtCSCw0REFuQkcsdUJBQXVCOzs0RkFxQnRCLG1DQUFtQztrQkF4Qi9DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1DQUFtQztvQkFDN0MsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLHVCQUF1QixDQUFDO29CQUNsQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQWtCSDtpQkFDUjs4QkFFVSxhQUFhO3NCQUFyQixLQUFLO2dCQUtHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvaW5mbG93SUZyYW1lQ29tcG9uZW50fSBmcm9tICcuLi9jb2luZmxvdy1pZnJhbWUuY29tcG9uZW50JztcbmltcG9ydCB7XG4gIENvaW5mbG93SUZyYW1lUHJvcHMsXG4gIENvaW5mbG93UHVyY2hhc2VQcm9wcyxcbiAgSUZyYW1lTWVzc2FnZUhhbmRsZXJzLFxuICBnZXRIYW5kbGVycyxcbiAgZ2V0V2FsbGV0UHVia2V5LFxuICBDb2luZmxvd1V0aWxzLFxufSBmcm9tICcuLi9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItY29pbmZsb3ctbW9iaWxlLXdhbGxldC1idXR0b24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29pbmZsb3dJRnJhbWVDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYCA8ZGl2IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyBoZWlnaHQ6IDEwMCU7XCI+XG4gICAgPGRpdlxuICAgICAgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwicHVyY2hhc2VQcm9wcy5jb2xvclwiXG4gICAgICBbc3R5bGUuZGlzcGxheV09XCJvdmVybGF5RGlzcGxheU92ZXJyaWRlID8/IGRpc3BsYXlcIlxuICAgICAgW3N0eWxlLm9wYWNpdHldPVwib3BhY2l0eVwiXG4gICAgICBbc3R5bGUuYWxpZ24taXRlbXNdPVwiYWxpZ25JdGVtc1wiXG4gICAgICBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDQwcHg7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBib3R0b206IDA7IGxlZnQ6IDA7IHotaW5kZXg6IDIwOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgcG9pbnRlci1ldmVudHM6IG5vbmU7XCJcbiAgICA+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZTsgei1pbmRleDogMTA7IGhlaWdodDogMTAwJTtcIj5cbiAgICAgIDxsaWItY29pbmZsb3ctaWZyYW1lXG4gICAgICAgIChtZXNzYWdlRXZlbnQpPVwiaGFuZGxlTWVzc2FnZSgkZXZlbnQpXCJcbiAgICAgICAgbmctaWY9XCJpZnJhbWVQcm9wcyAmJiBtZXNzYWdlSGFuZGxlcnNcIlxuICAgICAgICBbaWZyYW1lUHJvcHNdPVwiaWZyYW1lUHJvcHMhXCJcbiAgICAgICAgW21lc3NhZ2VIYW5kbGVyc109XCJtZXNzYWdlSGFuZGxlcnMhXCJcbiAgICAgID48L2xpYi1jb2luZmxvdy1pZnJhbWU+XG4gICAgPC9kaXY+XG4gIDwvZGl2PmAsXG59KVxuZXhwb3J0IGNsYXNzIENvaW5mbG93TW9iaWxlV2FsbGV0QnV0dG9uQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcHVyY2hhc2VQcm9wcyE6IENvaW5mbG93UHVyY2hhc2VQcm9wcyAmIHtcbiAgICBjb2xvcjogJ3doaXRlJyB8ICdibGFjayc7XG4gICAgb25FcnJvcj86IChtZXNzYWdlOiBzdHJpbmcpID0+IHZvaWQ7XG4gIH07XG5cbiAgQElucHV0KCkgcm91dGUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIG92ZXJsYXlEaXNwbGF5T3ZlcnJpZGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgYWxpZ25JdGVtczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBvcGFjaXR5OiBudW1iZXIgPSAwLjg7XG4gIGRpc3BsYXk6IHN0cmluZyA9ICdmbGV4JztcblxuICBpZnJhbWVQcm9wcz86IENvaW5mbG93SUZyYW1lUHJvcHM7XG4gIG1lc3NhZ2VIYW5kbGVycz86IElGcmFtZU1lc3NhZ2VIYW5kbGVycztcblxuICBoYW5kbGVNZXNzYWdlKHtkYXRhfToge2RhdGE6IHN0cmluZ30pIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzID0gSlNPTi5wYXJzZShkYXRhKTtcblxuICAgICAgY29uc29sZS5sb2coe2RhdGF9KTtcbiAgICAgIGlmICgnbWV0aG9kJyBpbiByZXMgJiYgcmVzLmRhdGEuc3RhcnRzV2l0aCgnRVJST1InKSkge1xuICAgICAgICB0aGlzLnB1cmNoYXNlUHJvcHMub25FcnJvcj8uKHJlcy5pbmZvKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoJ21ldGhvZCcgaW4gcmVzICYmIHJlcy5tZXRob2QgPT09ICdsb2FkZWQnKSB7XG4gICAgICAgIHRoaXMub3BhY2l0eSA9IDE7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgfSwgMjAwMCk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IHdhbGxldFB1YmtleSA9IGdldFdhbGxldFB1YmtleSh0aGlzLnB1cmNoYXNlUHJvcHMpO1xuICAgIHRoaXMubWVzc2FnZUhhbmRsZXJzID0gZ2V0SGFuZGxlcnModGhpcy5wdXJjaGFzZVByb3BzKTtcbiAgICB0aGlzLm1lc3NhZ2VIYW5kbGVycy5oYW5kbGVIZWlnaHRDaGFuZ2UgPVxuICAgICAgdGhpcy5wdXJjaGFzZVByb3BzLmhhbmRsZUhlaWdodENoYW5nZTtcblxuICAgIHRoaXMuaWZyYW1lUHJvcHMgPSB7XG4gICAgICAuLi50aGlzLnB1cmNoYXNlUHJvcHMsXG4gICAgICB3YWxsZXRQdWJrZXksXG4gICAgICByb3V0ZTogYC8ke3RoaXMucm91dGV9LyR7dGhpcy5wdXJjaGFzZVByb3BzPy5tZXJjaGFudElkfWAsXG4gICAgICByb3V0ZVByZWZpeDogJ2Zvcm0nLFxuICAgICAgdHJhbnNhY3Rpb246IENvaW5mbG93VXRpbHMuZ2V0VHJhbnNhY3Rpb24odGhpcy5wdXJjaGFzZVByb3BzKSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -91,12 +91,15 @@ class CoinflowUtils {
|
|
|
91
91
|
return 'http://localhost:5000';
|
|
92
92
|
return `https://api-${env}.coinflow.cash`;
|
|
93
93
|
}
|
|
94
|
-
static getCoinflowUrl({ walletPubkey, route, routePrefix, env, amount, transaction, blockchain, webhookInfo, email, loaderBackground, handleHeightChange, bankAccountLinkRedirect, additionalWallets, nearDeposit, chargebackProtectionData, merchantCss, color, rent, lockDefaultToken, token, tokens, planCode, disableApplePay, disableGooglePay, customerInfo, settlementType, lockAmount, nativeSolToConvert, theme, usePermit, transactionSigner, authOnly, deviceId, jwtToken, origins, threeDsChallengePreference, }) {
|
|
94
|
+
static getCoinflowUrl({ walletPubkey, sessionKey, route, routePrefix, env, amount, transaction, blockchain = 'solana', webhookInfo, email, loaderBackground, handleHeightChange, bankAccountLinkRedirect, additionalWallets, nearDeposit, chargebackProtectionData, merchantCss, color, rent, lockDefaultToken, token, tokens, planCode, disableApplePay, disableGooglePay, customerInfo, settlementType, lockAmount, nativeSolToConvert, theme, usePermit, transactionSigner, authOnly, deviceId, jwtToken, origins, threeDsChallengePreference, supportEmail, }) {
|
|
95
95
|
const prefix = routePrefix
|
|
96
96
|
? `/${routePrefix}/${blockchain}`
|
|
97
97
|
: `/${blockchain}`;
|
|
98
98
|
const url = new URL(prefix + route, CoinflowUtils.getCoinflowBaseUrl(env));
|
|
99
|
-
|
|
99
|
+
if (walletPubkey)
|
|
100
|
+
url.searchParams.append('pubkey', walletPubkey);
|
|
101
|
+
if (sessionKey)
|
|
102
|
+
url.searchParams.append('sessionKey', sessionKey);
|
|
100
103
|
if (transaction) {
|
|
101
104
|
url.searchParams.append('transaction', transaction);
|
|
102
105
|
}
|
|
@@ -115,6 +118,8 @@ class CoinflowUtils {
|
|
|
115
118
|
if (email) {
|
|
116
119
|
url.searchParams.append('email', email);
|
|
117
120
|
}
|
|
121
|
+
if (supportEmail)
|
|
122
|
+
url.searchParams.append('supportEmail', supportEmail);
|
|
118
123
|
if (token) {
|
|
119
124
|
url.searchParams.append('token', token.toString());
|
|
120
125
|
}
|
|
@@ -183,6 +188,8 @@ class CoinflowUtils {
|
|
|
183
188
|
return url.toString();
|
|
184
189
|
}
|
|
185
190
|
static getTransaction(props) {
|
|
191
|
+
if (!props.blockchain)
|
|
192
|
+
return undefined;
|
|
186
193
|
return this.byBlockchain(props.blockchain, {
|
|
187
194
|
solana: () => {
|
|
188
195
|
if (!('transaction' in props))
|
|
@@ -229,6 +236,9 @@ class CoinflowUtils {
|
|
|
229
236
|
const { action } = props;
|
|
230
237
|
return LZString.compressToEncodedURIComponent(JSON.stringify(action));
|
|
231
238
|
},
|
|
239
|
+
user: () => {
|
|
240
|
+
return undefined;
|
|
241
|
+
},
|
|
232
242
|
})();
|
|
233
243
|
}
|
|
234
244
|
static byBlockchain(blockchain, args) {
|
|
@@ -245,6 +255,8 @@ class CoinflowUtils {
|
|
|
245
255
|
return args.base;
|
|
246
256
|
case 'arbitrum':
|
|
247
257
|
return args.arbitrum;
|
|
258
|
+
case 'user':
|
|
259
|
+
return args.user;
|
|
248
260
|
default:
|
|
249
261
|
throw new Error('blockchain not supported!');
|
|
250
262
|
}
|
|
@@ -309,16 +321,28 @@ var IFrameMessageMethods;
|
|
|
309
321
|
IFrameMessageMethods["SendTransaction"] = "sendTransaction";
|
|
310
322
|
IFrameMessageMethods["HeightChange"] = "heightChange";
|
|
311
323
|
IFrameMessageMethods["Success"] = "success";
|
|
324
|
+
IFrameMessageMethods["Loaded"] = "loaded";
|
|
312
325
|
})(IFrameMessageMethods || (IFrameMessageMethods = {}));
|
|
313
|
-
function getWalletPubkey(
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
if ('
|
|
321
|
-
|
|
326
|
+
function getWalletPubkey(input) {
|
|
327
|
+
let wallet;
|
|
328
|
+
if ('signer' in input &&
|
|
329
|
+
typeof input.signer === 'object' &&
|
|
330
|
+
input.signer &&
|
|
331
|
+
'wallet' in input.signer)
|
|
332
|
+
wallet = input.signer.wallet;
|
|
333
|
+
else if ('wallet' in input && input.wallet)
|
|
334
|
+
wallet = input.wallet;
|
|
335
|
+
if (!wallet)
|
|
336
|
+
return;
|
|
337
|
+
if (typeof wallet === 'string')
|
|
338
|
+
return wallet;
|
|
339
|
+
if (typeof wallet === 'object') {
|
|
340
|
+
if ('publicKey' in wallet)
|
|
341
|
+
return wallet.publicKey ? wallet.publicKey.toString() : undefined;
|
|
342
|
+
if ('address' in wallet)
|
|
343
|
+
return wallet.address ? wallet.address : undefined;
|
|
344
|
+
if ('accountId' in wallet)
|
|
345
|
+
return wallet.accountId ? wallet.accountId : undefined;
|
|
322
346
|
}
|
|
323
347
|
return null;
|
|
324
348
|
}
|
|
@@ -354,17 +378,66 @@ function handleIFrameMessage(rawMessage, handlers) {
|
|
|
354
378
|
return;
|
|
355
379
|
handlers.onSuccess(walletCall.info);
|
|
356
380
|
return;
|
|
381
|
+
case IFrameMessageMethods.Loaded:
|
|
382
|
+
return;
|
|
357
383
|
}
|
|
358
384
|
console.warn(`Didn't expect to get here, handleIFrameMessage method:${method} is not one of ${Object.values(IFrameMessageMethods)}`);
|
|
359
385
|
}
|
|
360
386
|
function getHandlers(props) {
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
387
|
+
let chain;
|
|
388
|
+
let wallet;
|
|
389
|
+
if ('signer' in props &&
|
|
390
|
+
typeof props.signer === 'object' &&
|
|
391
|
+
props.signer &&
|
|
392
|
+
'blockchain' in props.signer &&
|
|
393
|
+
'wallet' in props.signer) {
|
|
394
|
+
chain = props.signer.blockchain;
|
|
395
|
+
wallet = props.signer.wallet;
|
|
396
|
+
}
|
|
397
|
+
else if ('blockchain' in props && props.blockchain) {
|
|
398
|
+
chain = props.blockchain;
|
|
399
|
+
wallet = props.wallet;
|
|
400
|
+
}
|
|
401
|
+
if (!chain) {
|
|
402
|
+
return {
|
|
403
|
+
handleSendTransaction: () => {
|
|
404
|
+
throw new Error('handleSendTransaction Not Implemented');
|
|
405
|
+
},
|
|
406
|
+
handleSignMessage: () => {
|
|
407
|
+
throw new Error('handleSendTransaction Not Implemented');
|
|
408
|
+
},
|
|
409
|
+
handleSignTransaction: () => {
|
|
410
|
+
throw new Error('handleSendTransaction Not Implemented');
|
|
411
|
+
},
|
|
412
|
+
onSuccess: props.onSuccess,
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
return CoinflowUtils.byBlockchain(chain, {
|
|
416
|
+
solana: () => getSolanaWalletHandlers({
|
|
417
|
+
wallet: wallet,
|
|
418
|
+
onSuccess: props.onSuccess,
|
|
419
|
+
}),
|
|
420
|
+
near: () => getNearWalletHandlers({
|
|
421
|
+
wallet: wallet,
|
|
422
|
+
onSuccess: props.onSuccess,
|
|
423
|
+
}),
|
|
424
|
+
eth: () => getEvmWalletHandlers({
|
|
425
|
+
wallet: wallet,
|
|
426
|
+
onSuccess: props.onSuccess,
|
|
427
|
+
}),
|
|
428
|
+
polygon: () => getEvmWalletHandlers({
|
|
429
|
+
wallet: wallet,
|
|
430
|
+
onSuccess: props.onSuccess,
|
|
431
|
+
}),
|
|
432
|
+
base: () => getEvmWalletHandlers({
|
|
433
|
+
wallet: wallet,
|
|
434
|
+
onSuccess: props.onSuccess,
|
|
435
|
+
}),
|
|
436
|
+
arbitrum: () => getEvmWalletHandlers({
|
|
437
|
+
wallet: wallet,
|
|
438
|
+
onSuccess: props.onSuccess,
|
|
439
|
+
}),
|
|
440
|
+
user: () => getSessionKeyHandlers(props),
|
|
368
441
|
})();
|
|
369
442
|
}
|
|
370
443
|
function getSolanaWalletHandlers({ wallet, onSuccess, }) {
|
|
@@ -412,11 +485,10 @@ function getSolanaTransaction(data) {
|
|
|
412
485
|
return vtx;
|
|
413
486
|
}
|
|
414
487
|
function getNearWalletHandlers({ wallet, onSuccess, }) {
|
|
415
|
-
const nearWallet = wallet;
|
|
416
488
|
return {
|
|
417
489
|
handleSendTransaction: async (transaction) => {
|
|
418
490
|
const action = JSON.parse(Buffer.from(transaction, 'base64').toString());
|
|
419
|
-
const executionOutcome = await
|
|
491
|
+
const executionOutcome = await wallet.signAndSendTransaction(action);
|
|
420
492
|
if (!executionOutcome)
|
|
421
493
|
throw new Error('Transaction did not send');
|
|
422
494
|
const { transaction: transactionResult } = executionOutcome;
|
|
@@ -426,15 +498,22 @@ function getNearWalletHandlers({ wallet, onSuccess, }) {
|
|
|
426
498
|
};
|
|
427
499
|
}
|
|
428
500
|
function getEvmWalletHandlers({ wallet, onSuccess, }) {
|
|
429
|
-
const evmWallet = wallet;
|
|
430
501
|
return {
|
|
431
502
|
handleSendTransaction: async (transaction) => {
|
|
432
503
|
const tx = JSON.parse(Buffer.from(transaction, 'base64').toString());
|
|
433
|
-
const { hash } = await
|
|
504
|
+
const { hash } = await wallet.sendTransaction(tx);
|
|
434
505
|
return hash;
|
|
435
506
|
},
|
|
436
507
|
handleSignMessage: async (message) => {
|
|
437
|
-
return
|
|
508
|
+
return wallet.signMessage(message);
|
|
509
|
+
},
|
|
510
|
+
onSuccess,
|
|
511
|
+
};
|
|
512
|
+
}
|
|
513
|
+
function getSessionKeyHandlers({ onSuccess, }) {
|
|
514
|
+
return {
|
|
515
|
+
handleSendTransaction: async () => {
|
|
516
|
+
return Promise.resolve('');
|
|
438
517
|
},
|
|
439
518
|
onSuccess,
|
|
440
519
|
};
|
|
@@ -679,7 +758,7 @@ class CoinflowPurchaseComponent {
|
|
|
679
758
|
this.iframeProps = {
|
|
680
759
|
...this.purchaseProps,
|
|
681
760
|
walletPubkey,
|
|
682
|
-
route: `/purchase/${this.purchaseProps?.merchantId}`,
|
|
761
|
+
route: `/purchase-v2/${this.purchaseProps?.merchantId}`,
|
|
683
762
|
transaction: CoinflowUtils.getTransaction(this.purchaseProps),
|
|
684
763
|
};
|
|
685
764
|
}
|
|
@@ -984,6 +1063,11 @@ class CoinflowMobileWalletButtonComponent {
|
|
|
984
1063
|
handleMessage({ data }) {
|
|
985
1064
|
try {
|
|
986
1065
|
const res = JSON.parse(data);
|
|
1066
|
+
console.log({ data });
|
|
1067
|
+
if ('method' in res && res.data.startsWith('ERROR')) {
|
|
1068
|
+
this.purchaseProps.onError?.(res.info);
|
|
1069
|
+
return;
|
|
1070
|
+
}
|
|
987
1071
|
if ('method' in res && res.method === 'loaded') {
|
|
988
1072
|
this.opacity = 1;
|
|
989
1073
|
setTimeout(() => {
|