Feature/wal 750#1874
Conversation
- Implement `ReceiveCredential` screen with QR scan and manual entry modes - Add Android-specific `QrScanner` implementation using CameraX and ML Kit - Implement navigation between `WalletScreen` and `ReceiveCredential` - Enable Android builds in `gradle.properties`
- Implement `CredentialDetailScreen` to display credential metadata and flattened data - Update `WalletDemoCredential` and related metadata models to include `credentialData` and `subject` - Add navigation to credential details from the `WalletScreen` - Enhance `ReceiveCredentials` screen with success callbacks and test tags - Remove unused Lock button from the receive screen
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
- Update mock and test credentials to include `subject` and structured `credentialData`. - Enhance UI tests with assertions for the credential detail screen. - Update UI test scenarios to reflect the revised receive flow navigation. - Add `credentialData` property documentation to `MobileWalletCredential`.
- Implement `ReceiveCredential` screen with QR scan and manual entry modes - Add Android-specific `QrScanner` implementation using CameraX and ML Kit - Implement navigation between `WalletScreen` and `ReceiveCredential` - Enable Android builds in `gradle.properties`
- Implement `CredentialDetailScreen` to display credential metadata and flattened data - Update `WalletDemoCredential` and related metadata models to include `credentialData` and `subject` - Add navigation to credential details from the `WalletScreen` - Enhance `ReceiveCredentials` screen with success callbacks and test tags - Remove unused Lock button from the receive screen
- Update mock and test credentials to include `subject` and structured `credentialData`. - Enhance UI tests with assertions for the credential detail screen. - Update UI test scenarios to reflect the revised receive flow navigation. - Add `credentialData` property documentation to `MobileWalletCredential`.
- Update `MobileWalletCredential` to remove raw payload data, optimizing the credential list for mobile UI. - Add `MobileWalletCredentialDetails` and `credentialDetails` method to fetch full credential data as a JSON string. - Introduce `resolveOffer` to check for transaction code requirements before starting the issuance flow. - Update `CredentialDetailScreen` to parse and display credential data from the new JSON format.
* Add transaction code (PIN) handling to manual and scanned offer flows. * Introduce `ResolvingOffer` state for asynchronous offer resolution. * Refactor credential models to separate summary list data from full JSON details. * Implement deep link navigation to automatically route to the Receive screen. * Extend iOS `WalletSdkBridge` to support fetching specific credential details.
* Updated `DemoWallet` interface to include `resolveOffer` and `credentialDetails`. * Added `txCode` support to the credential `receive` flow. * Improved deep link handling to support automated issuance and presentation flows. * Added comprehensive unit and UI tests for `txCode` prompts and offer resolution logic.
… usage description
…wal-750 # Conflicts: # waltid-applications/waltid-wallet-demo-compose/androidApp/src/androidTest/java/id/walt/walletdemo/compose/android/PublicDemoBackendE2ETest.kt # waltid-libraries/protocols/waltid-openid4vc-wallet-mobile/src/iosMain/kotlin/id/walt/wallet2/mobile/swiftinterop/WalletSdkBridge.kt # waltid-libraries/protocols/waltid-openid4vc-wallet-mobile/src/iosTest/kotlin/id/walt/wallet2/mobile/swiftinterop/WalletSdkBridgeTest.kt
- Add camera permission handling to UI tests - Improve deep link navigation reliability in `PublicDemoBackendE2ETest` - Switch to `DemoTestBackend` for test sessions - Remove commented-out `UrlActionSection` in `WalletScreen.kt`
|
hey @SuperBatata, I've prepared #1898 in the meanwhile to extract the credential data exposure and display into its own PR. may I suggest to review it and rebase this branch/PR on top of it to avoid further conflicts down the line? thanks |
…wal-750 # Conflicts: # gradle/libs.versions.toml # waltid-applications/waltid-wallet-demo-compose/sharedLogic/src/commonMain/kotlin/id/walt/walletdemo/compose/logic/WalletDemoController.kt # waltid-applications/waltid-wallet-demo-compose/sharedLogic/src/commonMain/kotlin/id/walt/walletdemo/compose/logic/WalletDemoCredential.kt # waltid-applications/waltid-wallet-demo-compose/sharedLogic/src/commonMain/kotlin/id/walt/walletdemo/compose/logic/WalletDemoUiState.kt # waltid-applications/waltid-wallet-demo-compose/sharedLogic/src/commonTest/kotlin/id/walt/walletdemo/compose/logic/WalletDemoControllerTest.kt # waltid-applications/waltid-wallet-demo-compose/sharedLogic/src/mobileMain/kotlin/id/walt/walletdemo/compose/logic/MobileDemoWallet.kt # waltid-applications/waltid-wallet-demo-compose/sharedLogic/src/wasmJsMain/kotlin/id/walt/walletdemo/compose/logic/MockDemoWallet.kt # waltid-applications/waltid-wallet-demo-compose/sharedUI/build.gradle.kts # waltid-applications/waltid-wallet-demo-compose/sharedUI/src/commonMain/kotlin/id/walt/walletdemo/compose/ui/components/CredentialCard.kt # waltid-applications/waltid-wallet-demo-compose/sharedUI/src/commonMain/kotlin/id/walt/walletdemo/compose/ui/screens/WalletScreen.kt # waltid-applications/waltid-wallet-demo-compose/sharedUI/src/mobileUiTest/kotlin/id/walt/walletdemo/compose/ui/WalletDemoAppTestScenarios.kt # waltid-libraries/protocols/waltid-openid4vc-wallet-mobile/src/commonMain/kotlin/id/walt/wallet2/mobile/MobileWallet.kt
- Implement `resolveOffer` in the Wallet SDK and KMP bridge to determine if a transaction code (PIN) is required before receipt. - Add a UIKit-based `QRScannerView` using `AVFoundation` to the iOS demo app. - Update `ReceiveView` with segmented "Scan QR" and "Enter link" modes. - Add support for conditional PIN input in `WalletViewModel` based on the offer resolution result. - Update `Info.plist` with `NSCameraUsageDescription` for QR code scanning.
|



This pull request introduces QR code scanning functionality to the Android app, improves credential data handling, and enhances the UI to support navigation and display of credential details. It also adds necessary dependencies and permissions for camera and barcode scanning support.
QR Code Scanning and Camera Support:
QrScanner.android.ktcomposable that implements QR code scanning using CameraX and ML Kit, handling camera permissions and scan results.gradle.properties.Credential Data Model and Serialization:
WalletDemoCredentialto include asubjectfield and acredentialDatafield of typeJsonObject, and annotated it with@Serializablefor JSON serialization support.kotlinx-serialization-jsonas a dependency in both shared logic and UI modules. [1] [2]UI Enhancements and Navigation:
CredentialCardto be clickable and to display additional credential details, including subject and added date, using a newCredentialDetailcomposable. [1] [2] [3]