@@ -246,6 +246,42 @@ class RNZcash: RCTEventEmitter {
246246 }
247247 }
248248
249+ @objc func proposeFulfillingPaymentURI(
250+ _ alias: String , _ paymentUri: String ,
251+ resolver resolve: @escaping RCTPromiseResolveBlock ,
252+ rejecter reject: @escaping RCTPromiseRejectBlock
253+ ) {
254+ Task {
255+ if let wallet = await synchronizerStore. get ( alias) {
256+ do {
257+ guard let accountUUID = wallet. accountUUID else {
258+ reject ( " proposeFulfillingPaymentURI " , " Account UUID not found " , genericError)
259+ return
260+ }
261+ let proposal = try await wallet. synchronizer. proposefulfillingPaymentURI (
262+ paymentUri,
263+ accountUUID: accountUUID
264+ )
265+ let proposalBase64 = try proposal. inner. serializedData ( ) . base64EncodedString ( )
266+
267+ let out : NSMutableDictionary = [
268+ " proposalBase64 " : proposalBase64,
269+ " transactionCount " : proposal. transactionCount ( ) ,
270+ " totalFee " : String ( proposal. totalFeeRequired ( ) . amount) ,
271+ ]
272+
273+ resolve ( out)
274+ } catch let error as ZcashError {
275+ reject ( " proposeFulfillingPaymentURI " , " Failed to propose from payment URI " , error)
276+ } catch {
277+ reject ( " proposeFulfillingPaymentURI " , " Unknown error " , error)
278+ }
279+ } else {
280+ reject ( " proposeFulfillingPaymentURI " , " Wallet does not exist " , genericError)
281+ }
282+ }
283+ }
284+
249285 @objc func createTransfer(
250286 _ alias: String , _ proposalBase64: String , _ seed: String ,
251287 resolver resolve: @escaping RCTPromiseResolveBlock ,
0 commit comments