Skip to content

Commit b77c480

Browse files
committed
Merge branch 'fix-missing-copy-snackbar-in-account-screen-droid-747'
2 parents fc8db76 + 01debc5 commit b77c480

File tree

2 files changed

+12
-13
lines changed

2 files changed

+12
-13
lines changed

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/component/Scaffolding.kt

+7
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ fun ScaffoldWithMediumTopBar(
163163
navigationIcon: @Composable () -> Unit = {},
164164
actions: @Composable RowScope.() -> Unit = {},
165165
scrollbarColor: Color = MaterialTheme.colorScheme.onBackground.copy(alpha = AlphaScrollbar),
166+
snackbarHostState: SnackbarHostState = remember { SnackbarHostState() },
166167
content: @Composable (modifier: Modifier) -> Unit
167168
) {
168169
val appBarState = rememberTopAppBarState()
@@ -180,6 +181,12 @@ fun ScaffoldWithMediumTopBar(
180181
scrollBehavior = scrollBehavior
181182
)
182183
},
184+
snackbarHost = {
185+
SnackbarHost(
186+
snackbarHostState,
187+
snackbar = { snackbarData -> MullvadSnackbar(snackbarData = snackbarData) }
188+
)
189+
},
183190
content = {
184191
content(
185192
Modifier.fillMaxSize()

android/app/src/main/kotlin/net/mullvad/mullvadvpn/compose/screen/AccountScreen.kt

+5-13
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package net.mullvad.mullvadvpn.compose.screen
22

3-
import android.os.Build
43
import androidx.compose.animation.animateContentSize
54
import androidx.compose.foundation.layout.Arrangement
65
import androidx.compose.foundation.layout.Column
@@ -20,11 +19,9 @@ import androidx.compose.runtime.getValue
2019
import androidx.compose.runtime.remember
2120
import androidx.compose.ui.Alignment
2221
import androidx.compose.ui.Modifier
23-
import androidx.compose.ui.platform.LocalClipboardManager
2422
import androidx.compose.ui.platform.LocalContext
2523
import androidx.compose.ui.res.painterResource
2624
import androidx.compose.ui.res.stringResource
27-
import androidx.compose.ui.text.AnnotatedString
2825
import androidx.compose.ui.tooling.preview.Preview
2926
import androidx.lifecycle.compose.collectAsStateWithLifecycle
3027
import com.ramcosta.composedestinations.annotation.Destination
@@ -56,6 +53,7 @@ import net.mullvad.mullvadvpn.compose.state.PaymentState
5653
import net.mullvad.mullvadvpn.compose.transitions.SlideInFromBottomTransition
5754
import net.mullvad.mullvadvpn.compose.util.LaunchedEffectCollect
5855
import net.mullvad.mullvadvpn.compose.util.SecureScreenWhileInView
56+
import net.mullvad.mullvadvpn.compose.util.createCopyToClipboardHandle
5957
import net.mullvad.mullvadvpn.lib.common.util.openAccountPageInBrowser
6058
import net.mullvad.mullvadvpn.lib.payment.model.PaymentProduct
6159
import net.mullvad.mullvadvpn.lib.payment.model.PaymentStatus
@@ -168,29 +166,23 @@ fun AccountScreen(
168166
SecureScreenWhileInView()
169167

170168
val context = LocalContext.current
171-
val clipboardManager = LocalClipboardManager.current
172169
val snackbarHostState = remember { SnackbarHostState() }
173170
val copyTextString = stringResource(id = R.string.copied_mullvad_account_number)
171+
val copyToClipboard = createCopyToClipboardHandle(snackbarHostState = snackbarHostState)
174172
LaunchedEffectCollect(uiSideEffect) { sideEffect ->
175173
when (sideEffect) {
176174
AccountViewModel.UiSideEffect.NavigateToLogin -> navigateToLogin()
177175
is AccountViewModel.UiSideEffect.OpenAccountManagementPageInBrowser ->
178176
context.openAccountPageInBrowser(sideEffect.token)
179177
is AccountViewModel.UiSideEffect.CopyAccountNumber ->
180-
launch {
181-
clipboardManager.setText(AnnotatedString(sideEffect.accountNumber))
182-
183-
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
184-
snackbarHostState.currentSnackbarData?.dismiss()
185-
snackbarHostState.showSnackbar(message = copyTextString)
186-
}
187-
}
178+
launch { copyToClipboard(sideEffect.accountNumber, copyTextString) }
188179
}
189180
}
190181

191182
ScaffoldWithMediumTopBar(
192183
appBarTitle = stringResource(id = R.string.settings_account),
193-
navigationIcon = { NavigateBackDownIconButton(onBackClick) }
184+
navigationIcon = { NavigateBackDownIconButton(onBackClick) },
185+
snackbarHostState = snackbarHostState
194186
) { modifier ->
195187
Column(
196188
horizontalAlignment = Alignment.Start,

0 commit comments

Comments
 (0)