@@ -7,11 +7,10 @@ package com.wireguard.android.updater
7
7
8
8
import android.view.View
9
9
import androidx.activity.result.contract.ActivityResultContracts
10
- import androidx.fragment.app.FragmentActivity
10
+ import androidx.fragment.app.Fragment
11
11
import androidx.lifecycle.lifecycleScope
12
12
import com.google.android.material.snackbar.BaseTransientBottomBar
13
13
import com.google.android.material.snackbar.Snackbar
14
- import com.wireguard.android.BuildConfig
15
14
import com.wireguard.android.R
16
15
import com.wireguard.android.util.ErrorMessages
17
16
import com.wireguard.android.util.QuantityFormatter
@@ -21,15 +20,20 @@ import kotlinx.coroutines.flow.onEach
21
20
import kotlinx.coroutines.launch
22
21
import kotlin.time.Duration.Companion.seconds
23
22
24
- object SnackbarUpdateShower {
25
- private class SwapableSnackbar (activity : FragmentActivity , view : View , anchor : View ? ) {
26
- val actionSnackbar = makeSnackbar(activity, view, anchor)
27
- val statusSnackbar = makeSnackbar(activity, view, anchor)
23
+ class SnackbarUpdateShower (private val fragment : Fragment ) {
24
+ private var lastUserIntervention: Updater .Progress .NeedsUserIntervention ? = null
25
+ private val intentLauncher = fragment.registerForActivityResult(ActivityResultContracts .StartActivityForResult ()) {
26
+ lastUserIntervention?.markAsDone()
27
+ }
28
+
29
+ private class SwapableSnackbar (fragment : Fragment , view : View , anchor : View ? ) {
30
+ val actionSnackbar = makeSnackbar(fragment, view, anchor)
31
+ val statusSnackbar = makeSnackbar(fragment, view, anchor)
28
32
var showingAction: Boolean = false
29
33
var showingStatus: Boolean = false
30
34
31
- private fun makeSnackbar (activity : FragmentActivity , view : View , anchor : View ? ): Snackbar {
32
- val snackbar = Snackbar .make(activity , view, " " , Snackbar .LENGTH_INDEFINITE )
35
+ private fun makeSnackbar (fragment : Fragment , view : View , anchor : View ? ): Snackbar {
36
+ val snackbar = Snackbar .make(fragment.requireContext() , view, " " , Snackbar .LENGTH_INDEFINITE )
33
37
if (anchor != null )
34
38
snackbar.anchorView = anchor
35
39
snackbar.setTextMaxLines(6 )
@@ -45,7 +49,7 @@ object SnackbarUpdateShower {
45
49
(snackbar == actionSnackbar && ! showingAction) || (snackbar == statusSnackbar && ! showingStatus)
46
50
)
47
51
return
48
- activity .lifecycleScope.launch {
52
+ fragment .lifecycleScope.launch {
49
53
delay(5 .seconds)
50
54
snackbar?.show()
51
55
}
@@ -87,14 +91,9 @@ object SnackbarUpdateShower {
87
91
}
88
92
}
89
93
90
- fun attachToActivity (activity : FragmentActivity , view : View , anchor : View ? ) {
91
- val snackbar = SwapableSnackbar (activity, view, anchor)
92
- val context = activity.applicationContext
93
-
94
- var lastUserIntervention: Updater .Progress .NeedsUserIntervention ? = null
95
- val intentLauncher = activity.registerForActivityResult(ActivityResultContracts .StartActivityForResult ()) {
96
- lastUserIntervention?.markAsDone()
97
- }
94
+ fun attach (view : View , anchor : View ? ) {
95
+ val snackbar = SwapableSnackbar (fragment, view, anchor)
96
+ val context = fragment.requireContext()
98
97
99
98
Updater .state.onEach { progress ->
100
99
when (progress) {
@@ -138,11 +137,11 @@ object SnackbarUpdateShower {
138
137
}
139
138
140
139
is Updater .Progress .Failure -> {
141
- snackbar.showText( context.getString(R .string.updater_failure, ErrorMessages [progress.error]))
140
+ snackbar.showText(context.getString(R .string.updater_failure, ErrorMessages [progress.error]))
142
141
delay(5 .seconds)
143
142
progress.retry()
144
143
}
145
144
}
146
- }.launchIn(activity .lifecycleScope)
145
+ }.launchIn(fragment .lifecycleScope)
147
146
}
148
147
}
0 commit comments