@multiplechain/bitcoin 0.1.12 → 0.1.14

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "namespace": "multiplechain",
3
3
  "name": "@multiplechain/bitcoin",
4
- "version": "0.1.12",
4
+ "version": "0.1.14",
5
5
  "description": "Bitcoin JS provider",
6
6
  "scripts": {
7
7
  "serve": "parcel test.html --no-cache --dist-dir test",
@@ -1,4 +1,4 @@
1
- module.exports = leather = (provider) => {
1
+ module.exports = (provider) => {
2
2
 
3
3
  if (window.crypto && !window.crypto.randomUUID) {
4
4
  window.crypto.randomUUID = () => {
@@ -70,6 +70,6 @@ module.exports = leather = (provider) => {
70
70
  supports: ['browser'],
71
71
  connect,
72
72
  download: 'https://leather.io/install-extension',
73
- detected: Boolean(typeof window.LeatherProvider !== 'undefined')
73
+ isDetected: () => Boolean(typeof window.LeatherProvider !== 'undefined')
74
74
  }
75
75
  }
@@ -0,0 +1,32 @@
1
+ module.exports = (provider) => {
2
+
3
+ const wallet = window?.trustwallet?.bitcoin;
4
+
5
+ const connect = async () => {
6
+ return new Promise(async (resolve, reject) => {
7
+ try {
8
+ wallet.requestAccounts()
9
+ .then(async () => {
10
+ resolve(wallet);
11
+ })
12
+ .catch(error => {
13
+ reject(error);
14
+ });
15
+ } catch (error) {
16
+ reject(error);
17
+ }
18
+ });
19
+ }
20
+
21
+ return {
22
+ key: 'trustwallet',
23
+ name: 'Trust Wallet',
24
+ supports: [
25
+ 'browser',
26
+ 'mobile'
27
+ ],
28
+ connect,
29
+ download: 'https://trustwallet.com/download',
30
+ isDetected : () => Boolean(window?.trustwallet?.bitcoin?.isTrust)
31
+ }
32
+ }
@@ -1,4 +1,4 @@
1
- module.exports = unisat = (provider) => {
1
+ module.exports = (provider) => {
2
2
 
3
3
  const wallet = window.unisat;
4
4
  const network = provider.testnet ? 'testnet' : 'livenet';
@@ -35,6 +35,6 @@ module.exports = unisat = (provider) => {
35
35
  supports: ['browser'],
36
36
  connect,
37
37
  download: 'https://unisat.io/download',
38
- detected: Boolean(typeof window.unisat !== 'undefined' && window.unisat.requestAccounts)
38
+ isDetected: () => Boolean(typeof window.unisat !== 'undefined' && window.unisat.requestAccounts)
39
39
  }
40
40
  }
@@ -1,6 +1,6 @@
1
1
  const {getAddress, sendBtcTransaction, BitcoinNetworkType} = require('sats-connect');
2
2
 
3
- module.exports = xverse = (provider) => {
3
+ module.exports = (provider) => {
4
4
 
5
5
  const type = provider.testnet ?
6
6
  BitcoinNetworkType.Testnet:
@@ -81,6 +81,6 @@ module.exports = xverse = (provider) => {
81
81
  ],
82
82
  connect,
83
83
  download: 'https://www.xverse.app/download',
84
- detected: Boolean(typeof window.XverseProviders !== 'undefined' && XverseProviders.BitcoinProvider)
84
+ isDetected: () => Boolean(typeof window.XverseProviders !== 'undefined' && XverseProviders.BitcoinProvider)
85
85
  }
86
86
  }
@@ -2,6 +2,7 @@ const adapters = {
2
2
  unisat: require('./adapters/unisat'),
3
3
  xverse: require('./adapters/xverse'),
4
4
  leather: require('./adapters/leather'),
5
+ trustwallet: require('./adapters/trustwallet'),
5
6
  }
6
7
 
7
8
  /**
package/src/provider.js CHANGED
@@ -41,7 +41,7 @@ class Provider {
41
41
  /**
42
42
  * @var {Object}
43
43
  */
44
- detectedWallets = [];
44
+ supportedWallets = {};
45
45
 
46
46
  /**
47
47
  * @var {Object}
@@ -77,7 +77,7 @@ class Provider {
77
77
  }
78
78
  }
79
79
 
80
- this.detectWallets();
80
+ this.initSupportedWallets();
81
81
  }
82
82
 
83
83
  getWalletOpenLink(address, amount) {
@@ -159,8 +159,9 @@ class Provider {
159
159
  */
160
160
  connectWallet(adapter) {
161
161
  return new Promise(async (resolve, reject) => {
162
- if (this.detectedWallets[adapter]) {
163
- let wallet = this.detectedWallets[adapter];
162
+ let detectedWallets = this.getDetectedWallets();
163
+ if (detectedWallets[adapter]) {
164
+ let wallet = detectedWallets[adapter];
164
165
  wallet.connect()
165
166
  .then(() => {
166
167
  resolve(wallet);
@@ -175,50 +176,39 @@ class Provider {
175
176
  }
176
177
 
177
178
  /**
178
- * @param {Array|null} filter
179
- * @returns {Array}
179
+ * @returns {void}
180
180
  */
181
- getSupportedWallets(filter) {
182
-
181
+ initSupportedWallets() {
183
182
  const Wallet = require('./wallet');
184
183
 
185
- const wallets = {
184
+ this.supportedWallets = {
186
185
  unisat: new Wallet('unisat', this),
187
186
  xverse: new Wallet('xverse', this),
188
187
  leather: new Wallet('leather', this),
188
+ trustwallet: new Wallet('trustwallet', this),
189
189
  };
190
190
 
191
- return Object.fromEntries(Object.entries(wallets).filter(([key]) => {
192
- return !filter ? true : filter.includes(key);
193
- }));
194
191
  }
195
192
 
196
193
  /**
197
194
  * @param {Array|null} filter
198
195
  * @returns {Array}
199
196
  */
200
- getDetectedWallets(filter) {
201
- return Object.fromEntries(Object.entries(this.detectedWallets).filter(([key]) => {
197
+ getSupportedWallets(filter) {
198
+ return Object.fromEntries(Object.entries(this.supportedWallets).filter(([key]) => {
202
199
  return !filter ? true : filter.includes(key);
203
200
  }));
204
201
  }
205
202
 
206
- detectWallets() {
207
- if (typeof window != 'undefined') {
208
- const Wallet = require('./wallet');
209
-
210
- if (typeof window.unisat !== 'undefined' && unisat.requestAccounts) {
211
- this.detectedWallets['unisat'] = new Wallet('unisat', this);
212
- }
213
-
214
- if (typeof window.XverseProviders !== 'undefined' && XverseProviders.BitcoinProvider) {
215
- this.detectedWallets['xverse'] = new Wallet('xverse', this);
216
- }
217
-
218
- if (typeof window.LeatherProvider !== 'undefined') {
219
- this.detectedWallets['leather'] = new Wallet('leather', this);
220
- }
221
- }
203
+ /**
204
+ * @param {Array|null} filter
205
+ * @returns {Array}
206
+ */
207
+ getDetectedWallets(filter) {
208
+ let detectedWallets = this.getSupportedWallets(filter);
209
+ return Object.fromEntries(Object.entries(detectedWallets).filter(([key, value]) => {
210
+ return value.isDetected() == undefined ? true : value.isDetected()
211
+ }));
222
212
  }
223
213
 
224
214
  Coin() {
package/src/wallet.js CHANGED
@@ -78,7 +78,7 @@ class Wallet {
78
78
  * @returns {Boolean}
79
79
  */
80
80
  isDetected() {
81
- return this.adapter.detected;
81
+ return this.adapter.isDetected();
82
82
  }
83
83
 
84
84
  /**