import * as Keychain from 'react-native-keychain'; export default class SecureStoreManager { static environment: String; static storeItem( userDetails: string, userCredential: string, serviceKey: string, hasBioMetricAccess: boolean = false ) { return new Promise((resolve, reject) => { try { if (hasBioMetricAccess) { Keychain.setGenericPassword(userDetails, userCredential, { accessControl: Keychain.ACCESS_CONTROL.BIOMETRY_CURRENT_SET, service: serviceKey + SecureStoreManager.environment, }); resolve(true); } else { Keychain.setGenericPassword(userDetails, userCredential, { service: serviceKey + SecureStoreManager.environment, }); resolve(true); } } catch (error) { reject(error); } }); } static retrieveItem(serviceKey: string) { return new Promise(async (resolve, reject) => { try { const credentials: false | Keychain.UserCredentials = await Keychain.getGenericPassword({ service: serviceKey + SecureStoreManager.environment, }); resolve(credentials); } catch (error) { reject(error); } }); } static deleteItem(serviceKey: string) { return new Promise(async (resolve, reject) => { try { await Keychain.resetGenericPassword({ service: serviceKey + SecureStoreManager.environment, }); resolve(true); } catch (error) { reject(error); } }); } }