diff --git a/android/engine/src/main/java/org/smartregister/fhircore/engine/configuration/workflow/ApplicationWorkflow.kt b/android/engine/src/main/java/org/smartregister/fhircore/engine/configuration/workflow/ApplicationWorkflow.kt index 68848c238e..86cea80b89 100644 --- a/android/engine/src/main/java/org/smartregister/fhircore/engine/configuration/workflow/ApplicationWorkflow.kt +++ b/android/engine/src/main/java/org/smartregister/fhircore/engine/configuration/workflow/ApplicationWorkflow.kt @@ -65,4 +65,7 @@ enum class ApplicationWorkflow { /** A workflow to launch delete draft questionnaires */ DELETE_DRAFT_QUESTIONNAIRE, + + /** A workflow that opens URL in external app (browser, email, etc.) */ + OPEN_URL, } diff --git a/android/engine/src/main/res/drawable/ic_feedback.xml b/android/engine/src/main/res/drawable/ic_feedback.xml new file mode 100644 index 0000000000..1765191ed0 --- /dev/null +++ b/android/engine/src/main/res/drawable/ic_feedback.xml @@ -0,0 +1,10 @@ + + + diff --git a/android/quest/src/main/assets/configs/app/navigation_config.json b/android/quest/src/main/assets/configs/app/navigation_config.json index 08a67be1f2..2bfc0c888a 100644 --- a/android/quest/src/main/assets/configs/app/navigation_config.json +++ b/android/quest/src/main/assets/configs/app/navigation_config.json @@ -297,6 +297,28 @@ } ] }, + { + "id": "feedback", + "visible": true, + "display": "Feedback", + "menuIconConfig": { + "type": "local", + "reference": "ic_feedback" + }, + "actions": [ + { + "trigger": "ON_CLICK", + "workflow": "OPEN_URL", + "id": "openFeedback", + "params": [ + { + "key": "url", + "value": "https://ona.io/home/" + } + ] + } + ] + }, { "id": "settings", "visible": true, diff --git a/android/quest/src/main/java/org/smartregister/fhircore/quest/util/extensions/ConfigExtensions.kt b/android/quest/src/main/java/org/smartregister/fhircore/quest/util/extensions/ConfigExtensions.kt index 756274dcbe..cb70760246 100644 --- a/android/quest/src/main/java/org/smartregister/fhircore/quest/util/extensions/ConfigExtensions.kt +++ b/android/quest/src/main/java/org/smartregister/fhircore/quest/util/extensions/ConfigExtensions.kt @@ -26,6 +26,7 @@ import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.compose.runtime.snapshots.SnapshotStateMap import androidx.core.content.ContextCompat +import androidx.core.net.toUri import androidx.core.os.bundleOf import androidx.navigation.NavController import androidx.navigation.NavOptions @@ -245,6 +246,18 @@ fun ActionConfig.handleClickEvent( ) navController.navigate(MainNavigationScreen.AlertDialogFragment.route, args) } + ApplicationWorkflow.OPEN_URL -> { + val url = interpolatedParams.find { it.key == "url" }?.value + if (!url.isNullOrBlank()) { + try { + val intent = Intent(Intent.ACTION_VIEW, url.toUri()) + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + ContextCompat.startActivity(navController.context, intent, null) + } catch (e: Exception) { + context?.showToast("Unable to open url ${e.message}", Toast.LENGTH_SHORT) + } + } + } else -> return } }