Skip to content

Feature/av profile #4

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
Jun 19, 2025
Merged

Feature/av profile #4

merged 13 commits into from
Jun 19, 2025

Conversation

manecke
Copy link
Collaborator

@manecke manecke commented Jun 19, 2025

Screenshots

Please add screenshots to help explain your changes if applicable

Before After
placeholder_1 placeholder2

Description of changes

Add a description of the change here

Type of change

Please delete options that are not relevant.

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Other fix (maintenance or house-keeping)

How Has This Been Tested?

Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

  • Test suite run successfully
  • Added Tests ()

Checklist:

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the readme
  • My changes generate no new warnings
  • I have added unit tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • I have checked that my views are accessible
  • I have checked that my strings are localized where applicable

brahyam and others added 13 commits May 30, 2025 15:17
* EUDIWALLET-140: Adds localisation

* fixes invalid test data
EUDIWALLET-141 new pipeline for merges to main branch: publish a release with APK attached and generate a next version tag
* Fix: Fixed Documents filtering for Revoked Documents.

- Moved the creation of 'Revoked' filter in the existing General Group for Filtering by State.

* Refactor: Update DocumentDetailsInteractor bookmark parameters

- Changed `bookmarkId` parameter to `documentId` in `storeBookmark` and `deleteBookmark` functions of `DocumentDetailsInteractor`.
- Updated the corresponding calls to `storeBookmark` and `deleteBookmark` in `TestDocumentDetailsInteractor` to use `documentId`.

* Refactor: Update document details revoked message appearance

- Updated the revoked document message card to use `errorContainer` as the background color and `onErrorContainer` as the content color.
- Adjusted the revoked message text style to `bodyMedium`.

* Refactor: Improve button disabled state colors

- Updated `WrapButton` and `WrapOutlinedButton` to improve the disabled state colors.
- Added `containerColor`, `contentColor` and `disabledContainerColor` parameters.
- Changed `WrapOutlinedButton` disabled border color calculation.
- Added `ALPHA_DISABLED` to `WrapButton` and `WrapOutlinedButton`.
- Fixed colors of warning buttons.

* Refactor: Disable Data Deletion and Report Suspicious Transaction buttons

- Disabled the "Request data deletion" button in `TransactionDetailsScreen`.
- Disabled the "Report suspicious transaction" button in `TransactionDetailsScreen`.

* Centralized broadcast registration for ContentScreen

* feat: Enhance transaction list filtering and date picker

-   Introduced `datePickerLimits` in `TransactionsViewModel` to define boundaries for the date picker based on available transaction dates.
-   Implemented dynamic date limit computation for the `DatePickerDialog`:
    -   `startUpperLimit`: earliest non-null end date from filter or constraints.
    -   `endLowerLimit`: latest non-null start date from filter or constraints.
-   Refactored filter date range reset logic to use `datePickerLimits`.
-   Added `availableDates` in `TransactionInteractorGetTransactionsPartialState.Success` to provide min/max transaction dates.
-   Populated `datePickerLimits` and `filterDateRangeSelectionData` with available dates on successful transaction retrieval.
-   Modified filter state change logic to compare against `datePickerLimits` to determine if the default filter date range is selected.

* feat: Enhance date picker dialog and transaction filtering

- Added `selectedDate` parameter to `DatePickerDialogConfig` for pre-selecting a date in the date picker dialog.
- Modified `TransactionsInteractor` to use `safeLet` for getting minimum and maximum creation dates when generating available dates.

* feat: Refactor Transaction Date Handling and Filtering

- Added new date formatting and conversion functions in `DateHelper` to support `LocalDateTime` and `LocalDate`.
-   Modified `TransactionsScreen` and `TransactionsViewModel` to manage date selection with UTC milliseconds.
-   Refactored `TransactionsInteractor` to handle `LocalDateTime` and `LocalDate` for transactions and filtering.
-   Modified `TransactionDetailsInteractor` to use the new date formatting function.
-   Implemented logic to resolve updated filter date range in `TransactionsViewModel`.

* Refactor: Improve Transaction Filtering with Document Names

- Added `getTransactionDocumentNames` extension function to `TransactionLogData` to retrieve document names associated with a transaction.
- Modified `TransactionsInteractor` to include document names in the search tags for filtering.
- Added document names and their space-removed variants to the search tags in `FilterableItem` for better search results.
- Utilized `resourceProvider.getLocale()` to make document names localization-aware.

* fastlane plugins update

* feat: Update Eudi Wallet Core to 0.16.0-SNAPSHOT and refine localized string extraction

This commit updates the Eudi Wallet Core library to version 0.16.0-SNAPSHOT. It also includes refinements to how localized strings are extracted from display data within the common and core logic modules:

