diff --git a/CHANGELOG.md b/CHANGELOG.md index 560b89694..5fda32172 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,14 @@ Adheres to [Semantic Versioning](http://semver.org/). ##### Bug Fixes +## [7.1.7](https://github.com/ngageoint/mage-android/releases/tag/7.1.7) + +##### Features + +##### Bug Fixes +* Do not add default forms to an observation more than once. +* Filter archived forms when adding to new observation. + ## [7.1.6](https://github.com/ngageoint/mage-android/releases/tag/7.1.6) ##### Features diff --git a/mage/build.gradle b/mage/build.gradle index cdd90f989..fed2fbef1 100644 --- a/mage/build.gradle +++ b/mage/build.gradle @@ -11,7 +11,7 @@ plugins { } group 'mil.nga.giat.mage' -version '7.1.6' +version '7.1.7' ext { sourceRefspec = Grgit.open(currentDir: project.rootDir).head().id @@ -69,7 +69,7 @@ android { applicationId "mil.nga.giat.mage" versionName project.version versionCode VERSION_CODE as int - minSdkVersion 24 + minSdkVersion 25 targetSdkVersion 30 multiDexEnabled true resValue "string", "serverURLDefaultValue", serverURL diff --git a/mage/src/main/java/mil/nga/giat/mage/form/FormViewModel.kt b/mage/src/main/java/mil/nga/giat/mage/form/FormViewModel.kt index ce1d8e3e2..4ec140849 100644 --- a/mage/src/main/java/mil/nga/giat/mage/form/FormViewModel.kt +++ b/mage/src/main/java/mil/nga/giat/mage/form/FormViewModel.kt @@ -77,11 +77,14 @@ open class FormViewModel @Inject constructor( event.forms.mapNotNull { form -> fromJson(form.json) } + .filterNot { it.archived } .forEachIndexed { index, form -> formDefinitions.add(form) val defaultForm = FormPreferences(context, event.id, form.id).getDefaults() - repeat((form.min ?: 0) + if (form.default) 1 else 0) { + val formMin = form.min ?: 0 + val formCount = formMin + if (form.default && formMin == 0) 1 else 0 + repeat(formCount) { val formState = FormState.fromForm(eventId = event.remoteId, form = form, defaultForm = defaultForm) formState.expanded.value = index == 0 forms.add(formState) diff --git a/mage/src/main/java/mil/nga/giat/mage/observation/edit/FormPickerBottomSheetFragment.kt b/mage/src/main/java/mil/nga/giat/mage/observation/edit/FormPickerBottomSheetFragment.kt index 5caa5bd11..b5dab9f43 100644 --- a/mage/src/main/java/mil/nga/giat/mage/observation/edit/FormPickerBottomSheetFragment.kt +++ b/mage/src/main/java/mil/nga/giat/mage/observation/edit/FormPickerBottomSheetFragment.kt @@ -60,13 +60,12 @@ class FormPickerBottomSheetFragment: BottomSheetDialogFragment() { val forms = jsonForms .asSequence() - .map { form -> + .mapNotNull { form -> JsonParser.parseString(form.json).asJsonObjectOrNull()?.let { json -> Form.fromJson(json) } } - .filterNotNull() - .filter { !it.archived } + .filterNot { it.archived } .map { form -> val formMax = form.max val totalOfForm = viewModel.observationState.value?.forms?.value?.filter { it.definition.id == form.id }?.size ?: 0 diff --git a/mage/src/main/java/mil/nga/giat/mage/sdk/preferences/ServerApi.java b/mage/src/main/java/mil/nga/giat/mage/sdk/preferences/ServerApi.java index 6d24461a8..b31e25db8 100644 --- a/mage/src/main/java/mil/nga/giat/mage/sdk/preferences/ServerApi.java +++ b/mage/src/main/java/mil/nga/giat/mage/sdk/preferences/ServerApi.java @@ -112,7 +112,6 @@ private void parseAuthenticationStrategies(JSONObject json) { * @param json json value */ private void populateValues(String sharedPreferenceName, JSONObject json) { - @SuppressWarnings("unchecked") Iterator iter = json.keys(); while (iter.hasNext()) { String key = iter.next();