diff --git a/README.md b/README.md index d7b6ecc..1322a3e 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,14 @@ Wallet.canAddPasses(added => { // Handle rest }); +/** + * Check if you have any passes. + * @param callback A callback which will receive an error or the pass serials + */ +Wallet.passes((err, passes) => { + // Handle rest +}); + /** * Show the pass controller for the provided URL. * The resolving promise will contain a boolean saying if the pass was added or not. diff --git a/ios/RNWalletModule/RNWalletModule.m b/ios/RNWalletModule/RNWalletModule.m index 3d0c7a9..9d13c96 100644 --- a/ios/RNWalletModule/RNWalletModule.m +++ b/ios/RNWalletModule/RNWalletModule.m @@ -28,6 +28,18 @@ @implementation RNWalletModule callback(@[@([PKAddPassesViewController canAddPasses])]); } +RCT_EXPORT_METHOD( + passes:(RCTResponseSenderBlock)callback +) { + self.passLibrary = [[PKPassLibrary alloc] init]; + NSArray *passes = [self.passLibrary passes]; + + NSDictionary *dict = [NSDictionary dictionaryWithObjects:passes forKeys:[passes valueForKey:@"serialNumber"]]; + NSArray*serials=[dict allKeys]; + + callback(@[[NSNull null], serials]); +} + RCT_EXPORT_METHOD( showAddPassControllerFromFile:(NSString *)filepath resolver:(RCTPromiseResolveBlock)resolve diff --git a/src/index.js b/src/index.js index b405b99..0c36d8b 100644 --- a/src/index.js +++ b/src/index.js @@ -1,6 +1,11 @@ -import { NativeModules } from 'react-native'; -const { RNWalletModule } = NativeModules; -import { _canAddPasses, _showAddPassControllerFromURL, _showAddPassControllerFromFile } from './platform-specific'; +import { NativeModules } from 'react-native' +import { + _canAddPasses, + _showAddPassControllerFromURL, + _showAddPassControllerFromFile, + _passes +} from './platform-specific' +const { RNWalletModule } = NativeModules /** * Check if you can add passes. @@ -17,7 +22,7 @@ function canAddPasses(callback) { * @return Promise Passing a boolean */ function showAddPassControllerFromURL(passURL) { - return _showAddPassControllerFromURL(RNWalletModule, passURL); + return _showAddPassControllerFromURL(RNWalletModule, passURL) } /** @@ -27,11 +32,16 @@ function showAddPassControllerFromURL(passURL) { * @return Promise Passing a boolean */ function showAddPassControllerFromFile(filepath) { - return _showAddPassControllerFromFile(RNWalletModule, filepath); + return _showAddPassControllerFromFile(RNWalletModule, filepath) +} + +function passes(callback) { + _passes(RNWalletModule, callback) } module.exports = { canAddPasses, showAddPassControllerFromURL, - showAddPassControllerFromFile + showAddPassControllerFromFile, + passes } diff --git a/src/platform-specific.android.js b/src/platform-specific.android.js index 39f9f98..6f0111d 100644 --- a/src/platform-specific.android.js +++ b/src/platform-specific.android.js @@ -3,7 +3,7 @@ * @param callback A callback which will receive false */ function _canAddPasses(Module, callback) { - callback(false); + callback(false) } /** @@ -12,15 +12,20 @@ function _canAddPasses(Module, callback) { * @return Promise Always rejecting */ function _showAddPassControllerFromURL(Module, passURL) { - return Promise.reject("Android can't add passes"); + return Promise.reject("Android can't add passes") } function _showAddPassControllerFromFile(Module, filepath) { - return Promise.reject("Android can't add passes"); + return Promise.reject("Android can't add passes") +} + +function _passes(Module, callback) { + callback("Android can't list passes", null) } module.exports = { _canAddPasses, _showAddPassControllerFromURL, _showAddPassControllerFromFile, + _passes } diff --git a/src/platform-specific.ios.js b/src/platform-specific.ios.js index 471003f..1187242 100644 --- a/src/platform-specific.ios.js +++ b/src/platform-specific.ios.js @@ -4,7 +4,7 @@ */ function _canAddPasses(Module, callback) { Module.canAddPasses(result => { - callback(result); + callback(result) }) } @@ -15,15 +15,20 @@ function _canAddPasses(Module, callback) { * @return Promise Passing a boolean */ function _showAddPassControllerFromURL(Module, passURL) { - return Module.showAddPassControllerFromURL(passURL); + return Module.showAddPassControllerFromURL(passURL) } function _showAddPassControllerFromFile(Module, filePath) { - return Module.showAddPassControllerFromFile(filePath); + return Module.showAddPassControllerFromFile(filePath) +} + +function _passes(Module, callback) { + Module.passes(callback) } module.exports = { _canAddPasses, _showAddPassControllerFromURL, _showAddPassControllerFromFile, + _passes }