react-native-zcash 0.10.1-beta.4 → 0.10.2
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/CHANGELOG.md +7 -0
- package/android/src/main/assets/co.electriccoin.zcash/checkpoint/mainnet/3160000.json +8 -0
- package/android/src/main/java/app/edge/rnzcash/RNZcashModule.kt +26 -0
- package/ios/RNZcash.m +6 -0
- package/ios/RNZcash.swift +36 -0
- package/ios/ZCashLightClientKit/Resources/checkpoints/mainnet/3160000.json +8 -0
- package/lib/rnzcash.rn.js +16 -3
- package/lib/rnzcash.rn.js.map +1 -1
- package/lib/src/react-native.d.ts +1 -0
- package/package.json +1 -1
- package/src/react-native.ts +10 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.10.2 (2025-12-09)
|
|
6
|
+
|
|
7
|
+
- changed: Updated checkpoints
|
|
8
|
+
|
|
9
|
+
## 0.10.1 (2025-12-04)
|
|
10
|
+
|
|
11
|
+
- added: `proposeFulfillingPaymentURI` support
|
|
5
12
|
- changed: iOS - Emit balance after rescan
|
|
6
13
|
- fixed: iOS - get UUID after starting synchronizer
|
|
7
14
|
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"network": "main",
|
|
3
|
+
"height": "3160000",
|
|
4
|
+
"hash": "00000000007294917ca2f5438063867b43d25a2b33def9b4a68abe5f719f6db9",
|
|
5
|
+
"time": 1765039381,
|
|
6
|
+
"saplingTree": "0112d997cbe0eccd50813d236cba5601f34d1f2a459b0432f72515a7edb49fbc0f001f0000000169b9006aa303d0c5b58173784651489e27ba170657e37abf7a04bebb58a71762000120f2b52b790031e59999e5b730aecb739b5138e82deea86f907bdb3673419e6e00000168ea3e02a0165d395b37426efec4edb41cda7a71e48a62929f19f909746a0e0901e9a8f8e0dd32093b2a1e3b1498e1705c6e2111b476a9512e4f3dbd896a3d74090001dc3989e3e806c29ed2fc0cb5e2120d98b2381d0b5e9897e6e6d8090b6f3c44420105c333d7b6b61b4e3be4ec79bc3c35541e2a206f23d4532060e68ff1e133326c000194ba2edf2d7ccac96720733e47705dcdf8861639357e16599e294b1b5222765c0001931c48ea50688eae5e54c24d0df7a6b00ce498f92eb5e1cfd6a2d87d8ebd5364017d1ce2f0839bdbf1bad7ae37f845e7fe2116e0c1197536bfbad549f3876c3c590000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
|
|
7
|
+
"orchardTree": "01ac6ac262348758b10ebd2a375a53c2ae3e56846ff944eed716adc75511eba711001f011f03dcbf53672c6a7cbbfb3c160fc92817596f3f2c3ed9a1846d1b495a64292900000000018da4c23772aea79403e0d47de6975bac0f98468b12fd456d8df34829177a9b3c000001866e792c115d20cb559cdfc338d3f6ed03733d83a8d6085710b61ad3b372be3b000167a1ee64197011967558bf27c17eff616b39ad88bbd17fdcc5e9604aac045f210000017d0cfdb32fb0402baa233ee25fb846e508ddaf53d2ce655ffde7525ac32262180199c8414fa10f1f53c79fc94977a367fb3357ea1f3e4819afeecfe4c1ef1c420d012b54af73061b31e19c35e5ab464cda2485e2c236a00b8cfebc2be9e90effd01301905ae252612cb76b216003da1312a47b95d56eeb72207dbe5a809e53032157270000017c8ece2b2ab2355d809b58809b21c7a5e95cfc693cd689387f7533ec8749261e01cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
|
|
8
|
+
}
|
|
@@ -381,6 +381,32 @@ class RNZcashModule(
|
|
|
381
381
|
}
|
|
382
382
|
}
|
|
383
383
|
|
|
384
|
+
@ReactMethod
|
|
385
|
+
fun proposeFulfillingPaymentURI(
|
|
386
|
+
alias: String,
|
|
387
|
+
paymentUri: String,
|
|
388
|
+
promise: Promise,
|
|
389
|
+
) {
|
|
390
|
+
val wallet = getWallet(alias)
|
|
391
|
+
wallet.coroutineScope.launch {
|
|
392
|
+
try {
|
|
393
|
+
val account = wallet.getAccounts().first()
|
|
394
|
+
val proposal =
|
|
395
|
+
wallet.proposeFulfillingPaymentUri(
|
|
396
|
+
account,
|
|
397
|
+
paymentUri,
|
|
398
|
+
)
|
|
399
|
+
val map = Arguments.createMap()
|
|
400
|
+
map.putInt("transactionCount", proposal.transactionCount())
|
|
401
|
+
map.putString("totalFee", proposal.totalFeeRequired().value.toString())
|
|
402
|
+
map.putString("proposalBase64", Base64.getEncoder().encodeToString(proposal.toByteArray()))
|
|
403
|
+
promise.resolve(map)
|
|
404
|
+
} catch (t: Throwable) {
|
|
405
|
+
promise.reject("Err", t)
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
|
|
384
410
|
@kotlin.ExperimentalStdlibApi
|
|
385
411
|
@ReactMethod
|
|
386
412
|
fun createTransfer(
|
package/ios/RNZcash.m
CHANGED
|
@@ -39,6 +39,12 @@ resolver:(RCTPromiseResolveBlock)resolve
|
|
|
39
39
|
rejecter:(RCTPromiseRejectBlock)reject
|
|
40
40
|
)
|
|
41
41
|
|
|
42
|
+
RCT_EXTERN_METHOD(proposeFulfillingPaymentURI:(NSString *)alias
|
|
43
|
+
:(NSString *)paymentUri
|
|
44
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
45
|
+
rejecter:(RCTPromiseRejectBlock)reject
|
|
46
|
+
)
|
|
47
|
+
|
|
42
48
|
RCT_EXTERN_METHOD(createTransfer:(NSString *)alias
|
|
43
49
|
:(NSString *)proposalBase64
|
|
44
50
|
:(NSString *)seed
|
package/ios/RNZcash.swift
CHANGED
|
@@ -247,6 +247,42 @@ class RNZcash: RCTEventEmitter {
|
|
|
247
247
|
}
|
|
248
248
|
}
|
|
249
249
|
|
|
250
|
+
@objc func proposeFulfillingPaymentURI(
|
|
251
|
+
_ alias: String, _ paymentUri: String,
|
|
252
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
253
|
+
rejecter reject: @escaping RCTPromiseRejectBlock
|
|
254
|
+
) {
|
|
255
|
+
Task {
|
|
256
|
+
if let wallet = await synchronizerStore.get(alias) {
|
|
257
|
+
do {
|
|
258
|
+
guard let accountUUID = wallet.accountUUID else {
|
|
259
|
+
reject("proposeFulfillingPaymentURI", "Account UUID not found", genericError)
|
|
260
|
+
return
|
|
261
|
+
}
|
|
262
|
+
let proposal = try await wallet.synchronizer.proposefulfillingPaymentURI(
|
|
263
|
+
paymentUri,
|
|
264
|
+
accountUUID: accountUUID
|
|
265
|
+
)
|
|
266
|
+
let proposalBase64 = try proposal.inner.serializedData().base64EncodedString()
|
|
267
|
+
|
|
268
|
+
let out: NSMutableDictionary = [
|
|
269
|
+
"proposalBase64": proposalBase64,
|
|
270
|
+
"transactionCount": proposal.transactionCount(),
|
|
271
|
+
"totalFee": String(proposal.totalFeeRequired().amount),
|
|
272
|
+
]
|
|
273
|
+
|
|
274
|
+
resolve(out)
|
|
275
|
+
} catch let error as ZcashError {
|
|
276
|
+
reject("proposeFulfillingPaymentURI", "Failed to propose from payment URI", error)
|
|
277
|
+
} catch {
|
|
278
|
+
reject("proposeFulfillingPaymentURI", "Unknown error", error)
|
|
279
|
+
}
|
|
280
|
+
} else {
|
|
281
|
+
reject("proposeFulfillingPaymentURI", "Wallet does not exist", genericError)
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
|
|
250
286
|
@objc func createTransfer(
|
|
251
287
|
_ alias: String, _ proposalBase64: String, _ seed: String,
|
|
252
288
|
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"network": "main",
|
|
3
|
+
"height": "3160000",
|
|
4
|
+
"hash": "00000000007294917ca2f5438063867b43d25a2b33def9b4a68abe5f719f6db9",
|
|
5
|
+
"time": 1765039381,
|
|
6
|
+
"saplingTree": "0112d997cbe0eccd50813d236cba5601f34d1f2a459b0432f72515a7edb49fbc0f001f0000000169b9006aa303d0c5b58173784651489e27ba170657e37abf7a04bebb58a71762000120f2b52b790031e59999e5b730aecb739b5138e82deea86f907bdb3673419e6e00000168ea3e02a0165d395b37426efec4edb41cda7a71e48a62929f19f909746a0e0901e9a8f8e0dd32093b2a1e3b1498e1705c6e2111b476a9512e4f3dbd896a3d74090001dc3989e3e806c29ed2fc0cb5e2120d98b2381d0b5e9897e6e6d8090b6f3c44420105c333d7b6b61b4e3be4ec79bc3c35541e2a206f23d4532060e68ff1e133326c000194ba2edf2d7ccac96720733e47705dcdf8861639357e16599e294b1b5222765c0001931c48ea50688eae5e54c24d0df7a6b00ce498f92eb5e1cfd6a2d87d8ebd5364017d1ce2f0839bdbf1bad7ae37f845e7fe2116e0c1197536bfbad549f3876c3c590000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
|
|
7
|
+
"orchardTree": "01ac6ac262348758b10ebd2a375a53c2ae3e56846ff944eed716adc75511eba711001f011f03dcbf53672c6a7cbbfb3c160fc92817596f3f2c3ed9a1846d1b495a64292900000000018da4c23772aea79403e0d47de6975bac0f98468b12fd456d8df34829177a9b3c000001866e792c115d20cb559cdfc338d3f6ed03733d83a8d6085710b61ad3b372be3b000167a1ee64197011967558bf27c17eff616b39ad88bbd17fdcc5e9604aac045f210000017d0cfdb32fb0402baa233ee25fb846e508ddaf53d2ce655ffde7525ac32262180199c8414fa10f1f53c79fc94977a367fb3357ea1f3e4819afeecfe4c1ef1c420d012b54af73061b31e19c35e5ab464cda2485e2c236a00b8cfebc2be9e90effd01301905ae252612cb76b216003da1312a47b95d56eeb72207dbe5a809e53032157270000017c8ece2b2ab2355d809b58809b21c7a5e95cfc693cd689387f7533ec8749261e01cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
|
|
8
|
+
}
|
package/lib/rnzcash.rn.js
CHANGED
|
@@ -171,13 +171,26 @@ var Synchronizer = /*#__PURE__*/function () {
|
|
|
171
171
|
return proposeTransfer;
|
|
172
172
|
}();
|
|
173
173
|
|
|
174
|
+
_proto.proposeFulfillingPaymentURI = /*#__PURE__*/function () {
|
|
175
|
+
var _proposeFulfillingPaymentURI = _asyncToGenerator(function* (paymentUri) {
|
|
176
|
+
var result = yield RNZcash.proposeFulfillingPaymentURI(this.alias, paymentUri);
|
|
177
|
+
return result;
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
function proposeFulfillingPaymentURI(_x10) {
|
|
181
|
+
return _proposeFulfillingPaymentURI.apply(this, arguments);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
return proposeFulfillingPaymentURI;
|
|
185
|
+
}();
|
|
186
|
+
|
|
174
187
|
_proto.createTransfer = /*#__PURE__*/function () {
|
|
175
188
|
var _createTransfer = _asyncToGenerator(function* (opts) {
|
|
176
189
|
var result = yield RNZcash.createTransfer(this.alias, opts.proposalBase64, opts.mnemonicSeed);
|
|
177
190
|
return result;
|
|
178
191
|
});
|
|
179
192
|
|
|
180
|
-
function createTransfer(
|
|
193
|
+
function createTransfer(_x11) {
|
|
181
194
|
return _createTransfer.apply(this, arguments);
|
|
182
195
|
}
|
|
183
196
|
|
|
@@ -190,7 +203,7 @@ var Synchronizer = /*#__PURE__*/function () {
|
|
|
190
203
|
return result;
|
|
191
204
|
});
|
|
192
205
|
|
|
193
|
-
function shieldFunds(
|
|
206
|
+
function shieldFunds(_x12) {
|
|
194
207
|
return _shieldFunds.apply(this, arguments);
|
|
195
208
|
}
|
|
196
209
|
|
|
@@ -250,7 +263,7 @@ var makeSynchronizer = /*#__PURE__*/function () {
|
|
|
250
263
|
return synchronizer;
|
|
251
264
|
});
|
|
252
265
|
|
|
253
|
-
return function makeSynchronizer(
|
|
266
|
+
return function makeSynchronizer(_x13) {
|
|
254
267
|
return _ref2.apply(this, arguments);
|
|
255
268
|
};
|
|
256
269
|
}();
|
package/lib/rnzcash.rn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rnzcash.rn.js","sources":["../src/react-native.ts"],"sourcesContent":["import { add } from 'biggystring'\nimport {\n EventSubscription,\n NativeEventEmitter,\n NativeModules\n} from 'react-native'\n\nimport {\n Addresses,\n CreateTransferOpts,\n InitializerConfig,\n Network,\n ProposalSuccess,\n ProposeTransferOpts,\n ShieldFundsInfo,\n SpendFailure,\n SynchronizerCallbacks\n} from './types'\nexport * from './types'\n\nconst { RNZcash } = NativeModules\n\ntype Callback = (...args: any[]) => any\n\nexport const Tools = {\n deriveViewingKey: async (\n seedBytesHex: string,\n network: Network\n ): Promise<string> => {\n const result = await RNZcash.deriveViewingKey(seedBytesHex, network)\n return result\n },\n getBirthdayHeight: async (host: string, port: number): Promise<number> => {\n const result = await RNZcash.getBirthdayHeight(host, port)\n return result\n },\n isValidAddress: async (\n address: string,\n network: Network = 'mainnet'\n ): Promise<boolean> => {\n const result = await RNZcash.isValidAddress(address, network)\n return result\n }\n}\n\nexport class Synchronizer {\n eventEmitter: NativeEventEmitter\n subscriptions: EventSubscription[]\n alias: string\n network: Network\n\n constructor(alias: string, network: Network) {\n this.eventEmitter = new NativeEventEmitter(RNZcash)\n this.subscriptions = []\n this.alias = alias\n this.network = network\n }\n\n async stop(): Promise<string> {\n this.unsubscribe()\n const result = await RNZcash.stop(this.alias)\n return result\n }\n\n async initialize(initializerConfig: InitializerConfig): Promise<void> {\n await RNZcash.initialize(\n initializerConfig.mnemonicSeed,\n initializerConfig.birthdayHeight,\n initializerConfig.alias,\n initializerConfig.networkName,\n initializerConfig.defaultHost,\n initializerConfig.defaultPort,\n initializerConfig.newWallet\n )\n }\n\n async deriveUnifiedAddress(): Promise<Addresses> {\n const result = await RNZcash.deriveUnifiedAddress(this.alias)\n return result\n }\n\n async getLatestNetworkHeight(alias: string): Promise<number> {\n const result = await RNZcash.getLatestNetworkHeight(alias)\n return result\n }\n\n async rescan(): Promise<void> {\n await RNZcash.rescan(this.alias)\n }\n\n async proposeTransfer(opts: ProposeTransferOpts): Promise<ProposalSuccess> {\n const result = await RNZcash.proposeTransfer(\n this.alias,\n opts.zatoshi,\n opts.toAddress,\n opts.memo\n )\n return result\n }\n\n async createTransfer(\n opts: CreateTransferOpts\n ): Promise<string | SpendFailure> {\n const result = await RNZcash.createTransfer(\n this.alias,\n opts.proposalBase64,\n opts.mnemonicSeed\n )\n return result\n }\n\n async shieldFunds(shieldFundsInfo: ShieldFundsInfo): Promise<string> {\n const result = await RNZcash.shieldFunds(\n this.alias,\n shieldFundsInfo.seed,\n shieldFundsInfo.memo,\n shieldFundsInfo.threshold\n )\n return result\n }\n\n // Events\n\n subscribe({\n onBalanceChanged,\n onStatusChanged,\n onTransactionsChanged,\n onUpdate,\n onError\n }: SynchronizerCallbacks): void {\n this.setListener('BalanceEvent', event => {\n const {\n transparentAvailableZatoshi,\n transparentTotalZatoshi,\n saplingAvailableZatoshi,\n saplingTotalZatoshi,\n orchardAvailableZatoshi,\n orchardTotalZatoshi\n } = event\n\n event.availableZatoshi = add(\n add(transparentAvailableZatoshi, saplingAvailableZatoshi),\n orchardAvailableZatoshi\n )\n event.totalZatoshi = add(\n add(transparentTotalZatoshi, saplingTotalZatoshi),\n orchardTotalZatoshi\n )\n onBalanceChanged(event)\n })\n this.setListener('StatusEvent', onStatusChanged)\n this.setListener('TransactionEvent', onTransactionsChanged)\n this.setListener('UpdateEvent', onUpdate)\n this.setListener('ErrorEvent', onError)\n }\n\n private setListener<T>(\n eventName: string,\n callback: Callback = (t: any) => null\n ): void {\n this.subscriptions.push(\n this.eventEmitter.addListener(eventName, arg =>\n arg.alias === this.alias ? callback(arg) : null\n )\n )\n }\n\n unsubscribe(): void {\n this.subscriptions.forEach(subscription => {\n subscription.remove()\n })\n }\n}\n\nexport const makeSynchronizer = async (\n initializerConfig: InitializerConfig\n): Promise<Synchronizer> => {\n const synchronizer = new Synchronizer(\n initializerConfig.alias,\n initializerConfig.networkName\n )\n await synchronizer.initialize(initializerConfig)\n return synchronizer\n}\n"],"names":["RNZcash","NativeModules","Tools","deriveViewingKey","seedBytesHex","network","result","getBirthdayHeight","host","port","isValidAddress","address","Synchronizer","alias","eventEmitter","NativeEventEmitter","subscriptions","stop","unsubscribe","initialize","initializerConfig","mnemonicSeed","birthdayHeight","networkName","defaultHost","defaultPort","newWallet","deriveUnifiedAddress","getLatestNetworkHeight","rescan","proposeTransfer","opts","zatoshi","toAddress","memo","createTransfer","proposalBase64","shieldFunds","shieldFundsInfo","seed","threshold","subscribe","onBalanceChanged","onStatusChanged","onTransactionsChanged","onUpdate","onError","setListener","event","transparentAvailableZatoshi","transparentTotalZatoshi","saplingAvailableZatoshi","saplingTotalZatoshi","orchardAvailableZatoshi","orchardTotalZatoshi","availableZatoshi","add","totalZatoshi","eventName","callback","t","push","addListener","arg","forEach","subscription","remove","makeSynchronizer","synchronizer"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rnzcash.rn.js","sources":["../src/react-native.ts"],"sourcesContent":["import { add } from 'biggystring'\nimport {\n EventSubscription,\n NativeEventEmitter,\n NativeModules\n} from 'react-native'\n\nimport {\n Addresses,\n CreateTransferOpts,\n InitializerConfig,\n Network,\n ProposalSuccess,\n ProposeTransferOpts,\n ShieldFundsInfo,\n SpendFailure,\n SynchronizerCallbacks\n} from './types'\nexport * from './types'\n\nconst { RNZcash } = NativeModules\n\ntype Callback = (...args: any[]) => any\n\nexport const Tools = {\n deriveViewingKey: async (\n seedBytesHex: string,\n network: Network\n ): Promise<string> => {\n const result = await RNZcash.deriveViewingKey(seedBytesHex, network)\n return result\n },\n getBirthdayHeight: async (host: string, port: number): Promise<number> => {\n const result = await RNZcash.getBirthdayHeight(host, port)\n return result\n },\n isValidAddress: async (\n address: string,\n network: Network = 'mainnet'\n ): Promise<boolean> => {\n const result = await RNZcash.isValidAddress(address, network)\n return result\n }\n}\n\nexport class Synchronizer {\n eventEmitter: NativeEventEmitter\n subscriptions: EventSubscription[]\n alias: string\n network: Network\n\n constructor(alias: string, network: Network) {\n this.eventEmitter = new NativeEventEmitter(RNZcash)\n this.subscriptions = []\n this.alias = alias\n this.network = network\n }\n\n async stop(): Promise<string> {\n this.unsubscribe()\n const result = await RNZcash.stop(this.alias)\n return result\n }\n\n async initialize(initializerConfig: InitializerConfig): Promise<void> {\n await RNZcash.initialize(\n initializerConfig.mnemonicSeed,\n initializerConfig.birthdayHeight,\n initializerConfig.alias,\n initializerConfig.networkName,\n initializerConfig.defaultHost,\n initializerConfig.defaultPort,\n initializerConfig.newWallet\n )\n }\n\n async deriveUnifiedAddress(): Promise<Addresses> {\n const result = await RNZcash.deriveUnifiedAddress(this.alias)\n return result\n }\n\n async getLatestNetworkHeight(alias: string): Promise<number> {\n const result = await RNZcash.getLatestNetworkHeight(alias)\n return result\n }\n\n async rescan(): Promise<void> {\n await RNZcash.rescan(this.alias)\n }\n\n async proposeTransfer(opts: ProposeTransferOpts): Promise<ProposalSuccess> {\n const result = await RNZcash.proposeTransfer(\n this.alias,\n opts.zatoshi,\n opts.toAddress,\n opts.memo\n )\n return result\n }\n\n async proposeFulfillingPaymentURI(\n paymentUri: string\n ): Promise<ProposalSuccess> {\n const result = await RNZcash.proposeFulfillingPaymentURI(\n this.alias,\n paymentUri\n )\n return result\n }\n\n async createTransfer(\n opts: CreateTransferOpts\n ): Promise<string | SpendFailure> {\n const result = await RNZcash.createTransfer(\n this.alias,\n opts.proposalBase64,\n opts.mnemonicSeed\n )\n return result\n }\n\n async shieldFunds(shieldFundsInfo: ShieldFundsInfo): Promise<string> {\n const result = await RNZcash.shieldFunds(\n this.alias,\n shieldFundsInfo.seed,\n shieldFundsInfo.memo,\n shieldFundsInfo.threshold\n )\n return result\n }\n\n // Events\n\n subscribe({\n onBalanceChanged,\n onStatusChanged,\n onTransactionsChanged,\n onUpdate,\n onError\n }: SynchronizerCallbacks): void {\n this.setListener('BalanceEvent', event => {\n const {\n transparentAvailableZatoshi,\n transparentTotalZatoshi,\n saplingAvailableZatoshi,\n saplingTotalZatoshi,\n orchardAvailableZatoshi,\n orchardTotalZatoshi\n } = event\n\n event.availableZatoshi = add(\n add(transparentAvailableZatoshi, saplingAvailableZatoshi),\n orchardAvailableZatoshi\n )\n event.totalZatoshi = add(\n add(transparentTotalZatoshi, saplingTotalZatoshi),\n orchardTotalZatoshi\n )\n onBalanceChanged(event)\n })\n this.setListener('StatusEvent', onStatusChanged)\n this.setListener('TransactionEvent', onTransactionsChanged)\n this.setListener('UpdateEvent', onUpdate)\n this.setListener('ErrorEvent', onError)\n }\n\n private setListener<T>(\n eventName: string,\n callback: Callback = (t: any) => null\n ): void {\n this.subscriptions.push(\n this.eventEmitter.addListener(eventName, arg =>\n arg.alias === this.alias ? callback(arg) : null\n )\n )\n }\n\n unsubscribe(): void {\n this.subscriptions.forEach(subscription => {\n subscription.remove()\n })\n }\n}\n\nexport const makeSynchronizer = async (\n initializerConfig: InitializerConfig\n): Promise<Synchronizer> => {\n const synchronizer = new Synchronizer(\n initializerConfig.alias,\n initializerConfig.networkName\n )\n await synchronizer.initialize(initializerConfig)\n return synchronizer\n}\n"],"names":["RNZcash","NativeModules","Tools","deriveViewingKey","seedBytesHex","network","result","getBirthdayHeight","host","port","isValidAddress","address","Synchronizer","alias","eventEmitter","NativeEventEmitter","subscriptions","stop","unsubscribe","initialize","initializerConfig","mnemonicSeed","birthdayHeight","networkName","defaultHost","defaultPort","newWallet","deriveUnifiedAddress","getLatestNetworkHeight","rescan","proposeTransfer","opts","zatoshi","toAddress","memo","proposeFulfillingPaymentURI","paymentUri","createTransfer","proposalBase64","shieldFunds","shieldFundsInfo","seed","threshold","subscribe","onBalanceChanged","onStatusChanged","onTransactionsChanged","onUpdate","onError","setListener","event","transparentAvailableZatoshi","transparentTotalZatoshi","saplingAvailableZatoshi","saplingTotalZatoshi","orchardAvailableZatoshi","orchardTotalZatoshi","availableZatoshi","add","totalZatoshi","eventName","callback","t","push","addListener","arg","forEach","subscription","remove","makeSynchronizer","synchronizer"],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ export declare class Synchronizer {
|
|
|
18
18
|
getLatestNetworkHeight(alias: string): Promise<number>;
|
|
19
19
|
rescan(): Promise<void>;
|
|
20
20
|
proposeTransfer(opts: ProposeTransferOpts): Promise<ProposalSuccess>;
|
|
21
|
+
proposeFulfillingPaymentURI(paymentUri: string): Promise<ProposalSuccess>;
|
|
21
22
|
createTransfer(opts: CreateTransferOpts): Promise<string | SpendFailure>;
|
|
22
23
|
shieldFunds(shieldFundsInfo: ShieldFundsInfo): Promise<string>;
|
|
23
24
|
subscribe({ onBalanceChanged, onStatusChanged, onTransactionsChanged, onUpdate, onError }: SynchronizerCallbacks): void;
|
package/package.json
CHANGED
package/src/react-native.ts
CHANGED
|
@@ -98,6 +98,16 @@ export class Synchronizer {
|
|
|
98
98
|
return result
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
+
async proposeFulfillingPaymentURI(
|
|
102
|
+
paymentUri: string
|
|
103
|
+
): Promise<ProposalSuccess> {
|
|
104
|
+
const result = await RNZcash.proposeFulfillingPaymentURI(
|
|
105
|
+
this.alias,
|
|
106
|
+
paymentUri
|
|
107
|
+
)
|
|
108
|
+
return result
|
|
109
|
+
}
|
|
110
|
+
|
|
101
111
|
async createTransfer(
|
|
102
112
|
opts: CreateTransferOpts
|
|
103
113
|
): Promise<string | SpendFailure> {
|