react-native-zcash 0.7.6 → 0.8.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/CHANGELOG.md CHANGED
@@ -2,6 +2,15 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.8.0 (2024-09-05)
6
+
7
+ - added: Add error listeners
8
+ - changed: Updated checkpoints
9
+
10
+ ## 0.7.7 (2024-08-19)
11
+
12
+ - changed: Updated checkpoints
13
+
5
14
  ## 0.7.6 (2024-08-07)
6
15
 
7
16
  - changed: Updated checkpoints
@@ -0,0 +1,8 @@
1
+ {
2
+ "network": "main",
3
+ "height": "2610000",
4
+ "hash": "0000000001983f6af92aa54cc2f04c76ec2b51a4d2d531c68dc3f928eff389da",
5
+ "time": 1723587957,
6
+ "saplingTree": "014786833dca5d97113e0df8900ab9417932550e7095d84fbde36970b59d7ade4901ef0d953cce04a1a047efb878498c620518865f5e3f2664d63cff1d7f54d5cf341f0116f4823ef3dc63c13949f3e65114859f23e117e30dd7fc8f3a22dc8e62057f090001532a5e4de69ca498feada5d03f9c405a29e8e55938370d05f206fb5cdac0ca35016b15c607cd209396481c9d98b7738bc3e0083dd9e369ceaa27e07ea93c6bda0b01d861ea5f004bcec625872817426b957ffd41672c0f925c4f7a754a8ce4766800018a046b8845d3b656e26afc582ecd6498b9e86529972177061a7592d35d340b5b00000000018352fa01f9005eb9753fa19a54bed788f98e46b382470b2ac7ec13312ba4b92b00000001f762af15779fb5c9593af1a8a9a2c777b9377dcb3117e5c55b4365f1061ea86c012415b957855163102c9f373eec835c3b3aa11f0ac872533a867d3e2eb562d30200000000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
7
+ "orchardTree": "01372f271643f08499b581d8f7f66b1f444e526ad0f95e14234b427a5bb2b56d1201c648b2bfd7302406cd4a74d7cf1eb3ff205440d88796695995bafd9c9acf90221f000000000001e1d30668d096992e7927391372ec8a8814ec9ec8abfb8b75dd20fb8157675e3001d44954db4382d7f516bb0328e1ddbc8e0262a215d13d43afe656608fd84072370001e8649fcd4c5e83c3bb2dc78d1657acc23a2c29d3481999092eadaab94ee955070000000001f427516d6600178ef99cc049193c413103980c407ea3489a687b3c3479d2300c00000112278dfeae9949f887b70ae81e084f8897a5054627acef3efd01c8b29793d522000160040850b766b126a2b4843fcdfdffa5d5cab3f53bc860a3bef68958b5f066170001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "network": "main",
3
+ "height": "2620000",
4
+ "hash": "000000000090f3ee85cf2a29fb5d6e5cc6fb509f79a6cff0b6c44c235f4ddba6",
5
+ "time": 1724341443,
6
+ "saplingTree": "0155c1bb2c0008f2d4ed479ca2c79af8b43a51a8d2d3420fccbfb44c2c66cf3a0d01725ed2720f8ddce8534cd5549cedf894d07feea8343aa62f00918797c1db05521f00000001e731cfc3c78a5ce9e21f2b5a9553bbc038dc4f38e6fef523951fef33ba9d6e6900000143c2d3a8743f4535b9d990b60a1c5b494fffe54166939f905a6b710c1bb06a1900000162e301b349b6d7fb581d7c4917717065cf2092a9fa325926c82d1b7682e7710c01b21a0f5e06c1c07e8c14e4ea0b5de1aaa95dc45eef2d048003be6c66e026441a010d3156dcb9605aefb88ad75fd97a78797e7e83c6f7d2cd0f8f2699293e0952520107ce458cf2cc5c0351bc0ecb8e4ce1ab7edc9b9b528dbbbe0a70b9057e4cdf5601889e7a0849bac67b05fe418b808099194a54632db5d8de4dab43ff55c3b22a0a01f762af15779fb5c9593af1a8a9a2c777b9377dcb3117e5c55b4365f1061ea86c012415b957855163102c9f373eec835c3b3aa11f0ac872533a867d3e2eb562d30200000000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
7
+ "orchardTree": "019eef8d7f26921e7c276b2f6c52f96a9a2c837b2b07b73800cd21257fe69ed72701532f76468abf55c89ba7756cd5cc4b4ca089f42d413091368be1047bacfa60271f017f9bee27f8fdb95e0f1e4c0207789b9b034795f982a994d9972c7c633846bf1600000001249c40dd4c4b03b7be7414d2eaf426411a3668ad830ad721b1ee8da660b5ab060000016fb505682c8da0f68640af24fc156827969c6aa8108d1cc649f447183d41a02501bf9cdc7c4b45107d1e9d7fc5ffa1226d091a654a02c20b0bc86d96ec1ac0eb3e00000185edfe70c36f5d1c3216c4750bbd8f11fe1ab96802f9eaf273f2e85ea0709c1d0001f427516d6600178ef99cc049193c413103980c407ea3489a687b3c3479d2300c00000112278dfeae9949f887b70ae81e084f8897a5054627acef3efd01c8b29793d522000160040850b766b126a2b4843fcdfdffa5d5cab3f53bc860a3bef68958b5f066170001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "network": "main",
3
+ "height": "2630000",
4
+ "hash": "0000000000a895df571dfd40a79e8f565afa1866b06df8de945612ddc2208ac5",
5
+ "time": 1725095685,
6
+ "saplingTree": "01ebdeb4660783a87222b9a8a33e83d9d56f0a6aa99f3ab2e941bb6b8eaca4874e01e9debf006d3773e46e01a563e47f23fce83cbeddcbc1246357bb055b232fee4c1f00013c16c47049af25b1594cfd6af24e171aae29b2dbe6cc452c73c48684cfd7a531017ef29f42c194e56dac501f174ef50e6dbb8ad91fc6c171e44087489d818a6363000001082ae7978338d87b54eeb721505421e7db499387cd7b09168bcc6a039c408f2b000148a78a5aab5faa815223b8080979d01e7967175d50e5fef6011ba15122b8b6040000000199100b85242c92aaeab280566441c4407cb5783757ea93c0a1b8266fe2525b5e00010fdff8660d84e9dbb3979b612a8c64535da6d9c5820ed495c395857252d3863b000001b254e3cfba937bcd40621e1d623a943440b083892546f081aab37058fd1b763f000000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
7
+ "orchardTree": "010ec9ed61bb20a9019f527a0fde76af802f91d93073bbc1a9d49f1a3cf0c8c708001f01046e770e337820010092000327f4f3069780f02f1c02748357bbc80f9e457b26016c65e02f1df7f54a97b482d96a2107083bd928fa8134ddd89c33dd58c985400a000001916fb87613d68da24723a6efc5a8c58972d276988da3663856d29d11d8800a09000125728df0802110f9458966392a1b6fdb1a5c8f062a2cbc51aa978649b8462224000130ed9968c67d2b11cdd6864582eed4001e96f94e67b9fad73f022732d106283501e8b3066a9d744eb2836f58a4c49966828705364648c16c8fc0ba2d268f1f71230112852a88a1d88b30c5a3bd2f532500e25379fc536934f2bbe26a2fcdea5dff250185edfe70c36f5d1c3216c4750bbd8f11fe1ab96802f9eaf273f2e85ea0709c1d0001f427516d6600178ef99cc049193c413103980c407ea3489a687b3c3479d2300c00000112278dfeae9949f887b70ae81e084f8897a5054627acef3efd01c8b29793d522000160040850b766b126a2b4843fcdfdffa5d5cab3f53bc860a3bef68958b5f066170001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
8
+ }
@@ -140,6 +140,39 @@ class RNZcashModule(private val reactContext: ReactApplicationContext) :
140
140
  args.putString("orchardTotalZatoshi", orchardTotalZatoshi.value.toString())
