From 8a30ba034136c3a5b1e15e3ab20ce5b4b72ea22d Mon Sep 17 00:00:00 2001 From: Joel Arvidsson Date: Sun, 25 Feb 2018 19:24:35 +0100 Subject: [PATCH] Update example app with biometric features --- KeychainExample/app.js | 80 ++++++++++++++++++++++++++---------------- 1 file changed, 49 insertions(+), 31 deletions(-) diff --git a/KeychainExample/app.js b/KeychainExample/app.js index 5fa2607..dc5cf01 100644 --- a/KeychainExample/app.js +++ b/KeychainExample/app.js @@ -25,42 +25,60 @@ export default class KeychainExample extends Component { }); } - save() { - Keychain.setGenericPassword(this.state.username, this.state.password) - .then(() => { - this.setState({ status: 'Credentials saved!' }); - }) - .catch(err => { - this.setState({ status: 'Could not save credentials, ' + err }); - }); + async save() { + try { + if (this.state.biometryType) { + await Keychain.setPasswordWithAuthentication( + this.state.username, + this.state.password, + { + accessControl: + Keychain.ACCESS_CONTROL.TOUCH_ID_ANY_OR_DEVICE_PASSCODE, + authenticationType: Keychain.AUTHENTICATION_TYPE.BIOMETRICS, + } + ); + } else { + await Keychain.setGenericPassword( + this.state.username, + this.state.password + ); + } + this.setState({ status: 'Credentials saved!' }); + } catch (err) { + this.setState({ status: 'Could not save credentials, ' + err }); + } } - load() { - Keychain.getGenericPassword() - .then(credentials => { - if (credentials) { - this.setState({ ...credentials, status: 'Credentials loaded!' }); - } else { - this.setState({ status: 'No credentials stored.' }); - } - }) - .catch(err => { - this.setState({ status: 'Could not load credentials. ' + err }); - }); + async load() { + try { + const credentials = await (this.state.biometryType + ? Keychain.getPasswordWithAuthentication({ + accessControl: + Keychain.ACCESS_CONTROL.TOUCH_ID_ANY_OR_DEVICE_PASSCODE, + authenticationType: Keychain.AUTHENTICATION_TYPE.BIOMETRICS, + }) + : Keychain.getGenericPassword()); + if (credentials) { + this.setState({ ...credentials, status: 'Credentials loaded!' }); + } else { + this.setState({ status: 'No credentials stored.' }); + } + } catch (err) { + this.setState({ status: 'Could not load credentials. ' + err }); + } } - reset() { - Keychain.resetGenericPassword() - .then(() => { - this.setState({ - status: 'Credentials Reset!', - username: '', - password: '', - }); - }) - .catch(err => { - this.setState({ status: 'Could not reset credentials, ' + err }); + async reset() { + try { + await Keychain.resetGenericPassword(); + this.setState({ + status: 'Credentials Reset!', + username: '', + password: '', }); + } catch (err) { + this.setState({ status: 'Could not reset credentials, ' + err }); + } } render() {