diff --git a/app/src/main/java/com/aurora/store/view/ui/commons/ForceRestartDialog.kt b/app/src/main/java/com/aurora/store/view/ui/commons/ForceRestartDialog.kt
new file mode 100644
index 000000000..e700ecb40
--- /dev/null
+++ b/app/src/main/java/com/aurora/store/view/ui/commons/ForceRestartDialog.kt
@@ -0,0 +1,40 @@
+package com.aurora.store.view.ui.commons
+
+import android.app.Dialog
+import android.content.Intent
+import android.os.Bundle
+import androidx.fragment.app.DialogFragment
+import com.aurora.store.R
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
+import dagger.hilt.android.AndroidEntryPoint
+import kotlin.system.exitProcess
+
+@AndroidEntryPoint
+class ForceRestartDialog: DialogFragment() {
+
+ override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
+ return MaterialAlertDialogBuilder(requireContext())
+ .setTitle(R.string.force_restart_title)
+ .setMessage(R.string.force_restart_summary)
+ .setPositiveButton(getString(R.string.action_restart)) { _, _ -> restartApp() }
+ .create()
+ }
+
+ override fun onResume() {
+ super.onResume()
+ dialog?.setCancelable(false)
+ }
+
+ private fun restartApp() {
+ val context = requireContext()
+ val intent = context.packageManager.getLaunchIntentForPackage(context.packageName)
+ val componentName = intent?.component
+
+ val newIntent = Intent.makeRestartActivityTask(componentName).apply {
+ setPackage(context.packageName)
+ }
+
+ startActivity(newIntent)
+ exitProcess(0)
+ }
+}
diff --git a/app/src/main/java/com/aurora/store/view/ui/preferences/NetworkPreference.kt b/app/src/main/java/com/aurora/store/view/ui/preferences/NetworkPreference.kt
index 2bdc1bfaa..479557c26 100644
--- a/app/src/main/java/com/aurora/store/view/ui/preferences/NetworkPreference.kt
+++ b/app/src/main/java/com/aurora/store/view/ui/preferences/NetworkPreference.kt
@@ -64,6 +64,7 @@ class NetworkPreference : BasePreferenceFragment(),
} else {
remove(PREFERENCE_PROXY_URL)
remove(PREFERENCE_PROXY_INFO)
+ findNavController().navigate(R.id.forceRestartDialog)
}
false
}
diff --git a/app/src/main/java/com/aurora/store/view/ui/preferences/ProxyURLDialog.kt b/app/src/main/java/com/aurora/store/view/ui/preferences/ProxyURLDialog.kt
index e6fba6480..2d3085f4b 100644
--- a/app/src/main/java/com/aurora/store/view/ui/preferences/ProxyURLDialog.kt
+++ b/app/src/main/java/com/aurora/store/view/ui/preferences/ProxyURLDialog.kt
@@ -1,10 +1,12 @@
package com.aurora.store.view.ui.preferences
import android.annotation.SuppressLint
+import android.app.AlertDialog
import android.app.Dialog
import android.os.Bundle
import android.view.WindowManager
import androidx.fragment.app.DialogFragment
+import androidx.navigation.fragment.findNavController
import com.aurora.extensions.showKeyboard
import com.aurora.extensions.toast
import com.aurora.store.R
@@ -30,13 +32,18 @@ class ProxyURLDialog: DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val view = layoutInflater.inflate(R.layout.dialog_text_input_edit_text, null)
- return MaterialAlertDialogBuilder(requireContext())
+ val alertDialog = MaterialAlertDialogBuilder(requireContext())
.setTitle(R.string.pref_network_proxy_url)
.setMessage(R.string.pref_network_proxy_url_message)
.setView(view)
- .setPositiveButton(getString(R.string.add)) { _, _ -> saveProxyUrl() }
+ .setPositiveButton(getString(R.string.add), null)
.setNegativeButton(getString(android.R.string.cancel)) { _, _ -> dialog?.dismiss()}
.create()
+
+ alertDialog.setOnShowListener {
+ alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener { saveProxyUrl() }
+ }
+ return alertDialog
}
@SuppressLint("AuthLeak") // False-positive
@@ -62,6 +69,7 @@ class ProxyURLDialog: DialogFragment() {
save(PREFERENCE_PROXY_URL, url)
save(PREFERENCE_PROXY_INFO, gson.toJson(proxyInfo))
toast(R.string.toast_proxy_success)
+ findNavController().navigate(R.id.forceRestartDialog)
return
} else {
toast(R.string.toast_proxy_failed)
diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml
index 6244177b0..63eaf700a 100644
--- a/app/src/main/res/navigation/mobile_navigation.xml
+++ b/app/src/main/res/navigation/mobile_navigation.xml
@@ -491,4 +491,8 @@
android:id="@+id/proxyURLDialog"
android:name="com.aurora.store.view.ui.preferences.ProxyURLDialog"
android:label="@string/pref_network_proxy_url" />
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index e6526d024..e9479b2d2 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -479,4 +479,8 @@
Check for updates
+
+
+ Restart Aurora Store
+ Aurora Store needs to be restarted to apply the newly changed settings