- In `DocumentHelper.kt`, the logic for finding localized claim names now explicitly checks if the last element in the claim path matches the identifier.
- In `OfferExtensions.kt`, the `localeExtractor` lambda for retrieving localized strings from display data has been simplified to directly use `it.locale`, as the library's `Display` class now directly provides a `Locale` object.
- In `TestDocumentOfferInteractor.kt`, the mocked locale used in display data has been updated to be a direct `Locale` object instead of its language string, aligning with the changes in the Eudi Wallet Core library.

* Refactor: Enhance `DocumentHelper` functions for claim transformation

- Modified `getReadableNameFromIdentifier` to directly accept `DocumentMetaData.Claim` instead of the full `DocumentMetaData`.
- Updated `parseTreeFromPath` to accept `DocumentMetaData.Claim` instead of the full `DocumentMetaData` for recursive calls and claim name retrieval.
- Removed the `metadata` parameter from `parseTreeFromPath` and `transformPathsToDomainClaims` as `DocumentMetaData.Claim` is now passed where needed.
- Updated the README to reflect the update to OpenID4VCI draft 15.
- Updated various libraries and dependencies in `gradle/libs.versions.toml`.
- Updated the usage of `DocumentHelper` functions in `ProximitySuccessInteractor`, `RequestTransformer`, `DocumentIssuanceSuccessInteractor`, `DocumentDetailsTransformer`, `TransactionDetailsInteractor`, and `PresentationSuccessInteractor` to pass `DocumentMetaData.Claim` where applicable.

* Bump eudiWalletCore version to 0.16.0

* Bump `androidGradlePlugin` and `lint` versions

- Updated `androidGradlePlugin` from 8.9.2 to 8.10.0.
- Updated `lint` from 31.9.2 to 31.10.0.

* Refactor: Enhance claim name display in `DocumentHelper`

This commit refactors the `parseTreeFromPath` and `transformPathsToDomainClaims` functions within `DocumentHelper.kt` to improve how claim display titles are determined, especially for grouped claims.

- In both functions, the `displayTitle` for `DomainClaim.Group` and `DomainClaim.Primitive` is now conditionally determined. If the `childKey` is empty, the `displayTitle` will be derived from the `groupKey` using `getReadableNameFromIdentifier`. Otherwise, it will use the `childKey`. This ensures that nested claims without a specific identifier still inherit the group's readable name for display.

* Refactor: Enhance DocumentHelper functions for claim transformation and update dependencies

- Modified `getReadableNameFromIdentifier` to accept a fallback string instead of an identifier.
- Modified `parseTreeFromPath` to directly accept a display title instead of relying on `claimMetaData` and locale for title generation.
- Updated `addChildrenAsGroups` in `parseTreeFromPath` to not pass `claimMetaData` when recursively calling itself.
- Updated various libraries and dependencies in `gradle/libs.versions.toml`.
- Updated the usage of `getReadableNameFromIdentifier` and `parseTreeFromPath` in `RequestTransformer`, and `DocumentHelper` to pass the correct parameters.

* Bump EudiWalletCore and androidxCore versions

- Updated `eudiWalletCore` to version `0.16.1`.
- Updated `androidxCore` to version `1.16.0`.

* Fastlane support to upload extra attachments to Github Releases
(verifier apk)

* Updated documents filters

- Changed the default and selected state of the "Revoked" document filter to false.

* Update README.md

* Update README.md

* feat: Update build instructions for self-signed certificates

* Refactor:  Fixed broken unit tests

* docs: Update build instructions

* Update how_to_build.md

* Update how_to_build.md

* Update configuration.md

* Update RQES-UI SDK to version 0.2.1

This commit updates the RQES-UI SDK to version 0.2.1.
The `RqesServiceConfig` has been removed and its properties are now part of `QtspData`.

* Doc: Remove obsolete documentation files

- Removed `FileModification.txt` as its content regarding modifications to the original Google Identity Credential project is no longer relevant due to significant divergence.
- Removed `how-to-use-app.md` as its instructions are outdated and do not reflect the current application functionality. Current usage instructions are maintained in the project's Wiki.

* Refactor: Replace `getViewModel` with `koinViewModel` for dependency injection

This commit updates the Koin dependency injection usage from `getViewModel` to `koinViewModel` across various feature modules.

Additionally, the following changes are included:
- Updated Kover configuration in `KoverAndroid.kt` to use the newer `KoverProjectExtension`.
- Removed `mockito-inline` dependency from `AndroidTestConventionPlugin.kt`.
- Updated various library versions in `gradle/libs.versions.toml`, including:
    - `androidxComposeBom`, `androidxComposeRuntimeTracing`, `androidxDataStore`, `androidxWindowManager`, `androidxAppAuth`
    - `kotlinxCoroutines`
    - `koin`, `koinAnnotations`
    - `mockito`, `mockitoKotlin`
    - `ktor`
    - `owaspDependencyCheck`, `sonar`

