@@ -12,6 +12,7 @@ import android.widget.Toast
12
12
import androidx.activity.result.contract.ActivityResultContracts
13
13
import androidx.fragment.app.Fragment
14
14
import androidx.lifecycle.lifecycleScope
15
+ import com.google.android.material.dialog.MaterialAlertDialogBuilder
15
16
import com.google.android.material.snackbar.BaseTransientBottomBar
16
17
import com.google.android.material.snackbar.Snackbar
17
18
import com.wireguard.android.R
@@ -34,7 +35,6 @@ class SnackbarUpdateShower(private val fragment: Fragment) {
34
35
private val statusSnackbar = makeSnackbar(fragment, view, anchor)
35
36
private var showingAction: Boolean = false
36
37
private var showingStatus: Boolean = false
37
- private var permanentAction: Boolean = false
38
38
39
39
private fun makeSnackbar (fragment : Fragment , view : View , anchor : View ? ): Snackbar {
40
40
val snackbar = Snackbar .make(fragment.requireContext(), view, " " , Snackbar .LENGTH_INDEFINITE )
@@ -49,7 +49,7 @@ class SnackbarUpdateShower(private val fragment: Fragment) {
49
49
snackbar.addCallback(object : BaseTransientBottomBar .BaseCallback <Snackbar >() {
50
50
override fun onDismissed (snackbar : Snackbar ? , @DismissEvent event : Int ) {
51
51
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 ||
53
53
(snackbar == actionSnackbar && ! showingAction) || (snackbar == statusSnackbar && ! showingStatus)
54
54
)
55
55
return
@@ -62,12 +62,11 @@ class SnackbarUpdateShower(private val fragment: Fragment) {
62
62
return snackbar
63
63
}
64
64
65
- fun showAction (text : String , action : String , permanent : Boolean = false, listener : View .OnClickListener ) {
65
+ fun showAction (text : String , action : String , listener : View .OnClickListener ) {
66
66
if (showingStatus) {
67
67
showingStatus = false
68
68
statusSnackbar.dismiss()
69
69
}
70
- permanentAction = permanent
71
70
actionSnackbar.setText(text)
72
71
actionSnackbar.setAction(action, listener)
73
72
if (! showingAction) {
@@ -148,15 +147,25 @@ class SnackbarUpdateShower(private val fragment: Fragment) {
148
147
}
149
148
150
149
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 )
155
166
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()
160
169
}
161
170
}
162
171
}.launchIn(fragment.lifecycleScope)
0 commit comments