mirror of
https://github.com/BlueWallet/BlueWallet.git
synced 2024-11-19 09:50:15 +01:00
Support Safello redirect URLs
When the user buys bitcoin through Safello, they will be redirected to the Yoti app to verify their identity. Previously, when the process was done, they would be redirected to a browser window to continue their purchase, but since bluewallet has a `bluewallet://` redirect URI associated to its app ID, we can redirect them back to the app with a `safello-state-token` query parameter appended to the URI instead. Bluewallet then simply needs to check if that query parameter is present, and if so, open a new WebView with the same Safello URL + `stateToken=xxx` in order to resume the user's session. This way, the whole buying process can take place inside Bluewallet's app, which is a clear improvement in terms of user experience.
This commit is contained in:
parent
f44f86828e
commit
298aba26f4
21
App.js
21
App.js
@ -95,6 +95,12 @@ export default class App extends React.Component {
|
||||
return isValidLightningInvoice;
|
||||
}
|
||||
|
||||
isSafelloRedirect(event) {
|
||||
let urlObject = url.parse(event.url, true) // eslint-disable-line
|
||||
|
||||
return !!urlObject.query["safello-state-token"]
|
||||
}
|
||||
|
||||
handleOpenURL = event => {
|
||||
if (event.url === null) {
|
||||
return;
|
||||
@ -122,6 +128,21 @@ export default class App extends React.Component {
|
||||
},
|
||||
}),
|
||||
);
|
||||
} else if (this.isSafelloRedirect(event)) {
|
||||
let urlObject = url.parse(event.url, true) // eslint-disable-line
|
||||
|
||||
const safelloStateToken = urlObject.query["safello-state-token"]
|
||||
|
||||
this.navigator &&
|
||||
this.navigator.dispatch(
|
||||
NavigationActions.navigate({
|
||||
routeName: "BuyBitcoin",
|
||||
params: {
|
||||
uri: event.url,
|
||||
safelloStateToken,
|
||||
},
|
||||
}),
|
||||
)
|
||||
} else {
|
||||
let urlObject = url.parse(event.url, true); // eslint-disable-line
|
||||
console.log('parsed', urlObject);
|
||||
|
@ -63,7 +63,29 @@ export default class BuyBitcoin extends Component {
|
||||
return <BlueLoading />;
|
||||
}
|
||||
|
||||
return <WebView source={{ uri: 'https://bluewallet.io/buy-bitcoin-redirect.html?address=' + this.state.address }} />;
|
||||
const { safelloStateToken } = this.props.navigation.state.params
|
||||
|
||||
if (safelloStateToken) {
|
||||
return (
|
||||
<WebView
|
||||
source={{
|
||||
uri:
|
||||
"https://app.safello.com/sdk/quickbuy.html?appId=1234-5678&stateToken=" +
|
||||
safelloStateToken,
|
||||
}}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
return (
|
||||
<WebView
|
||||
source={{
|
||||
uri:
|
||||
"https://bluewallet.io/buy-bitcoin-redirect.html?address=" +
|
||||
this.state.address,
|
||||
}}
|
||||
/>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user