Upstream release/3.4.1 from main#32
Merged
Merged
Conversation
Signed-off-by: Manu Muñoz <manu.munoz@dhis2.org>
* feat: [ANDROAPP-7472] data models and mappers * feat: [ANDROAPP-7472] ktlint and copilot review comments * feat: [ANDROAPP-7472] correct geometry mapping * feat: [ANDROAPP-7472] remove verbose imports * feat: [ANDROAPP-7472] copilot review * fix: [ANDROAPP-7472] copilot review * fix: [ANDROAPP-7472] sonar smell * fix: [ANDROAPP-7472] code review comments
…ctually closed (dhis2#4628) * chore: [ANDROAPP-7465] add new DataSetNonEditableReason PERIOD_NOT_IN_DATA_INPUT_PERIODS * chore: [ANDROAPP-7465] fix sdk version * chore: [ANDROAPP-7465] fix ktlint format --------- Co-authored-by: Andrés Miguel Rubio <andres@dhis2.org>
…ize] (dhis2#4614) * fix(translations): sync translations from transifex (develop) * fix(translations): sync translations from transifex (develop) * fix: remove escaped characters --------- Co-authored-by: andresmr <andres@andresmr.com>
* chore: [ANDROAPP-7472] Update Paging data and dependency verification file * chore: [ANDROAPP-7472] Fix login without oath test * chore: [ANDROAPP-7472] remove duplicate dependency * chore: [ANDROAPP-7472] Use different compose paging version for tracker module * Revert "chore: [ANDROAPP-7472] Fix login without oath test" This reverts commit 7a4170a. * chore: [ANDROAPP-7472] Use different compose paging version for tracker module * chore: [ANDROAPP-7472] Force compose animation version
…refactor in updated android sdk [skip size] (dhis2#4633) * chore: [ANDROAPP-7484] adapt to ktor upgrade * chore: [ANDROAPP-7484] adapt to ktor upgrade * chore: [ANDROAPP-7465] fix sdk version * feat: [ANDROAPP-7472] I Clean up old search repository [skip size] I (dhis2#4622) * feat: [ANDROAPP-7472] Clean up old search repository * feat: [ANDROAPP-7472] Add Paging data and dependency verification * fix: [ANDROAPP-7472] fix compilation error * feat: [ANDROAPP-7472] fix unit test * feat: [ANDROAPP-7472] copilot review * fix: [ANDROAPP-7472] revert library update * fix: [ANDROAPP-7472] fix sonar code smells * chore: [ANDROAPP-7483] Add missing categoryCombo to DataElement builders in tests * chore: [ANDROAPP-7483] add categoryCombo to Program builders in tests * chore: [ANDROAPP-7483] update dhis2sdk lib version * chore: [ANDROAPP-7483] Add to list to deviceProviders * chore: [ANDROAPP-7483] KtlintFormat --------- Co-authored-by: danielTari <daniel@dhis2.org> Co-authored-by: Xavier Molloy <xavi@dhis2.org>
…#4624) * feat: [ANDROAPP-7472] copilot review * feat: [ANDROAPP-7472] Repositories and usecase * feat: [ANDROAPP-7472] refactor prepare query * fix: [ANDROAPP-7472] make fetch results not suspend * fix: [ANDROAPP-7472] Code review comments * fix: [ANDROAPP-7472] Code review comments * feat: [ANDROAPP-7472] copilot review * fix: [ANDROAPP-7472] Code review comments * chore: [ANDROAPP-7472] reduce cognitive complexity * chore: [ANDROAPP-7472] Address final copilot review comments * feat: [ANDROAPP-7472] Add tests for new repository and usecases (dhis2#4625) * feat: [ANDROAPP-7472] IV Koin injection for implementation (dhis2#4626) * feat: [ANDROAPP-7472] Koin injection for implementation * feat: [ANDROAPP-7472] Remove verbose import * feat: [ANDROAPP-7472] Add usecase to viewmodel and its factory * feat: [ANDROAPP-7472] Fix compilation error, unit tests * fix: [ANDROAPP-7472] Code review comments * chore: [ANDROAPP-7472] Small code review improvements
…el [skip size] (dhis2#4627) * feat: [ANDROAPP-7472] copilot review * fix: [ANDROAPP-7472] Code review comments * feat: [ANDROAPP-7472] copilot review * fix: [ANDROAPP-7472] Code review comments * feat: [ANDROAPP-7472] Add tests for new repository and usecases (dhis2#4625) * chore: [ANDROAPP-7472] Small code review improvements * feat: [ANDROAPP-7472] Load search results with new use case, map to old model * fix: [ANDROAPP-7472] Code review comments * chore: [ANDROAPP-7472] Replace old repository calls with new usecase * chore: [ANDROAPP-7472] Adapt tests to new usecase * chore: [ANDROAPP-7472] Adapt usecase to return unpaginated results, fix sonar code smells
* feat: [ANDROAPP-7370] Support 6 and 12 hours metadata sync * fix tests * ktlint * ktlint * fix: [ANDROAPP-7370] ktlint * fix test * restore ui when selecting sync period --------- Co-authored-by: Xavier Molloy <xavi@dhis2.org>
…and clear some unused functions (dhis2#4642)
…4634) * fix(translations): sync translations from transifex (develop) * fix(translations): sync translations from transifex (develop) * fix: remove unescaped characters * fix(translations): sync translations from transifex (develop) --------- Co-authored-by: andresmr <andres@dhis2.org>
…ork available on login screen (dhis2#4609)
…ize] (dhis2#4646) * fix(translations): sync translations from transifex (develop) * fix: remove \? escape character in KMM modules * fix: remove \"+\" escape character in KMM modules * fix(translations): sync translations from transifex (develop) --------- Co-authored-by: andresmr <andres@andresmr.com>
…hod (dhis2#4650) * test: Add NotesIdlingResource to NoteDetailPresenter.kt on save() method * Update app/src/main/java/org/dhis2/usescases/notes/noteDetail/NoteDetailPresenter.kt Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* test: add wait for view on DataSetTableRobot.kt * test: add waitForView on checkNoteWasNotCreated in NoteRobot.kt * test: add waitUntilExactlyOneExists on some actions in TeiDashboardRobot.kt * test: remove un used methods on TeiDashboardRobot.kt * wait for confirmation button to be displayed * wait for confirmation button to be displayed --------- Co-authored-by: Pablo Pajuelo Cabezas <ppajueloc@gmail.com>
…tion-token-and-log-in [skip size] (dhis2#4637) * feat: Register the device * feat: Enroll device in the SDK * feat: POC full login with OAuth * feat: remove hardcoded server * feat: Move Oauth flow to CredentialsScreen.kt * feat: Clear CustomTabs sessions when starting the login flow * refactor: move hardcoded error message to resources * feat: hide credentialsContainer when is an OAuth login * change initialization order to avoid creashes * feat: update login button text to display oauth login * feat: set states for running log in process * SDK support * refactor: merge LegacyLogin and OAuthLogin * feat: Improve Server title and image background * refactor: Remove Login with DHIS2 button text * feat: automatically enroll when user arrives to credentials screen with OAuth * test: update CredentialsViewModelTest.kt * test: remove testing url * fix: Login Repository * fix: SonarCloud warnings * test: Add waitForView to assert that a note has been created * fix: avoid non null assertion in LoginUserWithOAuth.kt * fix: remove clear cache
…amework (dhis2#4529) * test(navigation): add integration tests for initial screen navigation logic Signed-off-by: andresmr <andres@dhis2.org> * fix(navigation): update integration test setup to include LoginRepository Signed-off-by: andresmr <andres@dhis2.org> * refactor(navigation): rename initial screen integration test to login screen and streamline setup Signed-off-by: andresmr <andres@dhis2.org> * refactor(test): update LoginScreenIntegrationTest to use Kotlin test annotations Signed-off-by: andresmr <andres@dhis2.org> * refactor(test): update test annotations to use Kotlin test framework Signed-off-by: andresmr <andres@dhis2.org> * test: reset dispatchers after tests in PinViewModelTest.kt --------- Signed-off-by: andresmr <andres@dhis2.org>
* refactor how dataset waits to table * refactor create note robot
…) [skip size] (dhis2#4667) * feat: [ANDROAPP-7470] file relocation * feat: [ANDROAPP-7470] FetchOptionSetOptions usecase (dhis2#4668) * feat: [ANDROAPP-7470] Address sonar code smell * refactor: Replace suspend operator by returning a cold flow (dhis2#4671) --------- Co-authored-by: Andrés Miguel Rubio <andres@dhis2.org>
…his2#4669) * feat: [ANDROAPP-7470] Fetch Search parameters use case * feat: [ANDROAPP-7470] small adaptation * feat: [ANDROAPP-7470] Adapt to new enum values in input type * feat: [ANDROAPP-7470] code review comments * feat: [ANDROAPP-7470] code review comments * feat: [ANDROAPP-7470] Remove todo, make methods internal in Fetch Search parameters usecase * feat: [ANDROAPP-7470] Add tests for fetch parameters usecase (dhis2#4670) * feat: [ANDROAPP-7470] Fetch Search parameters use case * feat: [ANDROAPP-7470] small adaptation * feat: [ANDROAPP-7470] Adapt to new enum values in input type * feat: [ANDROAPP-7470] code review comments * feat: [ANDROAPP-7470] code review comments * feat: [ANDROAPP-7470] Remove todo, make methods internal in Fetch Search parameters usecase * feat: [ANDROAPP-7470] Add tests for fetch parameters usecase
…ep steps (dhis2#4674) * feat: [ANDROAPP-7470] Injection of new usecases and final prep steps * feat: [ANDROAPP-7470] Remove actual desktop class
* chore: [ANDROAPP-7498] Update latest sdk snapshot * chore: [ANDROAPP-7498] Add new period types to enums and labels * chore: [ANDROAPP-7498] Extend test with new period types * chore: [ANDROAPP-7498] Fix tests
…n programs (dhis2#4672) * chore: [ANDROAPP-7498] Update latest sdk snapshot * chore: [ANDROAPP-7498] Add new period types to enums and labels * chore: [ANDROAPP-7498] Extend test with new period types * chore: [ANDROAPP-7498] Fix tests * chore: [ANDROAPP-7517] add mandatory enrollmentCategoryCombo to testing programs update SDK version * chore: [ANDROAPP-7517] format * chore: [ANDROAPP-7517] fix test * chore: [ANDROAPP-7498] Extend test with new period types * chore: [ANDROAPP-7498] Fix tests * chore: [ANDROAPP-7517] add mandatory enrollmentCategoryCombo to testing programs update SDK version * chore: [ANDROAPP-7517] format * chore: [ANDROAPP-7517] fix test
…module [skip size] (dhis2#4675) * feat: [ANDROAPP-7470] Injection of new usecases and final prep steps * feat: [ANDROAPP-7470] Remove actual desktop class * feat: [ANDROAPP-7470] Move SearchParameters Screen to tracker module, replace fieldUiModel with trackerInputModel * feat: [ANDROAPP-7470] ktlint * feat: [ANDROAPP-7470] Fix renderiing for option sets in boolean types * feat: [ANDROAPP-7470] Conflict resolution * feat: [ANDROAPP-7470] Conflict resolution and small fix * feat: [ANDROAPP-7470] ktlint * feat: [ANDROAPP-7470] sonar code smell * feat: [ANDROAPP-7470] test rebase feature branch * feat: [ANDROAPP-7470] test rebase feature branch * feat: [ANDROAPP-7470] test rebase feature branch * feat: [ANDROAPP-7470] copilot comment ktlint
…p for completeExpiryAndFutureDays test (dhis2#4681)
…dhis2#4640) * feat: [ANDROAPP-7459][1/6] Added new worker to update sync settings * feat: [ANDROAPP-7459][2/6] Added required implementations for new workers (dhis2#4639) * feat: [ANDROAPP-7459][2/6] Added required implementations for new workers * fix comments * feat: [ANDROAPP-7459][3/6] Added wew sync metadata worker * fix rebase * fix comments * feat: [ANDROAPP-7459][4/6] Implement new sync in the app [skip size] (dhis2#4641) * build: [ANDROAPP-7459][6/6] Remove unused classes [skip size] (dhis2#4649) * fix crash when deleting account while metadata sync is in progress
* fix: [ANDROAPP-7398] Use correct snackbar colors * fix: [ANDROAPP-7398] delete unused imports
chore: Build Release 3.4.1
…en the user manually checks for updates in the Settings menu (dhis2#4927)
…s2#4923) Signed-off-by: Manu Muñoz <manu.munoz@dhis2.org>
…ctivity (dhis2#4917) * fix: [ANDROAPP-7658] Do not display sync infobar if teiDashboard is displayed from the event capture activity * fix: [ANDROAPP-7658] fix unit tests * fix: [ANDROAPP-7658] hide sync button in landscape when creating new events
…tadata sync (dhis2#4933) * Rechecks navigational bar server config after metadata sync * Fix integration tests of MainViewModel
dhis2#4919) * fix: [ANDROAPP-7664] Improve load time of dashboard screen * Remove default analytics related tests * set runTest in dashboardViewModelTest * fix dashboard android tests * revert changes to AndroidIdlingResource.kt * chained events calling increment * remove unnecessary ui thread call * use unconditional coroutine tracker methods * use unconditional coroutine tracker methods * fix infinite collection in CredentialsViewModel.kt * add decrement to error flow * test: [ANDROAPP-7664] decrement idling resource on error in note detail presenter * force decrement to idle * fix sonarcloud comments * do not retry on timeout * Root cause — DashboardViewModel.navigationBarUIState used NavigationBarUIState(items=emptyList(), TEIDashboardItems.DETAILS) as the stateIn initial value. This caused the LaunchedEffect in TeiDashboardMobileActivity to immediately navigate to TEIDataFragment (the DETAILS tab) on first composition, even in landscape mode where the DETAILS tab isn't displayed. loadNavigationBarItems() would then quickly determine DETAILS shouldn't be shown in landscape and switch the selected item to the first real tab (ANALYTICS, NOTES, etc.), causing TEIDataFragment to be immediately paused. onPause() calls presenter.onDettach() → compositeDisposable.clear(), but because the outer switchMap subscription uses subscribeOn(io), the increment() inside the switchMap body can run asynchronously on the IO thread after the clear. This left TeiDataIdlingResourceSingleton's counter stuck at 1 — TEI_DATA never became idle — and Espresso timed out. Fix (DashboardViewModel.kt) — Changed the stateIn initial value from NavigationBarUIState(items=emptyList(), TEIDashboardItems.DETAILS) to NavigationBarUIState() (null selectedItem). This means: - No fragment navigation happens until loadNavigationBarItems() completes with the actual items - In landscape, TEIDataFragment is never created and TEI_DATA stays idle - In portrait, navigation to DETAILS happens once (after nav items load), exactly the same net result as before --------- Co-authored-by: Xavier Molloy <xavi@dhis2.org>
* build: Release 3.4.1 * update release notes Signed-off-by: Manu Muñoz <manu.munoz@dhis2.org> * chore: update dependency verification metadata --------- Signed-off-by: Manu Muñoz <manu.munoz@dhis2.org> Co-authored-by: Manu Muñoz <manu.munoz@dhis2.org> Co-authored-by: @dhis2-bot <apps@dhis2.org>
build: Release 3.4.1 [skip size]
[Automatic] Upstream release 3.4.1
…stream-release/3.4.1-from-main (with ramp-main as base)
[Automatic] Upstream release 3.4.1
alex-vt
commented
Jul 7, 2026
68c6a8a to
3cc645e
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The github.com/dhis2/dhis2-android-capture-app/releases/tag/3.4.1 upstream release is already merged into
main, and then heremainis merged into the current branch, withramp-mainas base. This will bring the upstream v3.4.1 changes while keeping both biometric and RAMP-specific features.