* Refactor: Update Coil library to version 3

This commit updates the Coil image loading library from version 2.x to 3.x.
The primary change involves updating the import paths in `WrapAsyncImage.kt` to reflect the new package structure of Coil 3.

Dependency updates in `gradle/libs.versions.toml`:
- `coil` updated to `3.2.0`
- `accompanist` updated to `0.36.0`
- `retrofit` updated to `3.0.0`
- `robolectric` updated to `4.14.1`
- `ktor` updated to `3.1.3`
- `slf4j` updated to `2.0.17`
- `googlePhoneNumber` updated to `9.0.5`

* Refactor: Migrate from Realm to Room for local data storage

This commit replaces Realm with Room as the underlying database solution for the `storage-logic` module. This involves the following changes:

- **Removal of Realm Dependencies and Configuration:**
    - Deleted `RealmPlugin.kt` and updated `build-logic/convention/build.gradle.kts` to remove the Realm plugin registration.
    - Removed `io.realm.kotlin` plugin from `build.gradle.kts` (root and `storage-logic`).
    - Deleted `StorageConfig.kt` and `RealmService.kt` which were specific to Realm setup.
    - Removed `RealmBookmark`, `RealmRevokedDocument`, and `RealmTransactionLog` model classes and their respective `toRealm` and `to<Model>` extension functions.
- **Introduction of Room Components:**
    - Added `RoomPlugin.kt` and updated `build-logic/convention/build.gradle.kts` to register the Room plugin.
    - Added `androidx.room` plugin and dependencies (`androidx-room`, `androidx-room-ksp`) in `storage-logic/build.gradle.kts` and `gradle/libs.versions.toml`.
    - Created `DatabaseService.kt` (RoomDatabase implementation) to define the database and DAOs.
    - Created `BookmarkDao.kt`, `RevokedDocumentDao.kt`, and `TransactionLogDao.kt` (Room DAOs) for data access operations.
    - Annotated `Bookmark`, `RevokedDocument`, and `TransactionLog` model classes with `@Entity` and `@PrimaryKey`.
- **Update Storage Controllers to DAOs:**
    - Renamed `StorageController.kt` to `StorageDao.kt` and adjusted its interface methods.
    - Deleted `BookmarkStorageController.kt`, `RevokedDocumentsStorageController.kt`, and `TransactionLogStorageController.kt`. Their functionality is now handled by the respective Room DAOs.
- **Dependency Injection Updates:**
    - Modified `LogicStorageModule.kt` to provide Room database and DAO instances instead of Realm services and controllers.
    - Updated `LogicCoreModule.kt` to inject Room DAOs (`BookmarkDao`, `RevokedDocumentDao`, `TransactionLogDao`) instead of Realm-based storage controllers.
- **Refactoring in Core Logic:**
    - Updated `WalletCoreDocumentsController.kt`, `WalletCoreTransactionLogController.kt`, and `RevocationWorkManager.kt` to use the new Room DAOs for data operations.
- **Build System Changes:**
    - Added `schemas` directory to `.gitignore` for Room schema files.
    - Updated Kotlin and KSP versions in `gradle/libs.versions.toml`.
    - Updated `gson` library version.

This migration aims to leverage the benefits of Room, such as compile-time query verification and better integration with Android Architecture Components. Fallback to destructive migration is enabled for schema changes.

* Fix: Suppress Proguard warnings for Koin components

The following Proguard warnings have been suppressed:
- `org.koin.androidx.viewmodel.GetViewModelKt`
- `org.koin.compose.stable.StableHoldersKt`
- `org.koin.compose.stable.StableParametersDefinition`

* Bump turbine version to 1.2.0

* feat: Integrate OkHttp for Coil image loading and refine URL validation

This commit introduces OkHttp as the network client for the Coil image loading library and improves URL validation logic.

Key changes:
- Added `coil-kt-network-okhttp` dependency to enable OkHttp for Coil.
- Updated `FormValidator.kt` to use `Uri.decode(value).toUri()` for more robust URL parsing in `isValidUrl`.
- Removed `@Suppress("UnstableApiUsage")` from `AndroidCompose.kt` and `AndroidInstrumentedTests.kt` as it's no longer necessary.
- Added `@file:Suppress("ERROR_SUPPRESSION")` to the root `build.gradle.kts` file.

* Build: Remove unnecessary `ERROR_SUPPRESSION` annotations

The `@file:Suppress("ERROR_SUPPRESSION", "ERROR_SUPPRESSION")` annotations have been removed from `build.gradle.kts` as they were redundant.

