Skip to content

Commit 6a72194

Browse files
committed
ui: use modal corruption alert instead of snackbar
Signed-off-by: Jason A. Donenfeld <[email protected]>
1 parent 254e616 commit 6a72194

File tree

2 files changed

+23
-13
lines changed

2 files changed

+23
-13
lines changed

ui/src/main/java/com/wireguard/android/updater/SnackbarUpdateShower.kt

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import android.widget.Toast
1212
import androidx.activity.result.contract.ActivityResultContracts
1313
import androidx.fragment.app.Fragment
1414
import androidx.lifecycle.lifecycleScope
15+
import com.google.android.material.dialog.MaterialAlertDialogBuilder
1516
import com.google.android.material.snackbar.BaseTransientBottomBar
1617
import com.google.android.material.snackbar.Snackbar
1718
import com.wireguard.android.R
@@ -34,7 +35,6 @@ class SnackbarUpdateShower(private val fragment: Fragment) {
3435
private val statusSnackbar = makeSnackbar(fragment, view, anchor)
3536
private var showingAction: Boolean = false
3637
private var showingStatus: Boolean = false
37-
private var permanentAction: Boolean = false
3838

3939
private fun makeSnackbar(fragment: Fragment, view: View, anchor: View?): Snackbar {
4040
val snackbar = Snackbar.make(fragment.requireContext(), view, "", Snackbar.LENGTH_INDEFINITE)
@@ -49,7 +49,7 @@ class SnackbarUpdateShower(private val fragment: Fragment) {
4949
snackbar.addCallback(object : BaseTransientBottomBar.BaseCallback<Snackbar>() {
5050
override fun onDismissed(snackbar: Snackbar?, @DismissEvent event: Int) {
5151
super.onDismissed(snackbar, event)
52-
if (event == DISMISS_EVENT_MANUAL || (event == DISMISS_EVENT_ACTION && !permanentAction) ||
52+
if (event == DISMISS_EVENT_MANUAL || event == DISMISS_EVENT_ACTION ||
5353
(snackbar == actionSnackbar && !showingAction) || (snackbar == statusSnackbar && !showingStatus)
5454
)
5555
return
@@ -62,12 +62,11 @@ class SnackbarUpdateShower(private val fragment: Fragment) {
6262
return snackbar
6363
}
6464

65-
fun showAction(text: String, action: String, permanent: Boolean = false, listener: View.OnClickListener) {
65+
fun showAction(text: String, action: String, listener: View.OnClickListener) {
6666
if (showingStatus) {
6767
showingStatus = false
6868
statusSnackbar.dismiss()
6969
}
70-
permanentAction = permanent
7170
actionSnackbar.setText(text)
7271
actionSnackbar.setAction(action, listener)
7372
if (!showingAction) {
@@ -148,15 +147,25 @@ class SnackbarUpdateShower(private val fragment: Fragment) {
148147
}
149148

150149
is Updater.Progress.Corrupt -> {
151-
snackbar.showAction(context.getString(R.string.updater_corrupt), context.getString(R.string.updater_corrupt_navigate), true) {
152-
val intent = Intent(Intent.ACTION_VIEW)
153-
intent.data = Uri.parse(progress.downloadUrl)
154-
try {
150+
MaterialAlertDialogBuilder(context)
151+
.setTitle(R.string.updater_corrupt_title)
152+
.setMessage(R.string.updater_corrupt_message)
153+
.setPositiveButton(R.string.updater_corrupt_navigate) { _, _ ->
154+
val intent = Intent(Intent.ACTION_VIEW)
155+
intent.data = Uri.parse(progress.downloadUrl)
156+
try {
157+
context.startActivity(intent)
158+
} catch (e: Throwable) {
159+
Toast.makeText(context, ErrorMessages[e], Toast.LENGTH_SHORT).show()
160+
}
161+
}.setCancelable(false).setOnDismissListener {
162+
val intent = Intent(Intent.ACTION_MAIN)
163+
intent.addCategory(Intent.CATEGORY_HOME)
164+
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
165+
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
155166
context.startActivity(intent)
156-
} catch (e: Throwable) {
157-
Toast.makeText(context, ErrorMessages[e], Toast.LENGTH_SHORT).show()
158-
}
159-
}
167+
System.exit(0)
168+
}.show()
160169
}
161170
}
162171
}.launchIn(fragment.lifecycleScope)

ui/src/main/res/values/strings.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,8 @@
240240
<string name="updater_download_progress_nototal">Downloading update: %s</string>
241241
<string name="updater_installing">Installing update…</string>
242242
<string name="updater_failure">Update failure: %s. Will retry momentarily…</string>
243-
<string name="updater_corrupt">This application is corrupt. Please re-download it.</string>
243+
<string name="updater_corrupt_title">Application Corrupt</string>
244+
<string name="updater_corrupt_message">This application is corrupt. Please re-download the APK from the website linked below. After, uninstall this application, and reinstall it from downloaded APK.</string>
244245
<string name="updater_corrupt_navigate">Open Website</string>
245246
<string name="version_summary">%1$s backend %2$s</string>
246247
<string name="version_summary_checking">Checking %s backend version</string>

0 commit comments

Comments
 (0)