Skip to content
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

Update develop with - Release 3.1.0 #3890

Merged
merged 21 commits into from
Nov 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
3a8cfec
fix: [ANDROAPP-6523] Scheduling dialog not showing configured due dat…
Balcan Nov 7, 2024
277cf70
fix: [ANDROAPP-6617] inject FilterManager on provideDeleteUserData (#…
andresmr Nov 7, 2024
a1b4708
fix: [ANDROAPP-6635] allow manual selection when gps is off (#3864)
mmmateos Nov 8, 2024
ae702c6
fix: [ANDROAPP-6647] hide search on polygons (#3868)
andresmr Nov 8, 2024
219c46a
Fix navigation bar animation (#3859) (#3872)
andresmr Nov 8, 2024
cb924d1
fix: [ANDROAPP-6608] Display enrollment form error/warning dialog in …
Balcan Nov 11, 2024
ebb669f
fix: [ANDROAPP-6508] Files and images downloaded on devices lower tha…
ferdyrod Nov 11, 2024
9a656df
fix: [ANDROAPP-6634] relationship map navigation (#3867)
mmmateos Nov 11, 2024
6106696
fix: [ANDROAPP-6565] refresh program rules update (#3873)
andresmr Nov 12, 2024
f732d99
fix: [ANDROAPP-6622] Add progress to search location (#3875)
Balcan Nov 12, 2024
0dfdaee
fix: [ANDROAPP-6646] Location/accuracy visibility does not affect map…
ferdyrod Nov 13, 2024
fa7bd8e
fix: [ANDROAPP-6398] Tei dashbard takes too long to load if option se…
Balcan Nov 13, 2024
ebe6eb8
fix: [ANDROAPP-6650] search outside program crash (#3879)
mmmateos Nov 13, 2024
126ef89
ci: [ANDROAPP-6339] Generate Github release through RELEASE.MD (#3877)
andresmr Nov 14, 2024
27ff180
fix: [ANDROAPP-6493] take incident date into account for scheduling e…
xavimolloy Nov 14, 2024
2a6b92a
fix: [ANDROAPP-6645] Search results are lost when moving or selecting…
ferdyrod Nov 14, 2024
0c2386c
fix: [ANDROAPP-64659] Implement no periods available functionality (#…
xavimolloy Nov 15, 2024
66b4e52
finishing-3.1.0-release (#3888)
andresmr Nov 19, 2024
fb48526
Merge branch 'develop' into release/3.1.0-RC
andresmr Nov 19, 2024
02bc4d0
Update deploy release actions (#3893)
andresmr Nov 20, 2024
2e22800
test: Ignore shouldSuccessfullyScheduleAnEvent
andresmr Nov 20, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 6 additions & 22 deletions .github/workflows/deploy-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,25 +18,20 @@ on:
description: 'tag'
required: true
type: string
is_patch:
description: 'Is the new version a patch'
required: true
type: boolean
default: false


jobs:
Build-Apk:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Set repository name as env variable
run: echo "repository_name=$(echo '${{ github.repository }}' | awk -F '/' '{print $2}')" >> $GITHUB_ENV
- name: Read version name from file
working-directory: ./gradle
id: read-version
run: echo "::set-output name=vName::$(grep 'vName' libs.versions.toml | awk -F' = ' '{print $2}' | tr -d '"')"
- name: Set Up JDK
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
distribution: 'zulu' # See 'Supported distributions' for available options
java-version: '17'
Expand Down Expand Up @@ -66,23 +61,12 @@ jobs:
packageName: com.dhis2
releaseFiles: ${{ env.main_project_module }}/build/outputs/apk/dhisPlayServices/release/dhis2-v${{ steps.read-version.outputs.vName }}-googlePlay.apk
track: production
status: inProgress
whatsNewDirectory: whatsnew
userFraction: 0.99


- name: Github Patch Release
if: ${{ (inputs.github_release == true) && (inputs.is_patch == true) }}
uses: ncipollo/release-action@v1
with:
allowUpdates: true
draft: true
generateReleaseNotes: true
name: "Android Capture App for DHIS 2 (v${{ inputs.release_tag_name }}) - Patch version"
tag: ${{ inputs.release_tag_name }}
artifacts: ${{ env.main_project_module }}/build/outputs/apk/dhis/release/dhis2-v${{ steps.read-version.outputs.vName }}.apk,${{ env.main_project_module }}/build/outputs/apk/dhisPlayServices/release/dhis2-v${{ steps.read-version.outputs.vName }}-googlePlay.apk,${{ env.main_project_module }}/build/outputs/apk/dhis/debug/dhis2-v${{ steps.read-version.outputs.vName }}-training.apk

- name: Github New Release
if: ${{ (inputs.github_release == true) && (inputs.is_patch == false) }}
- name: Upload to Github
if: ${{ inputs.github_release }}
uses: ncipollo/release-action@v1
with:
allowUpdates: true
Expand Down
95 changes: 32 additions & 63 deletions RELEASE.md
Original file line number Diff line number Diff line change
@@ -1,89 +1,58 @@
# Release notes - Android App for DHIS2 - 3.0.1

### Bug
## NEW FUNCTIONALITY AND WEB PARITY

[ANDROAPP-5753](https://dhis2.atlassian.net/browse/ANDROAPP-5753) Formatting Issues with Attribute Values on TEI Card Dashboard
**New Capture Coordinates process:** The 3.1 version introduces a list of new features designed to enhance the capture coordinates process. These improvements aim to provide greater accuracy, flexibility, and control over location data capture.
- **Accuracy:** The capture coordinates process now includes a feature that displays the precision of the captured location. This allows users to see how accurate their location data is in real-time. This parameter can also be restricted using the Android Settings WebApp.
- **Search Functionality:** A new search functionality has been added, allowing users to look up specific locations by name or address. Users are also able to navigate through the map and perform area searches to discover other locations within a specified region.
- **Block Manual Capture:** Using the Android Settings Web App, administrators now have the option to block manual location capture. When this setting is enabled, users can only capture the current location and cannot manually select or search a different one. This ensures that location data remains consistent and accurate.

[ANDROAPP-5808](https://dhis2.atlassian.net/browse/ANDROAPP-5808) GS1 QR code input does not display popup if Scanned QR code is not GS1 type
[Jira](https://dhis2.atlassian.net/browse/ANDROAPP-6330) | [Card1](https://s3.eu-west-1.amazonaws.com/content.dhis2.org/dhis2-android/release+notes+3.1/release+cards/Android-3-1-disabled-manual-capture.png) | [Card2](https://s3.eu-west-1.amazonaws.com/content.dhis2.org/dhis2-android/release+notes+3.1/release+cards/Android-3-1-map-accuracy.png) | [Card3](https://s3.eu-west-1.amazonaws.com/content.dhis2.org/dhis2-android/release+notes+3.1/release+cards/Android-3-1-map-search.png) | [Documentation](https://docs.dhis2.org/en/use/android-app/program-features.html#capture_app_programs_common_features_map_accuracy)

[ANDROAPP-5873](https://dhis2.atlassian.net/browse/ANDROAPP-5873) Thread lock when app is unable to download reserved values
**Improve transfers flow:** Significant enhancements to the transfer flow, aimed at making the process more user-friendly and transparent. The transfer button has been moved to a more accessible location within the three dot menu in the TEI Dashboard, ensuring that users can easily find and initiate transfers without unnecessary navigation. It also has introduced new dialogs throughout the transfer process. These dialogs provide clear, step-by-step guidance, ensuring that users understand each part of the process.

[ANDROAPP-5953](https://dhis2.atlassian.net/browse/ANDROAPP-5953) Option set not working well in data set if the code of option constains character "\_"
[Jira](https://dhis2.atlassian.net/browse/ANDROAPP-6228) | [Documentation](https://docs.dhis2.org/en/use/android-app/program-features.html#capture_app_programs_transfers)

[ANDROAPP-6051](https://dhis2.atlassian.net/browse/ANDROAPP-6051) No feedback is received after the database import is complete
**New relationship section:** Major updates have been made in the relationship tabs, enhancing both functionality and user experience. Relationship cards have been updated with the new design to offer a more intuitive and visually appealing experience. The new design emphasizes clarity and usability, making it easier to view and manage relationships at a glance.

[ANDROAPP-6057](https://dhis2.atlassian.net/browse/ANDROAPP-6057) Form scrolling improvement to prevent overlap with save button
To prevent accidental deletions and enhance user control, a new confirmation dialog also has been added when deleting a relationship. This dialog will prompt users to confirm their action, ensuring that relationships are only deleted intentionally.

[ANDROAPP-6088](https://dhis2.atlassian.net/browse/ANDROAPP-6088) Turning off a working list does not scroll user back to top of screen
[Jira](https://dhis2.atlassian.net/browse/ANDROAPP-6362) | [Card1](https://s3.eu-west-1.amazonaws.com/content.dhis2.org/dhis2-android/release+notes+3.1/release+cards/Android-3-1-relationship-sections.png) | [Card2](https://s3.eu-west-1.amazonaws.com/content.dhis2.org/dhis2-android/release+notes+3.1/release+cards/Android-3-1-new-relationship-cards.png) | [Card3](https://s3.eu-west-1.amazonaws.com/content.dhis2.org/dhis2-android/release+notes+3.1/release+cards/Android-3-1-relationship-deletion.png) | [Documentation](https://docs.dhis2.org/en/use/android-app/program-features.html#capture_app_programs_common_features_relationships)

[ANDROAPP-6094](https://dhis2.atlassian.net/browse/ANDROAPP-6094) Data set duplicates records in unavailable capture OUs
**Sort of unique attributes in the search screen:** Aimed at aligning it with the web instance for a more consistent user experience, this version of the Android app, by default, sorts the unique attributes (QR, barcode) at the top of the list of searchable attributes. Users can quickly and easily find the attributes for a more exact search.

[ANDROAPP-6101](https://dhis2.atlassian.net/browse/ANDROAPP-6101) User is allowed to save errors when the event is with status "complete"
[Jira](https://dhis2.atlassian.net/browse/ANDROAPP-6039) | [Documentation](https://docs.dhis2.org/en/use/android-app/program-features.html#capture_app_programs_unique_qrBar_search)

[ANDROAPP-6116](https://dhis2.atlassian.net/browse/ANDROAPP-6116) App doesn't respect program specification constraints when displaying the list of available relationship types
**Support of biometric dialog:** An enhancement to the biometric authentication feature has been made in 3.1.0. When there is only one account configured, the user can configure biometric authentication (fingerprint or face ID).

[ANDROAPP-6131](https://dhis2.atlassian.net/browse/ANDROAPP-6131) Event program displays no events created message on intial load
[Jira](https://dhis2.atlassian.net/browse/ANDROAPP-4676) | [Documentation](https://docs.dhis2.org/en/use/android-app/android-specific-features.html#capture_app_generic_biometrics_login)

[ANDROAPP-6132](https://dhis2.atlassian.net/browse/ANDROAPP-6132) Double tap on event/enrollment creation could generate duplicates
**Line Listing improvements:** This version of the Android App introduces support for the Category Option Dimension in line listings. This enhancement enables users to apply category options directly within line listings to filter data according to precise criteria, improving data exploration and decision-making processes. This feature greatly enhances the versatility and utility of line listings, empowering users to perform more sophisticated reporting.

[ANDROAPP-6137](https://dhis2.atlassian.net/browse/ANDROAPP-6137) Category Combo section shows incorrect number of fields
Additionally, it has been improved the text alignment within the Line Listing tables to support left alignment. This enhancement ensures better readability and a cleaner presentation of data, making it easier for users to review and analyze their information quickly.

[ANDROAPP-6146](https://dhis2.atlassian.net/browse/ANDROAPP-6146) Incomplete "Download" label when exporting a DB
[Jira1](https://dhis2.atlassian.net/browse/ANDROAPP-6353) | [Jira2](https://dhis2.atlassian.net/browse/ANDROAPP-6121) | [Documentation](https://docs.dhis2.org/en/use/android-app/visual-configurations.html#capture_app_visual_event_visualizations)

[ANDROAPP-6158](https://dhis2.atlassian.net/browse/ANDROAPP-6158) Data set - Sections without DE's never stops displaying the loading icon
## USER EXPERIENCE

[ANDROAPP-6174](https://dhis2.atlassian.net/browse/ANDROAPP-6174) When same day \(eg. 20 June\) is chosen for a future month, the scheduled date always shows "Today"
**Responsive Home Screen:** In this Android App version a new dynamic home screen that adapts to the number of programs available has been implemented. This update replaces the old static list that didn’t adjust to the screen, providing a more responsive and user-friendly interface.The responsive design makes better use of screen real estate, providing a more engaging and functional home screen layout.

[ANDROAPP-6181](https://dhis2.atlassian.net/browse/ANDROAPP-6181) ConcurrentModificationException
[Jira](https://dhis2.atlassian.net/browse/ANDROAPP-5394) | [Card](https://s3.eu-west-1.amazonaws.com/content.dhis2.org/dhis2-android/release+notes+3.1/release+cards/Android-3-1-responsive-home-screen.png) | [Documentation](https://docs.dhis2.org/en/use/android-app/android-specific-features.html#capture_app_home)

[ANDROAPP-6182](https://dhis2.atlassian.net/browse/ANDROAPP-6182) \(RuntimeException\) Crash when rotating device in schedule screen
**Scheduled events dialog:** As a continuation of the new schedule dialog introduced in the version 3.0, a new intuitive and user-friendly schedule dialog has been implemented to enhance the overall user experience, making it easier to book, reschedule, or cancel events.

[ANDROAPP-6183](https://dhis2.atlassian.net/browse/ANDROAPP-6183) \(UnsupportedOperationException\) crash when opening a map
[Jira](https://dhis2.atlassian.net/browse/ANDROAPP-6229) | [Card1](https://s3.eu-west-1.amazonaws.com/content.dhis2.org/dhis2-android/release+notes+3.1/release+cards/Android-3-1-schedule-new.png) | [Card2](https://s3.eu-west-1.amazonaws.com/content.dhis2.org/dhis2-android/release+notes+3.1/release+cards/Android-3-1-enter-cancel-reschedule.png) | [Documentation](https://docs.dhis2.org/en/use/android-app/program-features.html#capture_app_programs_scheduling)

[ANDROAPP-6184](https://dhis2.atlassian.net/browse/ANDROAPP-6184) \(RuntimeException\) crash when rotating device in settings activity
**Improve menus and navigation bar:** A revamped of the menus and navigation bar has been made to be more user-friendly and accessible. It includes a cleaner, more modern look that improves readability and usability. These updates are designed to provide a more efficient and enjoyable user experience.

[ANDROAPP-6185](https://dhis2.atlassian.net/browse/ANDROAPP-6185) Event report date is not updated when changing the due date \(keeping the overdue status\)
[Jira1](https://dhis2.atlassian.net/browse/ANDROAPP-6036) | [Jira2](https://dhis2.atlassian.net/browse/ANDROAPP-6113) | [Card1](https://s3.eu-west-1.amazonaws.com/content.dhis2.org/dhis2-android/release+notes+3.1/release+cards/Android-3-1-menu.png) | [Card2](https://s3.eu-west-1.amazonaws.com/content.dhis2.org/dhis2-android/release+notes+3.1/release+cards/Android-3-1-navigation-bar.png) | [Documentation
](https://docs.dhis2.org/en/use/android-app/visual-configurations.html#capture_app_visual_menu_bars_update)
## CROSS PRODUCT

[ANDROAPP-6187](https://dhis2.atlassian.net/browse/ANDROAPP-6187) Form is not refreshed when changing from closed org unit to open one
**Support for customized Tracker terminology:** Some DHIS2 terminology is not familiar for the end users. For this reason, we are gradually enabling the possibility to customize it to each particular use case. In this version, the term "event" (program label context) is customizable. The admin user will be able to configure it for each program using the Maintenance App, and the Android Capture App will display the customized term instead of the generic one.

[ANDROAPP-6193](https://dhis2.atlassian.net/browse/ANDROAPP-6193) App asks device location permission after granting location permission
[Jira](https://dhis2.atlassian.net/browse/ANDROAPP-5947) | [Documentation](https://docs.dhis2.org/en/use/android-app/program-features.html#capture_app_programs_common_features_customized_terminology)

[ANDROAPP-6197](https://dhis2.atlassian.net/browse/ANDROAPP-6197) Incorrect header in TEI Dashboard card
---

[ANDROAPP-6198](https://dhis2.atlassian.net/browse/ANDROAPP-6198) Android adding '.0' to Data Element causing sync error

[ANDROAPP-6209](https://dhis2.atlassian.net/browse/ANDROAPP-6209) NaN displayed in program indicators

[ANDROAPP-6212](https://dhis2.atlassian.net/browse/ANDROAPP-6212) Cannot share database due to device permissions

[ANDROAPP-6225](https://dhis2.atlassian.net/browse/ANDROAPP-6225) RuntimeException: Unable to start activity ComponentInfo\{com.dhis2/org.dhis2.usescases.searchTrackEntity.SearchTEAc...

[ANDROAPP-6272](https://dhis2.atlassian.net/browse/ANDROAPP-6272) ApplicationNotResponding: ANR for at least 5000 ms.

[ANDROAPP-6273](https://dhis2.atlassian.net/browse/ANDROAPP-6273) ApplicationNotResponding: ANR for at least 5000 ms.

[ANDROAPP-6277](https://dhis2.atlassian.net/browse/ANDROAPP-6277) Working lists aren't applied even when active

[ANDROAPP-6315](https://dhis2.atlassian.net/browse/ANDROAPP-6315) Fix Mobile ui breaking changes in capture app

[ANDROAPP-6318](https://dhis2.atlassian.net/browse/ANDROAPP-6318) Order of TEIs change when moving between landscape and portrait

[ANDROAPP-6332](https://dhis2.atlassian.net/browse/ANDROAPP-6332) \[DEFECT\] Incorrect workflow of Org unit when creating event

[ANDROAPP-6345](https://dhis2.atlassian.net/browse/ANDROAPP-6345) Keyboard malfunction after stock distribution

[ANDROAPP-6346](https://dhis2.atlassian.net/browse/ANDROAPP-6346) \[ANR\] jdk.internal.misc.Unsafe in park

[ANDROAPP-6379](https://dhis2.atlassian.net/browse/ANDROAPP-6379) Time recorded when creating notes

[ANDROAPP-6380](https://dhis2.atlassian.net/browse/ANDROAPP-6380) Keyboard navigation

[ANDROAPP-6407](https://dhis2.atlassian.net/browse/ANDROAPP-6407) \[Defect\] Data entry not saving more than one value

[ANDROAPP-6414](https://dhis2.atlassian.net/browse/ANDROAPP-6414) Clicking save, not now or sync several times

[ANDROAPP-6415](https://dhis2.atlassian.net/browse/ANDROAPP-6415) Login error in landscape

[ANDROAPP-6416](https://dhis2.atlassian.net/browse/ANDROAPP-6416) Percentage input is showing % twice

[ANDROAPP-6417](https://dhis2.atlassian.net/browse/ANDROAPP-6417) Cannot navigate to event details or sync event after navigating back from details
##### **DETAILS**
You can find the list of all new features and all bugs fixed in 3.1.0 [here.](https://dhis2.atlassian.net/projects/ANDROAPP/versions/10851/tab/release-report-all-issues)
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ class TeiDashboardTest : BaseTest() {
}
}

@Ignore("Due Date Appears instead of next event")
@Test
fun shouldSuccessfullyScheduleAnEvent() {
val currentDate = LocalDate.now()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package org.dhis2.data.dhislogic

import org.dhis2.commons.Constants
import org.dhis2.utils.DateUtils
import org.dhis2.commons.date.DateUtils
import org.hisp.dhis.android.core.enrollment.Enrollment
import org.hisp.dhis.android.core.maintenance.D2Error
import org.hisp.dhis.android.core.program.ProgramStage
import timber.log.Timber
import java.util.Calendar
import java.util.Date

class EnrollmentEventGenerator(
private val generatorRepository: EnrollmentEventGeneratorRepository,
Expand Down Expand Up @@ -121,10 +122,11 @@ class EnrollmentEventGenerator(
calendar.set(Calendar.SECOND, 0)
calendar.set(Calendar.MILLISECOND, 0)
var eventDate = calendar.time

val currentDate = DateUtils.getInstance().getStartOfDay(Date())
periodType?.let { eventDate = generatorRepository.periodStartingDate(it, eventDate) }

generatorRepository.setEventDate(eventUid, eventDate)
if (eventDate.before(currentDate) || eventDate == currentDate) {
generatorRepository.setEventDate(eventUid, eventDate)
}
} catch (d2Error: D2Error) {
Timber.e(d2Error)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package org.dhis2.usescases.enrollment

import org.dhis2.R
import org.dhis2.commons.resources.EventResourcesProvider
import org.dhis2.form.data.EnrollmentRepository
import org.dhis2.form.data.metadata.EnrollmentConfiguration

class DateEditionWarningHandler(
private val conf: EnrollmentConfiguration?,
private val eventResourcesProvider: EventResourcesProvider,
) {
private var hasShownIncidentDateEditionWarning = false
private var hasShownEnrollmentDateEditionWarning = false

fun shouldShowWarning(
fieldUid: String,
showWarning: (message: String) -> Unit,
) {
if (fieldUid == EnrollmentRepository.ENROLLMENT_DATE_UID &&
conf?.hasEventsGeneratedByEnrollmentDate() == true &&
!hasShownEnrollmentDateEditionWarning
) {
hasShownEnrollmentDateEditionWarning = true
showWarning(buildMessage())
} else if (fieldUid == EnrollmentRepository.INCIDENT_DATE_UID &&
conf?.hasEventsGeneratedByIncidentDate() == true &&
!hasShownIncidentDateEditionWarning
) {
hasShownIncidentDateEditionWarning = true
showWarning(buildMessage())
}
}

private fun buildMessage() = eventResourcesProvider.formatWithProgramEventLabel(
R.string.enrollment_date_edition_warning_event_label,
conf?.program()?.uid(),
2,
)
}
Loading