* Refactor: Increase minimum SDK to 31 and update related logic

This commit increases the minimum SDK version for the Android application from 28 to 31. This change has several implications across the codebase:

- **Build Configuration:**
    - Updated `minSdk` in `build-logic/convention/src/main/kotlin/project/convention/logic/KotlinAndroid.kt` to 31.
    - Updated `README.md` to reflect the new minimum API level.
- **Biometric Authentication:**
    - Simplified `launchBiometricSystemScreen` in `BiometricAuthenticationController.kt` by removing the conditional logic for pre-Android R devices, as the target is now Android R (API 30) or higher.
    - Updated `KeystoreController.kt` to use `setUserAuthenticationParameters` with `AUTH_DEVICE_CREDENTIAL or AUTH_BIOMETRIC_STRONG` instead of the deprecated `setUserAuthenticationValidityDurationSeconds`.
- **UI & Theming:**
    - Removed SDK version checks for blur effects in `ListItem.kt` as blur is available from API 31.
    - Removed the `dynamicThemeSupported` check in `ThemeManager.kt` as dynamic theming is available from API 31 (Android 12+).
- **Permissions:**
    - Removed SDK version checks for Bluetooth permissions in `HomeScreen.kt` as the required permissions are standard from API 31.
- **Storage:**
    - Removed `getStorageKey()` and `setStorageKey(key: String)` from `PrefKeys` interface and its implementation in `PrefsController.kt`. This functionality is no longer needed with the increased minimum SDK level.
- **Dependencies:**
    - Updated `rqesUiSDK` version in `gradle/libs.versions.toml`.

* Refactor: Simplify `ListItem` by removing redundant conditional rendering

The `hideSensitiveContent` check was applied directly via the `blurModifier` to the relevant content elements. This change removes the outer conditional blocks that checked `hideSensitiveContent` before rendering the leading and main content, as the blurring effect already handles content visibility when sensitive content needs to be hidden.

Specifically:
- Removed `if (!hideSensitiveContent)` checks around leading content and main content rendering.
- The `blurModifier` is now consistently applied to child composables regardless of the `hideSensitiveContent` state, as the modifier itself handles whether to apply the blur.
- Removed an unnecessary comment `// API check`.

* baseline profiles updated

* - Added tests for DocumentIssuanceSuccessInteractor.
- Made a change for to pass a UUid parameter when needed for an itemId field. Makes testing easier.
- Added test data for Sd-Jwt attestations.

* - Moved UuidProvider to business-logic module and corrected it's name.

* - Resolved conflicts.

* Reactivate SD-JWT PID support

This commit reactivates the support for SD-JWT PID by:

- Updating the format type for `SdJwtPid` in `DocumentIdentifier.kt` to `urn:eudi:pid:1`.
- Re-enabling the SD-JWT PID checks in `WalletCoreDocumentsController.kt` and `DocumentOfferInteractor.kt` that were previously commented out.

* Clean up

* Bump `androidGradlePlugin` and `lint` versions

- Updated `androidGradlePlugin` to version `8.10.1`.
- Updated `lint` to version `31.10.1`.

* Refactor: Standardize package name for extensions and update Kover exclusion rules

- Renamed the `extensions` package in `common-feature` to `extension` for consistency.
- Updated import paths in various files to reflect the package name change:
    - `DocumentDetailsTransformer.kt`
    - `RequestTransformer.kt`
    - `TransactionDetailsInteractor.kt`
    - `PresentationSuccessInteractor.kt`
    - `ProximitySuccessInteractor.kt`
    - `DocumentIssuanceSuccessInteractor.kt`
- Modified Kover exclusion rules in `KoverExclusionRules.kt`:
    - Added new common exclusion rules for packages: `DOMAIN_MODELS`, `EXTENSIONS`, `CONFIGS`, `TRANSFORMERS`, `UTILS`, `COMPONENTS`, `PROVIDERS`.
    - Removed specific class and package exclusions from `BusinessLogic`, `UiLogic`, `CommonFeature`, `DashboardFeature`, `ProximityFeature` as they are now covered by the common rules.
    - Updated `UiLogic` to exclude `eu.europa.ec.uilogic.navigation` and `eu.europa.ec.uilogic.serializer` packages.
- Adjusted Kover configuration in `KoverAndroid.kt` by removing explicit `extensions` receiver type.
- Updated comments in `assembly-logic/build.gradle.kts` for clarity regarding Kover reports.

* update for compatibility with latest changes from ref

* reverts base url and certs

* fixes lint

* fixes test comp

* fixes tests

---------

