@@ -247,6 +247,42 @@ class RNZcash: RCTEventEmitter {
247247 }
248248 }
249249
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+
250286 @objc func createTransfer(
251287 _ alias: String , _ proposalBase64: String , _ seed: String ,
252288 resolver resolve: @escaping RCTPromiseResolveBlock ,
0 commit comments