retrieve From Credential Offer
abstract fun retrieveFromCredentialOffer(credentialOfferIntentData: String): Flow<CredentialOfferEvent>
Start of the process of downloading and saving credentials. Returns events and errors through the process of offering an com.youniqx.walletsdk.attestation.Attestation for download to the app.
Return
Flow of CredentialOfferEvents
Example usage for Android:
private val infoResult: CompleteableDeferred<Unit>? = null
suspend fun retrieveCredentialFromOffer(credentialOfferIntentData: String) {
walletSdk.attestations.retrieveFromCredentialOffer(credentialOfferIntentData).collect { event ->
when (event) {
is CredentialOfferEvent.InfoEvent -> {
// this contains information about the credential offered to the app
credentialOfferInfo = event.credentialOfferInfo
// save this event's result, it needs to be completed to continue the flow
infoResult = event.result
}
CredentialOfferEvent.InfoParsingError, // credential info not parsable
CredentialOfferEvent.ParsingError, // credential not parsable
CredentialOfferEvent.IssuanceError, // credential issuance fails
CredentialOfferEvent.NotImplementedError // trying to issue a credential type no implemented yet
-> {
// handle the error in the app
}
is CredentialOfferEvent.OpenUrlForAuthEvent -> {
// open url returned by event in browser or handle login process in the app
val url = event.authoriztationUrl
}
}
}
}
// complete the InfoEvent, continue with next (success) event -> CredentialOfferEvent.OpenUrlForAuthEvent
fun approveDownloadOfferedCredential() {
infoResult?.complete(Unit)
infoResult = null
}Content copied to clipboard
Example usage for iOS:
public func fetchCredentialOffer(with _data: String) async
throws(CredentialOfferError) -> ([CredentialOfferInfo], URL?) {
var array: [CredentialOfferInfo] = []
for await value in WalletSdk.shared.attestations.retrieveFromCredentialOffer(credentialOfferIntentData: _data) {
if let error = CredentialOfferError.from(event: value) {
// handle error in the app
}
switch onEnum(of: value) {
case .infoEvent(let _event):
array = _event.credentialOfferInfo
_event.result.complete(value: KotlinUnit()) // Trigger to process for auth-url for download
continue
case .openUrlForAuthEvent(let _event):
let authURL = _event.authorizationUrl
return (array, URL(string: authURL))
// open url returned by event in browser or handle login process in the app
default:
// check if we are missing a new error code / event
// in CredentialOfferError.from(event: value)
}
}
return (array, nil)
}Content copied to clipboard
Parameters
credential Offer Intent Data
the intent data of the credential offer