Co-authored-by: Giannis Stamatopoulos <giannis.stamatopoulos@netcompany.com>
Co-authored-by: Tzouvaras, Stilianos <stylianos.tzouvaras@netcompany.com>
Co-authored-by: lkarathanasopoulos <loukas.karathanasopoulos@netcompany.com>
* Fix: Fixed Documents filtering for Revoked Documents.

- Moved the creation of 'Revoked' filter in the existing General Group for Filtering by State.

* Refactor: Update DocumentDetailsInteractor bookmark parameters

- Changed `bookmarkId` parameter to `documentId` in `storeBookmark` and `deleteBookmark` functions of `DocumentDetailsInteractor`.
- Updated the corresponding calls to `storeBookmark` and `deleteBookmark` in `TestDocumentDetailsInteractor` to use `documentId`.

* Refactor: Update document details revoked message appearance

- Updated the revoked document message card to use `errorContainer` as the background color and `onErrorContainer` as the content color.
- Adjusted the revoked message text style to `bodyMedium`.

* Refactor: Improve button disabled state colors

- Updated `WrapButton` and `WrapOutlinedButton` to improve the disabled state colors.
- Added `containerColor`, `contentColor` and `disabledContainerColor` parameters.
- Changed `WrapOutlinedButton` disabled border color calculation.
- Added `ALPHA_DISABLED` to `WrapButton` and `WrapOutlinedButton`.
- Fixed colors of warning buttons.

* Refactor: Disable Data Deletion and Report Suspicious Transaction buttons

- Disabled the "Request data deletion" button in `TransactionDetailsScreen`.
- Disabled the "Report suspicious transaction" button in `TransactionDetailsScreen`.

* Centralized broadcast registration for ContentScreen

* feat: Enhance transaction list filtering and date picker

-   Introduced `datePickerLimits` in `TransactionsViewModel` to define boundaries for the date picker based on available transaction dates.
-   Implemented dynamic date limit computation for the `DatePickerDialog`:
    -   `startUpperLimit`: earliest non-null end date from filter or constraints.
    -   `endLowerLimit`: latest non-null start date from filter or constraints.
-   Refactored filter date range reset logic to use `datePickerLimits`.
-   Added `availableDates` in `TransactionInteractorGetTransactionsPartialState.Success` to provide min/max transaction dates.
-   Populated `datePickerLimits` and `filterDateRangeSelectionData` with available dates on successful transaction retrieval.
-   Modified filter state change logic to compare against `datePickerLimits` to determine if the default filter date range is selected.

* feat: Enhance date picker dialog and transaction filtering

- Added `selectedDate` parameter to `DatePickerDialogConfig` for pre-selecting a date in the date picker dialog.
- Modified `TransactionsInteractor` to use `safeLet` for getting minimum and maximum creation dates when generating available dates.

* feat: Refactor Transaction Date Handling and Filtering

- Added new date formatting and conversion functions in `DateHelper` to support `LocalDateTime` and `LocalDate`.
-   Modified `TransactionsScreen` and `TransactionsViewModel` to manage date selection with UTC milliseconds.
-   Refactored `TransactionsInteractor` to handle `LocalDateTime` and `LocalDate` for transactions and filtering.
-   Modified `TransactionDetailsInteractor` to use the new date formatting function.
-   Implemented logic to resolve updated filter date range in `TransactionsViewModel`.

* Refactor: Improve Transaction Filtering with Document Names

- Added `getTransactionDocumentNames` extension function to `TransactionLogData` to retrieve document names associated with a transaction.
- Modified `TransactionsInteractor` to include document names in the search tags for filtering.
- Added document names and their space-removed variants to the search tags in `FilterableItem` for better search results.
- Utilized `resourceProvider.getLocale()` to make document names localization-aware.

* fastlane plugins update

* feat: Update Eudi Wallet Core to 0.16.0-SNAPSHOT and refine localized string extraction

This commit updates the Eudi Wallet Core library to version 0.16.0-SNAPSHOT. It also includes refinements to how localized strings are extracted from display data within the common and core logic modules:

- In `DocumentHelper.kt`, the logic for finding localized claim names now explicitly checks if the last element in the claim path matches the identifier.
- In `OfferExtensions.kt`, the `localeExtractor` lambda for retrieving localized strings from display data has been simplified to directly use `it.locale`, as the library's `Display` class now directly provides a `Locale` object.
- In `TestDocumentOfferInteractor.kt`, the mocked locale used in display data has been updated to be a direct `Locale` object instead of its language string, aligning with the changes in the Eudi Wallet Core library.

* Refactor: Enhance `DocumentHelper` functions for claim transformation

