Releases: dhis2/dhis2-android-sdk
Release 1.10.1
Bug
ANDROSDK-1883 Program indicator engine shows NaN
ANDROSDK-1871 Program labels are not translated
ANDROSDK-1876 SQL query was failing with orgunit names including single quotes
ANDROSDK-1882 DataSetIntance evaluation does not filter by assgined orgunits
ANDROSDK-1885 Tracker importer: quicker cancellation of uncreated job
ANDROSDK-1893 Program specific setting (limit by orgunit) is overriden by global parameter
ANDROSDK-1868 Ignore null dimensions in Visualizations
ANDROSDK-1394 Do no change state if value is not changed
Release 1.10.0.1
Bug
ANDROSDK-1866 Events without registration are not downloaded
Release 1.10.0
Features
ANDROSDK-1218 Import / Export database
ANDROSDK-1630 Download custom icons for metadata
ANDROSDK-1799 Line listing in local analytics
ANDROSDK-1801 Support multiselect in analytics
ANDROSDK-1695 Download attributes/dataElements to display in relationships
ANDROSDK-1750 Add option to bypass DHIS2 version restriction
ANDROSDK-1800 Download configurable basemaps
ANDROSDK-1803 Add keyDefaultBaseMap property in SystemSettings
ANDROSDK-1806 Download custom tracker terminology
ANDROSDK-1816 Restrict APK distribution version by userGroup
ANDROSDK-1817 Download userGroups
ANDROSDK-1833 Create method .getCurrentAccount() in AccountManager
ANDROSDK-1839 Expose api/system/ping call
Bug
ANDROSDK-1852 Android API <= 24 fail to login in Let's encrypt servers
ANDROSDK-1818 OpenID login is failing due to database check
ANDROSDK-1825 EventService: method `isEventExpired` fails when eventDate is null
ANDROSDK-1835 Editable events crashes when no event or due date provided
ANDROSDK-1841 [Crash] ParserException: Invalid string token 'AVG' at line:1 character:0
Library updates:
ANDROSDK-1789 Implement Paging3
Update Gradle (8.3.1)
Release 1.9.1
Bugfixes:
- New tracker import: do not send values that have not been modified (trackerDataValues, attributeValues) (ANDROSDK-1564).
- Add missing value type validators (ANDROSDK-1777).
- Expose Attribute collection repository (ANDROSDK-1776).
- Database is not responsive when using encryption (ANDROSDK-1784).
Library updates:
- Update kotlin (1.9.21 and gradle (8.2.0) (ANDROSDK-1793).
- Update SQLCipher (4.5.5).
Release 1.9.0
Features
- ANDROSDK-1743 Evaluate a TEI header
- ANDROSDK-1728 Add a parameter to define a TEI header per program
- ANDROSDK-1688 Add ObjectStyle to Indicators
- ANDROSDK-1723 Add
disableReferrals
field in Android Settings model - ANDROSDK-1724 Add
disableCollapsibleSections
field in Android Settings model - ANDROSDK-1725 Add
description
field ProgramStageSection
Bug
- ANDROSDK-1694 Remove initial "transfers" query in Tracker upload
- ANDROSDK-1745 Event status filter is not applied if event date fiter is null
- ANDROSDK-1749 Inherit IMAGE attribute is not created in inherited TEI
- ANDROSDK-1765 Download ProgramStageSection render type
- ANDROSDK-1767 Reinforce method "isLogged" in UserModule
Library changes:
- ANDROSDK-1737 Update Kotlin version to 1.9.10.
- ANDROSDK-1740 Upgrade OkHttp library to 4.10.0. It might imply the update of OkHttp resolution to at least 4.10.0.
- ANDROSDK-1618 Dagger is replaced by Koin
- Some changes in the SDK forces to update Gradle to >= 7.4.2 in the consuming app.
Breaking changes:
-
If you are using Kotlin, you might experience some breaking changes in your code. These changes come from the continuous refactor of the codebase to Kotlin and usually they cannot be avoided. They have to do with how Java and Kotlin deal with nullability and, in general, these changes will introduce more robustness (null safety) in your code.
A common change is the return type of different methods, such as
ObjectRepository
. Taking DataElement as an example, this query (dataElements().uid("uid").get()) in the JAVA-implemented repository will return aDataElement!
in Kotlin, which means that it can't tell if the returned object is nullable or not. In this case, the Kotlin compiler let you deal with these object as if they were NonNull, which could lead to a NullPointerException. Now, the repository will return aDataElement?
, which explicitly informs about the nullability of the object.
Release 1.8.2
Bugfix:
- Do not send dataValues / attributes that are not assigned to a program (ANDROSDK-1704).
- If search text contains a comma the api fails (ANDROSDK-1219).
- Network authentication does not support special characters (ANDROSDK-1739).
- Login offline in local instance is not working (ANDROSDK-1706).
- Relationship with missed item are not properly cleaned (ANDROSDK-1715).
Release 1.8.1.1
Bugfix:
- Missing Visualization after update to 1.8.1 (ANDROSDK-1692).
Release 1.8.1
Bugfix:
- Program indicators: implement support for operator "is...in" (ANDROSDK-1686), add missing support for d2:minValue and d2:maxValue functions (ANDROSDK-1571).
- Analytics: calculation support (ANDROSDK-1687).
- Map download: add optional NetworkTimeout parameter (ANDROSDK-1690).
Release 1.8.0
Features:
- New Tracker endpoint by default in 2.40: use new exporter (ANDROSDK-1641) and new importer by default (ANDROSDK-1634).
- AccountManager: add "syncState" property in DatabaseAccount (ANDROSDK-1593).
- AccountManager: make "maxAccounts" nullable, meaning limitless (ANDROSDK-1631).
- ProgramStageWorkingList support (ANDROSDK-1637, ANDROSDK-1650).
- Add DataValueConflict repository (ANDROSDK-1612).
- Add online DataStore repository (ANDROSDK-1588).
- Add MULTI_TEXT value type (ANDROSDK-1636).
- Add CANVAS ValueTypeRenderingType (ANDROSDK-1640).
- Analytics: add support for query modifiers (ANDROSDK-1569).
- Analytics: add NULL literal (ANDROSDK-1629).
- Visualization settings: method to filter by program or dataSet (ANDROSDK-1566).
- TrackedEntityAttribute: add "confidential" property (ANDROSDK-1613).
- ProgramStage: add "validationStrategy" property (ANDROSDK-1648).
Bugfix:
- Properties "createdAtClient" and "lastUpdatedAtClient" are set to null in the device after data download (ANDROSDK-1653).
- Property "completeBy" is ignored in events (ANDROSDK-1659).
- Relationships are not persisted if they are download in other bundle (ANDROSDK-1645).
- Remove incomplete or inaccessible CategoryOptionCombos (ANDROSDK-1592).
Libraries:
- Added dependency with "kotlinx-datetime".
- Added dependency with "kotlin-coroutines".
- Removed Apache libraries (commons-lang3, jexl).
- Removed Jode Time library.
Breaking changes:
- Applications must enable coreLibraryDesugaring. The SDK uses kotlinx-datetime, which requires desugaring for Android API < 26 (Google devs docs) (ANDROSDK-1632).
- DHISVersionManager: removed shortcut methods to check the version (such as
is2_38(), is2_39(),...
). These methods can be easily replaced by the methodisVersion(DHISVersion.V2_38)
,isVersion(DHISVersion.V2_39)
,... . - Remove method "withCategoryOptionCombos()" in "CategoryComboCollectionRepository". Those objects were not nested in the CategoryCombos, so it was useless.
- UserCredentials class is simplified and the repository is marked as deprecated. The class UserCredentials has been deprecated in the backend. The SDK keeps the repository and the class with a few properties (username, name, userRoles). Now, these properties are owned by the User class, so use User class instead (ANDROSDK-1584).
Release 1.7.1
Bugfix:
- Update SQLCipher to prevent "Defective OpenSSL Version (OpenSSL 1.1.1g)" (ANDROSDK-1611).
- File resize helper: store resized image in cache folder (ANDROSDK-1597).
- Include paging for options call (ANDROSDK-1601).
- Wrong composed Program Indicator expressions cause the App to crash (ANDROSDK-1604).
- Support open source maps (ANDROSDK-1605).
- Fix daysInBetween function to consider summer time (ANDROSDK-1606).
- DataSetInstance filters: filter by relevant attributeOptionCombo (ANDROSDK-1608), filter relevant period types (ANDROSDK-1600).