@coinflowlabs/react 0.2.1 → 0.2.3
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 +16 -0
- package/build/cjs/CoinflowPurchase.d.ts +2 -1
- package/build/cjs/CoinflowPurchase.js +3 -2
- package/build/cjs/CoinflowPurchase.js.map +1 -1
- package/build/cjs/IFrameWalletConnector.d.ts +2 -1
- package/build/cjs/IFrameWalletConnector.js +39 -6
- package/build/cjs/IFrameWalletConnector.js.map +1 -1
- package/build/esm/CoinflowPurchase.d.ts +2 -1
- package/build/esm/CoinflowPurchase.js +3 -2
- package/build/esm/CoinflowPurchase.js.map +1 -1
- package/build/esm/IFrameWalletConnector.d.ts +2 -1
- package/build/esm/IFrameWalletConnector.js +39 -6
- package/build/esm/IFrameWalletConnector.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -35,3 +35,19 @@ Props:
|
|
|
35
35
|
* `onSuccess` (optional): function to run when the purchase process is successful
|
|
36
36
|
* `transaction` (optional): transaction for the user to run which redeems their credits with your smart contract. Create this transaction just like you would for a normal user who has USDC in their account.
|
|
37
37
|
* `partialSigners` (optional): Keypairs of Partial Signers to sign the transaction with, this is necessary when initializing new accounts as the new account Keypair must sign the transaction.
|
|
38
|
+
* `debugTx` (optional): Setting this to `true` will sign the transaction with the wallet, and send the transaction with no preflight checks allowing for easier debug of any issues.
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
# Changelog
|
|
42
|
+
|
|
43
|
+
### 0.2.2,0.2.3
|
|
44
|
+
|
|
45
|
+
- Added the optional debugTx parameter to allow for easier debugging of any redeem transaction related issues.
|
|
46
|
+
|
|
47
|
+
### 0.2.1
|
|
48
|
+
|
|
49
|
+
- Added the optional partialSigners parameter to CoinflowPurchase component so redeem txs that require partial signers can be supported.
|
|
50
|
+
|
|
51
|
+
### 0.2.0
|
|
52
|
+
|
|
53
|
+
- Added the transaction optional parameter to CoinflowPurchase component enabling automatic redemption of credits on purchases.
|
|
@@ -12,6 +12,7 @@ type Props = {
|
|
|
12
12
|
onSuccess?: OnSuccessMethod;
|
|
13
13
|
transaction?: Transaction;
|
|
14
14
|
partialSigners?: Signer[];
|
|
15
|
+
debugTx?: boolean;
|
|
15
16
|
};
|
|
16
|
-
export declare function CoinflowPurchase({ wallet, merchantId, env, connection, onSuccess, transaction, amount, partialSigners, }: Props): JSX.Element | null;
|
|
17
|
+
export declare function CoinflowPurchase({ wallet, merchantId, env, connection, onSuccess, transaction, amount, partialSigners, debugTx, }: Props): JSX.Element | null;
|
|
17
18
|
export {};
|
|
@@ -6,12 +6,13 @@ var react_1 = tslib_1.__importDefault(require("react"));
|
|
|
6
6
|
var CoinflowIFrame_1 = require("./CoinflowIFrame");
|
|
7
7
|
var IFrameWalletConnector_1 = require("./IFrameWalletConnector");
|
|
8
8
|
function CoinflowPurchase(_a) {
|
|
9
|
-
var wallet = _a.wallet, merchantId = _a.merchantId, env = _a.env, connection = _a.connection, onSuccess = _a.onSuccess, transaction = _a.transaction, amount = _a.amount, partialSigners = _a.partialSigners;
|
|
9
|
+
var wallet = _a.wallet, merchantId = _a.merchantId, env = _a.env, connection = _a.connection, onSuccess = _a.onSuccess, transaction = _a.transaction, amount = _a.amount, partialSigners = _a.partialSigners, _b = _a.debugTx, debugTx = _b === void 0 ? false : _b;
|
|
10
10
|
var IFrameRef = (0, IFrameWalletConnector_1.useIframeWallet)({
|
|
11
11
|
wallet: wallet,
|
|
12
12
|
connection: connection,
|
|
13
13
|
onSuccess: onSuccess,
|
|
14
|
-
partialSigners: partialSigners
|
|
14
|
+
partialSigners: partialSigners,
|
|
15
|
+
debugTx: debugTx
|
|
15
16
|
}).IFrameRef;
|
|
16
17
|
if (!wallet.publicKey || !wallet.connected)
|
|
17
18
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoinflowPurchase.js","sourceRoot":"","sources":["../../src/CoinflowPurchase.tsx"],"names":[],"mappings":";;;;AACA,wDAA0B;AAE1B,mDAA8D;AAC9D,iEAAyE;
|
|
1
|
+
{"version":3,"file":"CoinflowPurchase.js","sourceRoot":"","sources":["../../src/CoinflowPurchase.tsx"],"names":[],"mappings":";;;;AACA,wDAA0B;AAE1B,mDAA8D;AAC9D,iEAAyE;AAczE,SAAgB,gBAAgB,CAAC,EAUzB;QATN,MAAM,YAAA,EACN,UAAU,gBAAA,EACV,GAAG,SAAA,EACH,UAAU,gBAAA,EACV,SAAS,eAAA,EACT,WAAW,iBAAA,EACX,MAAM,YAAA,EACN,cAAc,oBAAA,EACd,eAAe,EAAf,OAAO,mBAAG,KAAK,KAAA;IAER,IAAA,SAAS,GAAI,IAAA,uCAAe,EAAC;QAClC,MAAM,QAAA;QACN,UAAU,YAAA;QACV,SAAS,WAAA;QACT,cAAc,gBAAA;QACd,OAAO,SAAA;KACR,CAAC,UANc,CAMb;IAEH,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAExD,OAAO,CACL,iCAAC,+BAAc,IACb,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EACtC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,oBAAa,UAAU,CAAE,EAChC,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,GACd,CACH,CAAC;AACJ,CAAC;AA/BD,4CA+BC"}
|
|
@@ -11,8 +11,9 @@ type Props = {
|
|
|
11
11
|
connection: Connection;
|
|
12
12
|
onSuccess?: OnSuccessMethod;
|
|
13
13
|
partialSigners?: Signer[];
|
|
14
|
+
debugTx?: boolean;
|
|
14
15
|
};
|
|
15
|
-
export declare function useIframeWallet({ wallet, connection, onSuccess, partialSigners, }: Props): {
|
|
16
|
+
export declare function useIframeWallet({ wallet, connection, onSuccess, partialSigners, debugTx, }: Props): {
|
|
16
17
|
IFrameRef: import("react").RefObject<HTMLIFrameElement>;
|
|
17
18
|
};
|
|
18
19
|
export {};
|
|
@@ -7,7 +7,7 @@ var bs58_1 = tslib_1.__importDefault(require("bs58"));
|
|
|
7
7
|
var web3_js_1 = require("@solana/web3.js");
|
|
8
8
|
function useIframeWallet(_a) {
|
|
9
9
|
var _this = this;
|
|
10
|
-
var wallet = _a.wallet, connection = _a.connection, onSuccess = _a.onSuccess, partialSigners = _a.partialSigners;
|
|
10
|
+
var wallet = _a.wallet, connection = _a.connection, onSuccess = _a.onSuccess, partialSigners = _a.partialSigners, _b = _a.debugTx, debugTx = _b === void 0 ? false : _b;
|
|
11
11
|
var IFrameRef = (0, react_1.useRef)(null);
|
|
12
12
|
var sendIFrameMessage = (0, react_1.useCallback)(function (message) {
|
|
13
13
|
var _a;
|
|
@@ -33,7 +33,28 @@ function useIframeWallet(_a) {
|
|
|
33
33
|
});
|
|
34
34
|
});
|
|
35
35
|
}, [sendIFrameMessage, wallet]);
|
|
36
|
-
var
|
|
36
|
+
var sendTransactionDebug = (0, react_1.useCallback)(function (tx) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
37
|
+
var signedTx, serializedTx, signature;
|
|
38
|
+
return tslib_1.__generator(this, function (_a) {
|
|
39
|
+
switch (_a.label) {
|
|
40
|
+
case 0:
|
|
41
|
+
if (!wallet.signTransaction)
|
|
42
|
+
throw new Error('Wallet does not support sign transaction');
|
|
43
|
+
return [4 /*yield*/, wallet.signTransaction(tx)];
|
|
44
|
+
case 1:
|
|
45
|
+
signedTx = _a.sent();
|
|
46
|
+
serializedTx = signedTx.serialize();
|
|
47
|
+
return [4 /*yield*/, connection.sendRawTransaction(serializedTx, {
|
|
48
|
+
skipPreflight: true
|
|
49
|
+
})];
|
|
50
|
+
case 2:
|
|
51
|
+
signature = _a.sent();
|
|
52
|
+
sendIFrameMessage(signature);
|
|
53
|
+
return [2 /*return*/];
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}); }, [connection, sendIFrameMessage, wallet]);
|
|
57
|
+
var handleSendTransaction = (0, react_1.useCallback)(function (_a) {
|
|
37
58
|
var data = _a.data;
|
|
38
59
|
return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
39
60
|
var tx, _b, signature;
|
|
@@ -48,15 +69,27 @@ function useIframeWallet(_a) {
|
|
|
48
69
|
// Partially sign the transaction with any partial signers
|
|
49
70
|
if (partialSigners)
|
|
50
71
|
partialSigners.forEach(function (signer) { return tx.partialSign(signer); });
|
|
51
|
-
return [
|
|
72
|
+
if (!debugTx) return [3 /*break*/, 3];
|
|
73
|
+
return [4 /*yield*/, sendTransactionDebug(tx)];
|
|
52
74
|
case 2:
|
|
75
|
+
_c.sent();
|
|
76
|
+
return [2 /*return*/];
|
|
77
|
+
case 3: return [4 /*yield*/, wallet.sendTransaction(tx, connection)];
|
|
78
|
+
case 4:
|
|
53
79
|
signature = _c.sent();
|
|
54
80
|
sendIFrameMessage(signature);
|
|
55
81
|
return [2 /*return*/];
|
|
56
82
|
}
|
|
57
83
|
});
|
|
58
84
|
});
|
|
59
|
-
}, [
|
|
85
|
+
}, [
|
|
86
|
+
connection,
|
|
87
|
+
debugTx,
|
|
88
|
+
partialSigners,
|
|
89
|
+
sendIFrameMessage,
|
|
90
|
+
sendTransactionDebug,
|
|
91
|
+
wallet,
|
|
92
|
+
]);
|
|
60
93
|
var handleIframeMessages = (0, react_1.useCallback)(function (_a) {
|
|
61
94
|
var data = _a.data;
|
|
62
95
|
return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
@@ -81,7 +114,7 @@ function useIframeWallet(_a) {
|
|
|
81
114
|
case 2:
|
|
82
115
|
_c.sent();
|
|
83
116
|
return [3 /*break*/, 7];
|
|
84
|
-
case 3: return [4 /*yield*/,
|
|
117
|
+
case 3: return [4 /*yield*/, handleSendTransaction(parsedData)];
|
|
85
118
|
case 4:
|
|
86
119
|
_c.sent();
|
|
87
120
|
return [3 /*break*/, 7];
|
|
@@ -109,7 +142,7 @@ function useIframeWallet(_a) {
|
|
|
109
142
|
});
|
|
110
143
|
}, [
|
|
111
144
|
handleSignMessage,
|
|
112
|
-
|
|
145
|
+
handleSendTransaction,
|
|
113
146
|
onSuccess,
|
|
114
147
|
sendIFrameMessage,
|
|
115
148
|
wallet,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IFrameWalletConnector.js","sourceRoot":"","sources":["../../src/IFrameWalletConnector.ts"],"names":[],"mappings":";;;;AAAA,+BAAqD;AACrD,sDAA0B;AAC1B,2CAAgE;
|
|
1
|
+
{"version":3,"file":"IFrameWalletConnector.js","sourceRoot":"","sources":["../../src/IFrameWalletConnector.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ type Props = {
|
|
|
12
12
|
onSuccess?: OnSuccessMethod;
|
|
13
13
|
transaction?: Transaction;
|
|
14
14
|
partialSigners?: Signer[];
|
|
15
|
+
debugTx?: boolean;
|
|
15
16
|
};
|
|
16
|
-
export declare function CoinflowPurchase({ wallet, merchantId, env, connection, onSuccess, transaction, amount, partialSigners, }: Props): JSX.Element | null;
|
|
17
|
+
export declare function CoinflowPurchase({ wallet, merchantId, env, connection, onSuccess, transaction, amount, partialSigners, debugTx, }: Props): JSX.Element | null;
|
|
17
18
|
export {};
|
|
@@ -2,12 +2,13 @@ import React from 'react';
|
|
|
2
2
|
import { CoinflowIFrame } from './CoinflowIFrame';
|
|
3
3
|
import { useIframeWallet } from './IFrameWalletConnector';
|
|
4
4
|
export function CoinflowPurchase(_a) {
|
|
5
|
-
var wallet = _a.wallet, merchantId = _a.merchantId, env = _a.env, connection = _a.connection, onSuccess = _a.onSuccess, transaction = _a.transaction, amount = _a.amount, partialSigners = _a.partialSigners;
|
|
5
|
+
var wallet = _a.wallet, merchantId = _a.merchantId, env = _a.env, connection = _a.connection, onSuccess = _a.onSuccess, transaction = _a.transaction, amount = _a.amount, partialSigners = _a.partialSigners, _b = _a.debugTx, debugTx = _b === void 0 ? false : _b;
|
|
6
6
|
var IFrameRef = useIframeWallet({
|
|
7
7
|
wallet: wallet,
|
|
8
8
|
connection: connection,
|
|
9
9
|
onSuccess: onSuccess,
|
|
10
|
-
partialSigners: partialSigners
|
|
10
|
+
partialSigners: partialSigners,
|
|
11
|
+
debugTx: debugTx
|
|
11
12
|
}).IFrameRef;
|
|
12
13
|
if (!wallet.publicKey || !wallet.connected)
|
|
13
14
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoinflowPurchase.js","sourceRoot":"","sources":["../../src/CoinflowPurchase.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAe,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAkB,eAAe,EAAC,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"CoinflowPurchase.js","sourceRoot":"","sources":["../../src/CoinflowPurchase.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAe,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAkB,eAAe,EAAC,MAAM,yBAAyB,CAAC;AAczE,MAAM,UAAU,gBAAgB,CAAC,EAUzB;QATN,MAAM,YAAA,EACN,UAAU,gBAAA,EACV,GAAG,SAAA,EACH,UAAU,gBAAA,EACV,SAAS,eAAA,EACT,WAAW,iBAAA,EACX,MAAM,YAAA,EACN,cAAc,oBAAA,EACd,eAAe,EAAf,OAAO,mBAAG,KAAK,KAAA;IAER,IAAA,SAAS,GAAI,eAAe,CAAC;QAClC,MAAM,QAAA;QACN,UAAU,YAAA;QACV,SAAS,WAAA;QACT,cAAc,gBAAA;QACd,OAAO,SAAA;KACR,CAAC,UANc,CAMb;IAEH,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAExD,OAAO,CACL,oBAAC,cAAc,IACb,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,EACtC,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,oBAAa,UAAU,CAAE,EAChC,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,MAAM,GACd,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -11,8 +11,9 @@ type Props = {
|
|
|
11
11
|
connection: Connection;
|
|
12
12
|
onSuccess?: OnSuccessMethod;
|
|
13
13
|
partialSigners?: Signer[];
|
|
14
|
+
debugTx?: boolean;
|
|
14
15
|
};
|
|
15
|
-
export declare function useIframeWallet({ wallet, connection, onSuccess, partialSigners, }: Props): {
|
|
16
|
+
export declare function useIframeWallet({ wallet, connection, onSuccess, partialSigners, debugTx, }: Props): {
|
|
16
17
|
IFrameRef: import("react").RefObject<HTMLIFrameElement>;
|
|
17
18
|
};
|
|
18
19
|
export {};
|
|
@@ -4,7 +4,7 @@ import base58 from 'bs58';
|
|
|
4
4
|
import { Transaction } from '@solana/web3.js';
|
|
5
5
|
export function useIframeWallet(_a) {
|
|
6
6
|
var _this = this;
|
|
7
|
-
var wallet = _a.wallet, connection = _a.connection, onSuccess = _a.onSuccess, partialSigners = _a.partialSigners;
|
|
7
|
+
var wallet = _a.wallet, connection = _a.connection, onSuccess = _a.onSuccess, partialSigners = _a.partialSigners, _b = _a.debugTx, debugTx = _b === void 0 ? false : _b;
|
|
8
8
|
var IFrameRef = useRef(null);
|
|
9
9
|
var sendIFrameMessage = useCallback(function (message) {
|
|
10
10
|
var _a;
|
|
@@ -30,7 +30,28 @@ export function useIframeWallet(_a) {
|
|
|
30
30
|
});
|
|
31
31
|
});
|
|
32
32
|
}, [sendIFrameMessage, wallet]);
|
|
33
|
-
var
|
|
33
|
+
var sendTransactionDebug = useCallback(function (tx) { return __awaiter(_this, void 0, void 0, function () {
|
|
34
|
+
var signedTx, serializedTx, signature;
|
|
35
|
+
return __generator(this, function (_a) {
|
|
36
|
+
switch (_a.label) {
|
|
37
|
+
case 0:
|
|
38
|
+
if (!wallet.signTransaction)
|
|
39
|
+
throw new Error('Wallet does not support sign transaction');
|
|
40
|
+
return [4 /*yield*/, wallet.signTransaction(tx)];
|
|
41
|
+
case 1:
|
|
42
|
+
signedTx = _a.sent();
|
|
43
|
+
serializedTx = signedTx.serialize();
|
|
44
|
+
return [4 /*yield*/, connection.sendRawTransaction(serializedTx, {
|
|
45
|
+
skipPreflight: true
|
|
46
|
+
})];
|
|
47
|
+
case 2:
|
|
48
|
+
signature = _a.sent();
|
|
49
|
+
sendIFrameMessage(signature);
|
|
50
|
+
return [2 /*return*/];
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}); }, [connection, sendIFrameMessage, wallet]);
|
|
54
|
+
var handleSendTransaction = useCallback(function (_a) {
|
|
34
55
|
var data = _a.data;
|
|
35
56
|
return __awaiter(_this, void 0, void 0, function () {
|
|
36
57
|
var tx, _b, signature;
|
|
@@ -45,15 +66,27 @@ export function useIframeWallet(_a) {
|
|
|
45
66
|
// Partially sign the transaction with any partial signers
|
|
46
67
|
if (partialSigners)
|
|
47
68
|
partialSigners.forEach(function (signer) { return tx.partialSign(signer); });
|
|
48
|
-
return [
|
|
69
|
+
if (!debugTx) return [3 /*break*/, 3];
|
|
70
|
+
return [4 /*yield*/, sendTransactionDebug(tx)];
|
|
49
71
|
case 2:
|
|
72
|
+
_c.sent();
|
|
73
|
+
return [2 /*return*/];
|
|
74
|
+
case 3: return [4 /*yield*/, wallet.sendTransaction(tx, connection)];
|
|
75
|
+
case 4:
|
|
50
76
|
signature = _c.sent();
|
|
51
77
|
sendIFrameMessage(signature);
|
|
52
78
|
return [2 /*return*/];
|
|
53
79
|
}
|
|
54
80
|
});
|
|
55
81
|
});
|
|
56
|
-
}, [
|
|
82
|
+
}, [
|
|
83
|
+
connection,
|
|
84
|
+
debugTx,
|
|
85
|
+
partialSigners,
|
|
86
|
+
sendIFrameMessage,
|
|
87
|
+
sendTransactionDebug,
|
|
88
|
+
wallet,
|
|
89
|
+
]);
|
|
57
90
|
var handleIframeMessages = useCallback(function (_a) {
|
|
58
91
|
var data = _a.data;
|
|
59
92
|
return __awaiter(_this, void 0, void 0, function () {
|
|
@@ -78,7 +111,7 @@ export function useIframeWallet(_a) {
|
|
|
78
111
|
case 2:
|
|
79
112
|
_c.sent();
|
|
80
113
|
return [3 /*break*/, 7];
|
|
81
|
-
case 3: return [4 /*yield*/,
|
|
114
|
+
case 3: return [4 /*yield*/, handleSendTransaction(parsedData)];
|
|
82
115
|
case 4:
|
|
83
116
|
_c.sent();
|
|
84
117
|
return [3 /*break*/, 7];
|
|
@@ -106,7 +139,7 @@ export function useIframeWallet(_a) {
|
|
|
106
139
|
});
|
|
107
140
|
}, [
|
|
108
141
|
handleSignMessage,
|
|
109
|
-
|
|
142
|
+
handleSendTransaction,
|
|
110
143
|
onSuccess,
|
|
111
144
|
sendIFrameMessage,
|
|
112
145
|
wallet,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IFrameWalletConnector.js","sourceRoot":"","sources":["../../src/IFrameWalletConnector.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,WAAW,EAAE,SAAS,EAAE,MAAM,EAAC,MAAM,OAAO,CAAC;AACrD,OAAO,MAAM,MAAM,MAAM,CAAC;AAC1B,OAAO,EAAqB,WAAW,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"IFrameWalletConnector.js","sourceRoot":"","sources":["../../src/IFrameWalletConnector.ts"],"names":[],"mappings":"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"}
|