- Modified `getReadableNameFromIdentifier` to directly accept `DocumentMetaData.Claim` instead of the full `DocumentMetaData`.
- Updated `parseTreeFromPath` to accept `DocumentMetaData.Claim` instead of the full `DocumentMetaData` for recursive calls and claim name retrieval.
- Removed the `metadata` parameter from `parseTreeFromPath` and `transformPathsToDomainClaims` as `DocumentMetaData.Claim` is now passed where needed.
- Updated the README to reflect the update to OpenID4VCI draft 15.
- Updated various libraries and dependencies in `gradle/libs.versions.toml`.
- Updated the usage of `DocumentHelper` functions in `ProximitySuccessInteractor`, `RequestTransformer`, `DocumentIssuanceSuccessInteractor`, `DocumentDetailsTransformer`, `TransactionDetailsInteractor`, and `PresentationSuccessInteractor` to pass `DocumentMetaData.Claim` where applicable.

* Bump eudiWalletCore version to 0.16.0

* Bump `androidGradlePlugin` and `lint` versions

- Updated `androidGradlePlugin` from 8.9.2 to 8.10.0.
- Updated `lint` from 31.9.2 to 31.10.0.

* Refactor: Enhance claim name display in `DocumentHelper`

This commit refactors the `parseTreeFromPath` and `transformPathsToDomainClaims` functions within `DocumentHelper.kt` to improve how claim display titles are determined, especially for grouped claims.

- In both functions, the `displayTitle` for `DomainClaim.Group` and `DomainClaim.Primitive` is now conditionally determined. If the `childKey` is empty, the `displayTitle` will be derived from the `groupKey` using `getReadableNameFromIdentifier`. Otherwise, it will use the `childKey`. This ensures that nested claims without a specific identifier still inherit the group's readable name for display.

* Refactor: Enhance DocumentHelper functions for claim transformation and update dependencies

- Modified `getReadableNameFromIdentifier` to accept a fallback string instead of an identifier.
- Modified `parseTreeFromPath` to directly accept a display title instead of relying on `claimMetaData` and locale for title generation.
- Updated `addChildrenAsGroups` in `parseTreeFromPath` to not pass `claimMetaData` when recursively calling itself.
- Updated various libraries and dependencies in `gradle/libs.versions.toml`.
- Updated the usage of `getReadableNameFromIdentifier` and `parseTreeFromPath` in `RequestTransformer`, and `DocumentHelper` to pass the correct parameters.

* Bump EudiWalletCore and androidxCore versions

- Updated `eudiWalletCore` to version `0.16.1`.
- Updated `androidxCore` to version `1.16.0`.

* Fastlane support to upload extra attachments to Github Releases
(verifier apk)

* Updated documents filters

- Changed the default and selected state of the "Revoked" document filter to false.

* Update README.md

* Update README.md

* feat: Update build instructions for self-signed certificates

* Refactor:  Fixed broken unit tests

* docs: Update build instructions

* Update how_to_build.md

* Update how_to_build.md

* Update configuration.md

* Update RQES-UI SDK to version 0.2.1

This commit updates the RQES-UI SDK to version 0.2.1.
The `RqesServiceConfig` has been removed and its properties are now part of `QtspData`.

* Doc: Remove obsolete documentation files

- Removed `FileModification.txt` as its content regarding modifications to the original Google Identity Credential project is no longer relevant due to significant divergence.
- Removed `how-to-use-app.md` as its instructions are outdated and do not reflect the current application functionality. Current usage instructions are maintained in the project's Wiki.

* Refactor: Replace `getViewModel` with `koinViewModel` for dependency injection

This commit updates the Koin dependency injection usage from `getViewModel` to `koinViewModel` across various feature modules.

Additionally, the following changes are included:
- Updated Kover configuration in `KoverAndroid.kt` to use the newer `KoverProjectExtension`.
- Removed `mockito-inline` dependency from `AndroidTestConventionPlugin.kt`.
- Updated various library versions in `gradle/libs.versions.toml`, including:
    - `androidxComposeBom`, `androidxComposeRuntimeTracing`, `androidxDataStore`, `androidxWindowManager`, `androidxAppAuth`
    - `kotlinxCoroutines`
    - `koin`, `koinAnnotations`
    - `mockito`, `mockitoKotlin`
    - `ktor`
    - `owaspDependencyCheck`, `sonar`

* Refactor: Update Coil library to version 3

This commit updates the Coil image loading library from version 2.x to 3.x.
The primary change involves updating the import paths in `WrapAsyncImage.kt` to reflect the new package structure of Coil 3.

Dependency updates in `gradle/libs.versions.toml`:
- `coil` updated to `3.2.0`
- `accompanist` updated to `0.36.0`
- `retrofit` updated to `3.0.0`
- `robolectric` updated to `4.14.1`
- `ktor` updated to `3.1.3`
- `slf4j` updated to `2.0.17`
- `googlePhoneNumber` updated to `9.0.5`

