Force restart when proxy URL is changed

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2024-08-05 11:53:29 +08:00
parent 35950fb163
commit 86a7fce277
5 changed files with 59 additions and 2 deletions

View File

@@ -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)
}
}

View File

@@ -64,6 +64,7 @@ class NetworkPreference : BasePreferenceFragment(),
} else { } else {
remove(PREFERENCE_PROXY_URL) remove(PREFERENCE_PROXY_URL)
remove(PREFERENCE_PROXY_INFO) remove(PREFERENCE_PROXY_INFO)
findNavController().navigate(R.id.forceRestartDialog)
} }
false false
} }

View File

@@ -1,10 +1,12 @@
package com.aurora.store.view.ui.preferences package com.aurora.store.view.ui.preferences
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.AlertDialog
import android.app.Dialog import android.app.Dialog
import android.os.Bundle import android.os.Bundle
import android.view.WindowManager import android.view.WindowManager
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import androidx.navigation.fragment.findNavController
import com.aurora.extensions.showKeyboard import com.aurora.extensions.showKeyboard
import com.aurora.extensions.toast import com.aurora.extensions.toast
import com.aurora.store.R import com.aurora.store.R
@@ -30,13 +32,18 @@ class ProxyURLDialog: DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val view = layoutInflater.inflate(R.layout.dialog_text_input_edit_text, null) 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) .setTitle(R.string.pref_network_proxy_url)
.setMessage(R.string.pref_network_proxy_url_message) .setMessage(R.string.pref_network_proxy_url_message)
.setView(view) .setView(view)
.setPositiveButton(getString(R.string.add)) { _, _ -> saveProxyUrl() } .setPositiveButton(getString(R.string.add), null)
.setNegativeButton(getString(android.R.string.cancel)) { _, _ -> dialog?.dismiss()} .setNegativeButton(getString(android.R.string.cancel)) { _, _ -> dialog?.dismiss()}
.create() .create()
alertDialog.setOnShowListener {
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener { saveProxyUrl() }
}
return alertDialog
} }
@SuppressLint("AuthLeak") // False-positive @SuppressLint("AuthLeak") // False-positive
@@ -62,6 +69,7 @@ class ProxyURLDialog: DialogFragment() {
save(PREFERENCE_PROXY_URL, url) save(PREFERENCE_PROXY_URL, url)
save(PREFERENCE_PROXY_INFO, gson.toJson(proxyInfo)) save(PREFERENCE_PROXY_INFO, gson.toJson(proxyInfo))
toast(R.string.toast_proxy_success) toast(R.string.toast_proxy_success)
findNavController().navigate(R.id.forceRestartDialog)
return return
} else { } else {
toast(R.string.toast_proxy_failed) toast(R.string.toast_proxy_failed)

View File

@@ -491,4 +491,8 @@
android:id="@+id/proxyURLDialog" android:id="@+id/proxyURLDialog"
android:name="com.aurora.store.view.ui.preferences.ProxyURLDialog" android:name="com.aurora.store.view.ui.preferences.ProxyURLDialog"
android:label="@string/pref_network_proxy_url" /> android:label="@string/pref_network_proxy_url" />
<dialog
android:id="@+id/forceRestartDialog"
android:name="com.aurora.store.view.ui.commons.ForceRestartDialog"
android:label="@string/force_restart_title" />
</navigation> </navigation>

View File

@@ -479,4 +479,8 @@
<!-- UpdatesFragment --> <!-- UpdatesFragment -->
<string name="check_updates">Check for updates</string> <string name="check_updates">Check for updates</string>
<!-- ForceRestartDialog -->
<string name="force_restart_title">Restart Aurora Store</string>
<string name="force_restart_summary">Aurora Store needs to be restarted to apply the newly changed settings</string>
</resources> </resources>