chore: Move everything into package/ (#1745)
				
					
				
			* Move everything into package * Remove .DS_Store * Move scripts and eslintrc to package * Create CODE_OF_CONDUCT.md * fix some links * Update all links (I think) * Update generated docs * Update notice-yarn-changes.yml * Update validate-android.yml * Update validate-cpp.yml * Delete notice-yarn-changes.yml * Update validate-cpp.yml * Update validate-cpp.yml * Update validate-js.yml * Update validate-cpp.yml * Update validate-cpp.yml * wrong c++ style * Revert "wrong c++ style" This reverts commit 55a3575589c6f13f8b05134d83384f55e0601ab2.
This commit is contained in:
		
							
								
								
									
										69
									
								
								package/ios/React Utils/Promise.swift
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								package/ios/React Utils/Promise.swift
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,69 @@ | ||||
| // | ||||
| //  Promise.swift | ||||
| //  mrousavy | ||||
| // | ||||
| //  Created by Marc Rousavy on 14.01.21. | ||||
| //  Copyright © 2021 mrousavy. All rights reserved. | ||||
| // | ||||
|  | ||||
| import Foundation | ||||
|  | ||||
| // MARK: - Promise | ||||
|  | ||||
| /** | ||||
|  * Represents a JavaScript Promise instance. `reject()` and `resolve()` should only be called once. | ||||
|  */ | ||||
| class Promise { | ||||
|   init(resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) { | ||||
|     self.resolver = resolver | ||||
|     self.rejecter = rejecter | ||||
|   } | ||||
|  | ||||
|   func reject(error: CameraError, cause: NSError?) { | ||||
|     rejecter(error.code, error.message, cause) | ||||
|   } | ||||
|  | ||||
|   func reject(error: CameraError) { | ||||
|     reject(error: error, cause: nil) | ||||
|   } | ||||
|  | ||||
|   func resolve(_ value: Any?) { | ||||
|     resolver(value) | ||||
|   } | ||||
|  | ||||
|   func resolve() { | ||||
|     resolve(nil) | ||||
|   } | ||||
|  | ||||
|   // MARK: Private | ||||
|  | ||||
|   private let resolver: RCTPromiseResolveBlock | ||||
|   private let rejecter: RCTPromiseRejectBlock | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Wrap a block with an automatic promise resolver and rejecter. | ||||
|  * | ||||
|  * The value returned by the `block` must be serializable by the React Native bridge, or `nil`. | ||||
|  * The error thrown by the `block` should be a `CameraError` | ||||
|  */ | ||||
| func withPromise(_ promise: Promise, _ block: () throws -> Any?) { | ||||
|   do { | ||||
|     let result = try block() | ||||
|     promise.resolve(result) | ||||
|   } catch let error as CameraError { | ||||
|     promise.reject(error: error) | ||||
|   } catch let error as NSError { | ||||
|     promise.reject(error: CameraError.unknown(message: error.description), cause: error) | ||||
|   } | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Wrap a block with an automatic promise resolver and rejecter. | ||||
|  * | ||||
|  * The value returned by the `block` must be serializable by the React Native bridge, or `nil`. | ||||
|  * The error thrown by the `block` should be a `CameraError` | ||||
|  */ | ||||
| func withPromise(resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock, _ block: () throws -> Any?) { | ||||
|   return withPromise(Promise(resolver: resolve, rejecter: reject), block) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user