* Refactor: Migrate from Realm to Room for local data storage

This commit replaces Realm with Room as the underlying database solution for the `storage-logic` module. This involves the following changes:

- **Removal of Realm Dependencies and Configuration:**
    - Deleted `RealmPlugin.kt` and updated `build-logic/convention/build.gradle.kts` to remove the Realm plugin registration.
    - Removed `io.realm.kotlin` plugin from `build.gradle.kts` (root and `storage-logic`).
    - Deleted `StorageConfig.kt` and `RealmService.kt` which were specific to Realm setup.
    - Removed `RealmBookmark`, `RealmRevokedDocument`, and `RealmTransactionLog` model classes and their respective `toRealm` and `to<Model>` extension functions.
- **Introduction of Room Components:**
    - Added `RoomPlugin.kt` and updated `build-logic/convention/build.gradle.kts` to register the Room plugin.
    - Added `androidx.room` plugin and dependencies (`androidx-room`, `androidx-room-ksp`) in `storage-logic/build.gradle.kts` and `gradle/libs.versions.toml`.
    - Created `DatabaseService.kt` (RoomDatabase implementation) to define the database and DAOs.
    - Created `BookmarkDao.kt`, `RevokedDocumentDao.kt`, and `TransactionLogDao.kt` (Room DAOs) for data access operations.
    - Annotated `Bookmark`, `RevokedDocument`, and `TransactionLog` model classes with `@Entity` and `@PrimaryKey`.
- **Update Storage Controllers to DAOs:**
    - Renamed `StorageController.kt` to `StorageDao.kt` and adjusted its interface methods.
    - Deleted `BookmarkStorageController.kt`, `RevokedDocumentsStorageController.kt`, and `TransactionLogStorageController.kt`. Their functionality is now handled by the respective Room DAOs.
- **Dependency Injection Updates:**
    - Modified `LogicStorageModule.kt` to provide Room database and DAO instances instead of Realm services and controllers.
    - Updated `LogicCoreModule.kt` to inject Room DAOs (`BookmarkDao`, `RevokedDocumentDao`, `TransactionLogDao`) instead of Realm-based storage controllers.
- **Refactoring in Core Logic:**
    - Updated `WalletCoreDocumentsController.kt`, `WalletCoreTransactionLogController.kt`, and `RevocationWorkManager.kt` to use the new Room DAOs for data operations.
- **Build System Changes:**
    - Added `schemas` directory to `.gitignore` for Room schema files.
    - Updated Kotlin and KSP versions in `gradle/libs.versions.toml`.
    - Updated `gson` library version.

This migration aims to leverage the benefits of Room, such as compile-time query verification and better integration with Android Architecture Components. Fallback to destructive migration is enabled for schema changes.

* Fix: Suppress Proguard warnings for Koin components

The following Proguard warnings have been suppressed:
- `org.koin.androidx.viewmodel.GetViewModelKt`
- `org.koin.compose.stable.StableHoldersKt`
- `org.koin.compose.stable.StableParametersDefinition`

* Bump turbine version to 1.2.0

* feat: Integrate OkHttp for Coil image loading and refine URL validation

This commit introduces OkHttp as the network client for the Coil image loading library and improves URL validation logic.

Key changes:
- Added `coil-kt-network-okhttp` dependency to enable OkHttp for Coil.
- Updated `FormValidator.kt` to use `Uri.decode(value).toUri()` for more robust URL parsing in `isValidUrl`.
- Removed `@Suppress("UnstableApiUsage")` from `AndroidCompose.kt` and `AndroidInstrumentedTests.kt` as it's no longer necessary.
- Added `@file:Suppress("ERROR_SUPPRESSION")` to the root `build.gradle.kts` file.

* Build: Remove unnecessary `ERROR_SUPPRESSION` annotations

The `@file:Suppress("ERROR_SUPPRESSION", "ERROR_SUPPRESSION")` annotations have been removed from `build.gradle.kts` as they were redundant.

* Refactor: Increase minimum SDK to 31 and update related logic

This commit increases the minimum SDK version for the Android application from 28 to 31. This change has several implications across the codebase:

- **Build Configuration:**
    - Updated `minSdk` in `build-logic/convention/src/main/kotlin/project/convention/logic/KotlinAndroid.kt` to 31.
    - Updated `README.md` to reflect the new minimum API level.
- **Biometric Authentication:**
    - Simplified `launchBiometricSystemScreen` in `BiometricAuthenticationController.kt` by removing the conditional logic for pre-Android R devices, as the target is now Android R (API 30) or higher.
    - Updated `KeystoreController.kt` to use `setUserAuthenticationParameters` with `AUTH_DEVICE_CREDENTIAL or AUTH_BIOMETRIC_STRONG` instead of the deprecated `setUserAuthenticationValidityDurationSeconds`.
