You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[PM-23785] Use actual error types in UniFFI (#424)
## 🎟️ Tracking
https://bitwarden.atlassian.net/browse/PM-23785
## 📔 Objective
Currently all the UniFFI errors get serialized as a string. This PR
updates UniFFI to the latest main changes to add support for proper
errors. This requires a couple of changes:
- I've tagged all the errors with `uniffi::Error` and added support to
the bitwarden-error macro for uniffi.
- I've had to add some workaround code to deal with an edge case that
caused some compilation issues, more info upstream:
mozilla/uniffi-rs#2636
- Updated the gradle wrapper included as the old version was having some
issues with my java version
How this looks on the mobile apps:
Android:
```kt
try {
client.crypto().deriveKeyConnector(request)
} catch (ex: BitwardenException.DeriveKeyConnector) {
when (ex.v1) {
is DeriveKeyConnectorException.WrongPassword -> {
println("That is the wrong password: $ex")
}
else -> {
println("Other bitwarden error: ${ex.v1}")
}
}
} catch (ex: BitwardenException) {
println("Other bitwarden error: $ex")
}
```
iOS:
```swift
do {
try client.crypto().deriveKeyConnector(request);
} catch(BitwardenError.DeriveKeyConnector(DeriveKeyConnectorError.WrongPassword(let msg))) {
print("Wrong password:", msg)
} catch {
print("Other bitwarden error:", error)
}
```
## ⏰ Reminders before review
- Contributor guidelines followed
- All formatters and local linters executed and passed
- Written new unit and / or integration tests where applicable
- Protected functional changes with optionality (feature flags)
- Used internationalization (i18n) for all UI strings
- CI builds passed
- Communicated to DevOps any deployment requirements
- Updated any necessary documentation (Confluence, contributing docs) or
informed the documentation
team
## 🦮 Reviewer guidelines
<!-- Suggested interactions but feel free to use (or not) as you desire!
-->
- 👍 (`:+1:`) or similar for great changes
- 📝 (`:memo:`) or ℹ️ (`:information_source:`) for notes or general info
- ❓ (`:question:`) for questions
- 🤔 (`:thinking:`) or 💭 (`:thought_balloon:`) for more open inquiry
that's not quite a confirmed
issue and could potentially benefit from discussion
- 🎨 (`:art:`) for suggestions / improvements
- ❌ (`:x:`) or ⚠️ (`:warning:`) for more significant problems or
concerns needing attention
- 🌱 (`:seedling:`) or ♻️ (`:recycle:`) for future improvements or
indications of technical debt
- ⛏ (`:pick:`) for minor or nitpick changes
0 commit comments