141
141
  }
142
142
  }
143
+
144
+ fun handleError(
145
+ level: String,
146
+ error: Throwable?,
147
+ ) {
148
+ sendEvent("ErrorEvent") { args ->
149
+ args.putString("alias", alias)
150
+ args.putString("level", level)
151
+ args.putString("message", error?.message ?: "Unknown error")
152
+ }
153
+ }
154
+
155
+ // Error listeners
156
+ wallet.onCriticalErrorHandler = { error ->
157
+ handleError("critical", error)
158
+ false
159
+ }
160
+ wallet.onProcessorErrorHandler = { error ->
161
+ handleError("error", error)
162
+ true
163
+ }
164
+ wallet.onSetupErrorHandler = { error ->
165
+ handleError("error", error)
166
+ false
167
+ }
168
+ wallet.onSubmissionErrorHandler = { error ->
169
+ handleError("error", error)
170
+ false
171
+ }
172
+ wallet.onChainErrorHandler = { errorHeight, rewindHeight ->
173
+ val message = "Chain error detected at height: $errorHeight. Rewinding to: $rewindHeight"
174
+ handleError("error", Throwable(message))
175
+ }
143
176
  return@wrap null
144
177
  }
145
178
  }
package/ios/RNZcash.swift CHANGED
@@ -441,21 +441,21 @@ class RNZcash: RCTEventEmitter {
441
441
 
442
442
  // Events
443
443
  public func sendToJs(name: String, data: Any) {
444
- if (hasListeners) {
444
+ if hasListeners {
445
445
  self.sendEvent(withName: name, body: data)
446
446
  }
447
447
  }
448
448
 
449
- override func startObserving() -> Void {
449
+ override func startObserving() {
450
450
  hasListeners = true
451
451
  }
452
452
 
453
- override func stopObserving() -> Void {
453
+ override func stopObserving() {
454
454
  hasListeners = false
455
455
  }
456
456
 
457
457
  override func supportedEvents() -> [String] {
458
- return ["BalanceEvent", "StatusEvent", "TransactionEvent", "UpdateEvent"]
458
+ return ["BalanceEvent", "ErrorEvent", "StatusEvent", "TransactionEvent", "UpdateEvent"]
459
459
  }
460
460
  }
461
461
 
@@ -527,6 +527,20 @@ class WalletSynchronizer: NSObject {
527
527
  status = "SYNCED"
528
528
 
529
529
  self.fullySynced = true
530
+ case .error(let error):
531
+ let zcashError = error.toZcashError()
532
+ switch zcashError.code {
533
+ case .compactBlockProcessorCritical:
534
+ let data: NSDictionary = [
535
+ "alias": self.alias, "level": "critical", "message": zcashError.message,
536
+ ]
537
+ emit("ErrorEvent", data)
538
+ default:
539
+ let data: NSDictionary = [
540
+ "alias": self.alias, "level": "error", "message": zcashError.message,
541
+ ]
542
+ emit("ErrorEvent", data)
543
+ }
530
544
  default:
531
545
  break
532
546
  }
@@ -0,0 +1,8 @@
1
+ {
2
+ "network": "main",
3
+ "height": "2610000",
4
+ "hash": "0000000001983f6af92aa54cc2f04c76ec2b51a4d2d531c68dc3f928eff389da",
5
+ "time": 1723587957,
6
+ "saplingTree": "014786833dca5d97113e0df8900ab9417932550e7095d84fbde36970b59d7ade4901ef0d953cce04a1a047efb878498c620518865f5e3f2664d63cff1d7f54d5cf341f0116f4823ef3dc63c13949f3e65114859f23e117e30dd7fc8f3a22dc8e62057f090001532a5e4de69ca498feada5d03f9c405a29e8e55938370d05f206fb5cdac0ca35016b15c607cd209396481c9d98b7738bc3e0083dd9e369ceaa27e07ea93c6bda0b01d861ea5f004bcec625872817426b957ffd41672c0f925c4f7a754a8ce4766800018a046b8845d3b656e26afc582ecd6498b9e86529972177061a7592d35d340b5b00000000018352fa01f9005eb9753fa19a54bed788f98e46b382470b2ac7ec13312ba4b92b00000001f762af15779fb5c9593af1a8a9a2c777b9377dcb3117e5c55b4365f1061ea86c012415b957855163102c9f373eec835c3b3aa11f0ac872533a867d3e2eb562d30200000000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
7
+ "orchardTree": "01372f271643f08499b581d8f7f66b1f444e526ad0f95e14234b427a5bb2b56d1201c648b2bfd7302406cd4a74d7cf1eb3ff205440d88796695995bafd9c9acf90221f000000000001e1d30668d096992e7927391372ec8a8814ec9ec8abfb8b75dd20fb8157675e3001d44954db4382d7f516bb0328e1ddbc8e0262a215d13d43afe656608fd84072370001e8649fcd4c5e83c3bb2dc78d1657acc23a2c29d3481999092eadaab94ee955070000000001f427516d6600178ef99cc049193c413103980c407ea3489a687b3c3479d2300c00000112278dfeae9949f887b70ae81e084f8897a5054627acef3efd01c8b29793d522000160040850b766b126a2b4843fcdfdffa5d5cab3f53bc860a3bef68958b5f066170001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "network": "main",
3
+ "height": "2620000",
4
+ "hash": "000000000090f3ee85cf2a29fb5d6e5cc6fb509f79a6cff0b6c44c235f4ddba6",
5
+ "time": 1724341443,
6
+ "saplingTree": "0155c1bb2c0008f2d4ed479ca2c79af8b43a51a8d2d3420fccbfb44c2c66cf3a0d01725ed2720f8ddce8534cd5549cedf894d07feea8343aa62f00918797c1db05521f00000001e731cfc3c78a5ce9e21f2b5a9553bbc038dc4f38e6fef523951fef33ba9d6e6900000143c2d3a8743f4535b9d990b60a1c5b494fffe54166939f905a6b710c1bb06a1900000162e301b349b6d7fb581d7c4917717065cf2092a9fa325926c82d1b7682e7710c01b21a0f5e06c1c07e8c14e4ea0b5de1aaa95dc45eef2d048003be6c66e026441a010d3156dcb9605aefb88ad75fd97a78797e7e83c6f7d2cd0f8f2699293e0952520107ce458cf2cc5c0351bc0ecb8e4ce1ab7edc9b9b528dbbbe0a70b9057e4cdf5601889e7a0849bac67b05fe418b808099194a54632db5d8de4dab43ff55c3b22a0a01f762af15779fb5c9593af1a8a9a2c777b9377dcb3117e5c55b4365f1061ea86c012415b957855163102c9f373eec835c3b3aa11f0ac872533a867d3e2eb562d30200000000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
7
+ "orchardTree": "019eef8d7f26921e7c276b2f6c52f96a9a2c837b2b07b73800cd21257fe69ed72701532f76468abf55c89ba7756cd5cc4b4ca089f42d413091368be1047bacfa60271f017f9bee27f8fdb95e0f1e4c0207789b9b034795f982a994d9972c7c633846bf1600000001249c40dd4c4b03b7be7414d2eaf426411a3668ad830ad721b1ee8da660b5ab060000016fb505682c8da0f68640af24fc156827969c6aa8108d1cc649f447183d41a02501bf9cdc7c4b45107d1e9d7fc5ffa1226d091a654a02c20b0bc86d96ec1ac0eb3e00000185edfe70c36f5d1c3216c4750bbd8f11fe1ab96802f9eaf273f2e85ea0709c1d0001f427516d6600178ef99cc049193c413103980c407ea3489a687b3c3479d2300c00000112278dfeae9949f887b70ae81e084f8897a5054627acef3efd01c8b29793d522000160040850b766b126a2b4843fcdfdffa5d5cab3f53bc860a3bef68958b5f066170001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "network": "main",
3
+ "height": "2630000",
4
+ "hash": "0000000000a895df571dfd40a79e8f565afa1866b06df8de945612ddc2208ac5",
5
+ "time": 1725095685,
6
+ "saplingTree": "01ebdeb4660783a87222b9a8a33e83d9d56f0a6aa99f3ab2e941bb6b8eaca4874e01e9debf006d3773e46e01a563e47f23fce83cbeddcbc1246357bb055b232fee4c1f00013c16c47049af25b1594cfd6af24e171aae29b2dbe6cc452c73c48684cfd7a531017ef29f42c194e56dac501f174ef50e6dbb8ad91fc6c171e44087489d818a6363000001082ae7978338d87b54eeb721505421e7db499387cd7b09168bcc6a039c408f2b000148a78a5aab5faa815223b8080979d01e7967175d50e5fef6011ba15122b8b6040000000199100b85242c92aaeab280566441c4407cb5783757ea93c0a1b8266fe2525b5e00010fdff8660d84e9dbb3979b612a8c64535da6d9c5820ed495c395857252d3863b000001b254e3cfba937bcd40621e1d623a943440b083892546f081aab37058fd1b763f000000013e2598f743726006b8de42476ed56a55a75629a7b82e430c4e7c101a69e9b02a011619f99023a69bb647eab2d2aa1a73c3673c74bb033c3c4930eacda19e6fd93b0000000160272b134ca494b602137d89e528c751c06d3ef4a87a45f33af343c15060cc1e0000000000",
7
+ "orchardTree": "010ec9ed61bb20a9019f527a0fde76af802f91d93073bbc1a9d49f1a3cf0c8c708001f01046e770e337820010092000327f4f3069780f02f1c02748357bbc80f9e457b26016c65e02f1df7f54a97b482d96a2107083bd928fa8134ddd89c33dd58c985400a000001916fb87613d68da24723a6efc5a8c58972d276988da3663856d29d11d8800a09000125728df0802110f9458966392a1b6fdb1a5c8f062a2cbc51aa978649b8462224000130ed9968c67d2b11cdd6864582eed4001e96f94e67b9fad73f022732d106283501e8b3066a9d744eb2836f58a4c49966828705364648c16c8fc0ba2d268f1f71230112852a88a1d88b30c5a3bd2f532500e25379fc536934f2bbe26a2fcdea5dff250185edfe70c36f5d1c3216c4750bbd8f11fe1ab96802f9eaf273f2e85ea0709c1d0001f427516d6600178ef99cc049193c413103980c407ea3489a687b3c3479d2300c00000112278dfeae9949f887b70ae81e084f8897a5054627acef3efd01c8b29793d522000160040850b766b126a2b4843fcdfdffa5d5cab3f53bc860a3bef68958b5f066170001cc2dcaa338b312112db04b435a706d63244dd435238f0aa1e9e1598d35470810012dcc4273c8a0ed2337ecf7879380a07e7d427c7f9d82e538002bd1442978402c01daf63debf5b40df902dae98dadc029f281474d190cddecef1b10653248a234150001e2bca6a8d987d668defba89dc082196a922634ed88e065c669e526bb8815ee1b000000000000"
8
+ }
package/lib/rnzcash.rn.js CHANGED
@@ -202,7 +202,8 @@ var Synchronizer = /*#__PURE__*/function () {
202
202
  var onBalanceChanged = _ref.onBalanceChanged,
203
203
  onStatusChanged = _ref.onStatusChanged,
204
204
  onTransactionsChanged = _ref.onTransactionsChanged,
205
- onUpdate = _ref.onUpdate;
205
+ onUpdate = _ref.onUpdate,
206
+ onError = _ref.onError;
206
207
  this.setListener('BalanceEvent', function (event) {
207
208
  var transparentAvailableZatoshi = event.transparentAvailableZatoshi,
208
209
  transparentTotalZatoshi = event.transparentTotalZatoshi,
@@ -217,6 +218,7 @@ var Synchronizer = /*#__PURE__*/function () {
217
218
  this.setListener('StatusEvent', onStatusChanged);
218
219
  this.setListener('TransactionEvent', onTransactionsChanged);
219
220
  this.setListener('UpdateEvent', onUpdate);
221
+ this.setListener('ErrorEvent', onError);
220
222
  };
221
223
 
222
224
  _proto.setListener = function setListener(eventName, callback) {
@@ -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 InitializerConfig,\n Network,\n ProposalSuccess,\n ShieldFundsInfo,\n SpendFailure,\n SpendInfo,\n SpendSuccess,\n SynchronizerCallbacks,\n Transaction,\n TransferSpendInfo\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(\n spendInfo: TransferSpendInfo\n ): Promise<ProposalSuccess> {\n const result = await RNZcash.proposeTransfer(\n this.alias,\n spendInfo.zatoshi,\n spendInfo.toAddress,\n spendInfo.memo\n )\n return result\n }\n\n async sendToAddress(\n spendInfo: SpendInfo\n ): Promise<SpendSuccess | SpendFailure> {\n const result = await RNZcash.sendToAddress(\n this.alias,\n spendInfo.zatoshi,\n spendInfo.toAddress,\n spendInfo.memo,\n spendInfo.mnemonicSeed\n )\n return result\n }\n\n async shieldFunds(shieldFundsInfo: ShieldFundsInfo): Promise<Transaction> {\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 }: 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 }\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","spendInfo","zatoshi","toAddress","memo","sendToAddress","shieldFunds","shieldFundsInfo","seed","threshold","subscribe","onBalanceChanged","onStatusChanged","onTransactionsChanged","onUpdate","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 InitializerConfig,\n Network,\n ProposalSuccess,\n ShieldFundsInfo,\n SpendFailure,\n SpendInfo,\n SpendSuccess,\n SynchronizerCallbacks,\n Transaction,\n TransferSpendInfo\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(\n spendInfo: TransferSpendInfo\n ): Promise<ProposalSuccess> {\n const result = await RNZcash.proposeTransfer(\n this.alias,\n spendInfo.zatoshi,\n spendInfo.toAddress,\n spendInfo.memo\n )\n return result\n }\n\n async sendToAddress(\n spendInfo: SpendInfo\n ): Promise<SpendSuccess | SpendFailure> {\n const result = await RNZcash.sendToAddress(\n this.alias,\n spendInfo.zatoshi,\n spendInfo.toAddress,\n spendInfo.memo,\n spendInfo.mnemonicSeed\n )\n return result\n }\n\n async shieldFunds(shieldFundsInfo: ShieldFundsInfo): Promise<Transaction> {\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","spendInfo","zatoshi","toAddress","memo","sendToAddress","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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"}
@@ -20,7 +20,7 @@ export declare class Synchronizer {
20
20
  proposeTransfer(spendInfo: TransferSpendInfo): Promise<ProposalSuccess>;
21
21
  sendToAddress(spendInfo: SpendInfo): Promise<SpendSuccess | SpendFailure>;
22
22
  shieldFunds(shieldFundsInfo: ShieldFundsInfo): Promise<Transaction>;
23
- subscribe({ onBalanceChanged, onStatusChanged, onTransactionsChanged, onUpdate }: SynchronizerCallbacks): void;
23
+ subscribe({ onBalanceChanged, onStatusChanged, onTransactionsChanged, onUpdate, onError }: SynchronizerCallbacks): void;
24
24
  private setListener;
25
25
  unsubscribe(): void;
26
26
  }
@@ -56,11 +56,17 @@ export interface UpdateEvent {
56
56
  scanProgress: number;
57
57
  networkBlockHeight: number;
58
58
  }
59
+ export interface ErrorEvent {
60
+ alias: string;
61
+ level: 'critical' | 'error';
62
+ message: string;
63
+ }
59
64
  export interface SynchronizerCallbacks {
60
65
  onBalanceChanged(balance: BalanceEvent): void;
61
66
  onStatusChanged(status: StatusEvent): void;
62
67
  onTransactionsChanged(transactions: TransactionEvent): void;
63
68
  onUpdate(event: UpdateEvent): void;
69
+ onError(error: ErrorEvent): void;
64
70
  }
65
71
  export interface BlockRange {
66
72
  first: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-zcash",
3
- "version": "0.7.6",
3
+ "version": "0.8.0",
4
4
  "description": "Zcash library for React Native",
5
5
  "homepage": "https://github.com/EdgeApp/react-native-zcash",
6
6
  "repository": {
@@ -131,7 +131,8 @@ export class Synchronizer {
131
131
  onBalanceChanged,
132
132
  onStatusChanged,
133
133
  onTransactionsChanged,
134
- onUpdate
134
+ onUpdate,
135
+ onError
135
136
  }: SynchronizerCallbacks): void {
136
137
  this.setListener('BalanceEvent', event => {
137
138
  const {
@@ -156,6 +157,7 @@ export class Synchronizer {
156
157
  this.setListener('StatusEvent', onStatusChanged)
157
158
  this.setListener('TransactionEvent', onTransactionsChanged)
158
159
  this.setListener('UpdateEvent', onUpdate)
160
+ this.setListener('ErrorEvent', onError)
159
161
  }
160
162
 
161
163
  private setListener<T>(
package/src/types.ts CHANGED
@@ -72,11 +72,18 @@ export interface UpdateEvent {
72
72
  networkBlockHeight: number
73
73
  }
74
74
 
75
+ export interface ErrorEvent {
76
+ alias: string
77
+ level: 'critical' | 'error'
78
+ message: string
79
+ }
80
+
75
81
  export interface SynchronizerCallbacks {
76
82
  onBalanceChanged(balance: BalanceEvent): void
77
83
  onStatusChanged(status: StatusEvent): void
78
84
  onTransactionsChanged(transactions: TransactionEvent): void
79
85
  onUpdate(event: UpdateEvent): void
86
+ onError(error: ErrorEvent): void
80
87
  }
81
88
 
82
89
  export interface BlockRange {