- **UI & Theming:**
    - Removed SDK version checks for blur effects in `ListItem.kt` as blur is available from API 31.
    - Removed the `dynamicThemeSupported` check in `ThemeManager.kt` as dynamic theming is available from API 31 (Android 12+).
- **Permissions:**
    - Removed SDK version checks for Bluetooth permissions in `HomeScreen.kt` as the required permissions are standard from API 31.
- **Storage:**
    - Removed `getStorageKey()` and `setStorageKey(key: String)` from `PrefKeys` interface and its implementation in `PrefsController.kt`. This functionality is no longer needed with the increased minimum SDK level.
- **Dependencies:**
    - Updated `rqesUiSDK` version in `gradle/libs.versions.toml`.

* Refactor: Simplify `ListItem` by removing redundant conditional rendering

The `hideSensitiveContent` check was applied directly via the `blurModifier` to the relevant content elements. This change removes the outer conditional blocks that checked `hideSensitiveContent` before rendering the leading and main content, as the blurring effect already handles content visibility when sensitive content needs to be hidden.

Specifically:
- Removed `if (!hideSensitiveContent)` checks around leading content and main content rendering.
- The `blurModifier` is now consistently applied to child composables regardless of the `hideSensitiveContent` state, as the modifier itself handles whether to apply the blur.
- Removed an unnecessary comment `// API check`.

* baseline profiles updated

* - Added tests for DocumentIssuanceSuccessInteractor.
- Made a change for to pass a UUid parameter when needed for an itemId field. Makes testing easier.
- Added test data for Sd-Jwt attestations.

* - Moved UuidProvider to business-logic module and corrected it's name.

* - Resolved conflicts.

* Reactivate SD-JWT PID support

This commit reactivates the support for SD-JWT PID by:

- Updating the format type for `SdJwtPid` in `DocumentIdentifier.kt` to `urn:eudi:pid:1`.
- Re-enabling the SD-JWT PID checks in `WalletCoreDocumentsController.kt` and `DocumentOfferInteractor.kt` that were previously commented out.

* Clean up

* Bump `androidGradlePlugin` and `lint` versions

- Updated `androidGradlePlugin` to version `8.10.1`.
- Updated `lint` to version `31.10.1`.

* Refactor: Standardize package name for extensions and update Kover exclusion rules

- Renamed the `extensions` package in `common-feature` to `extension` for consistency.
- Updated import paths in various files to reflect the package name change:
    - `DocumentDetailsTransformer.kt`
    - `RequestTransformer.kt`
    - `TransactionDetailsInteractor.kt`
    - `PresentationSuccessInteractor.kt`
    - `ProximitySuccessInteractor.kt`
    - `DocumentIssuanceSuccessInteractor.kt`
- Modified Kover exclusion rules in `KoverExclusionRules.kt`:
    - Added new common exclusion rules for packages: `DOMAIN_MODELS`, `EXTENSIONS`, `CONFIGS`, `TRANSFORMERS`, `UTILS`, `COMPONENTS`, `PROVIDERS`.
    - Removed specific class and package exclusions from `BusinessLogic`, `UiLogic`, `CommonFeature`, `DashboardFeature`, `ProximityFeature` as they are now covered by the common rules.
    - Updated `UiLogic` to exclude `eu.europa.ec.uilogic.navigation` and `eu.europa.ec.uilogic.serializer` packages.
- Adjusted Kover configuration in `KoverAndroid.kt` by removing explicit `extensions` receiver type.
- Updated comments in `assembly-logic/build.gradle.kts` for clarity regarding Kover reports.

* update for compatibility with latest changes from ref

* updates core to 0.17 snapshot and shows credential count on landing screen av card

* request 10 credentials with rotating policy

* adds extra param

* adds out of credentials ui

* hides stepbar if re-issuing credentials

* removes depleted credentials

* partial fix tests

* mocks constants

* fixes quickpin interactor tests

* adds support for avsp scheme

* adds missing redirect id scheme

* fixes document details tests

* switches mocks to functions

* fixes test document offer and success int

* fixes doc details interactor

* reverts wrong fixes for tests

* reverts wrong fixes for tests

---------

Co-authored-by: Giannis Stamatopoulos <giannis.stamatopoulos@netcompany.com>
Co-authored-by: Tzouvaras, Stilianos <stylianos.tzouvaras@netcompany.com>
Co-authored-by: lkarathanasopoulos <loukas.karathanasopoulos@netcompany.com>
Copy link

@manecke manecke merged commit 91e70d3 into main Jun 19, 2025
2 of 3 checks passed
@manecke manecke deleted the feature/av-profile branch June 19, 2025 21:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants