Respect incognito keyboard setting in Compose UIs.

This commit is contained in:
jeffrey-signal
2025-11-17 14:44:57 -05:00
committed by Cody Henthorne
parent d5150d44e3
commit 9f0f8b7cbc
71 changed files with 248 additions and 204 deletions

View File

@@ -16,7 +16,7 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.AbstractComposeView
import org.signal.core.ui.compose.theme.SignalTheme
import org.thoughtcrime.securesms.compose.SignalTheme
import org.thoughtcrime.securesms.util.DynamicTheme
/**

View File

@@ -1,46 +0,0 @@
/*
* Copyright 2025 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.thoughtcrime.securesms.components.compose
import android.os.Build
import android.view.inputmethod.EditorInfo
import androidx.compose.runtime.Composable
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.platform.InterceptPlatformTextInput
import androidx.compose.ui.platform.PlatformTextInputMethodRequest
/**
* When [enabled]=true, this function sets the [EditorInfo.IME_FLAG_NO_PERSONALIZED_LEARNING] flag for all text fields within its content to enable the
* incognito keyboard.
*
* This workaround is needed until it's possible to configure granular IME options for a [TextField].
* https://issuetracker.google.com/issues/359257538
*/
@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun ProvideIncognitoKeyboard(
enabled: Boolean,
content: @Composable () -> Unit
) {
if (enabled) {
InterceptPlatformTextInput(
interceptor = { request, nextHandler ->
val modifiedRequest = PlatformTextInputMethodRequest { outAttributes ->
request.createInputConnection(outAttributes).also {
if (Build.VERSION.SDK_INT >= 26) {
outAttributes.imeOptions = outAttributes.imeOptions or EditorInfo.IME_FLAG_NO_PERSONALIZED_LEARNING
}
}
}
nextHandler.startInputMethod(modifiedRequest)
}
) {
content()
}
} else {
content()
}
}

View File

@@ -37,7 +37,7 @@ import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import org.signal.core.ui.compose.DayNightPreviews
import org.signal.core.ui.compose.theme.SignalTheme
import org.signal.core.ui.compose.Previews
import org.thoughtcrime.securesms.R
/**
@@ -105,12 +105,12 @@ fun RoundCheckbox(
@DayNightPreviews
@Composable
private fun RoundCheckboxCheckedPreview() = SignalTheme {
private fun RoundCheckboxCheckedPreview() = Previews.Preview {
RoundCheckbox(checked = true, onCheckedChange = {})
}
@DayNightPreviews
@Composable
private fun RoundCheckboxUncheckedPreview() = SignalTheme {
private fun RoundCheckboxUncheckedPreview() = Previews.Preview {
RoundCheckbox(checked = false, onCheckedChange = {})
}

View File

@@ -50,8 +50,8 @@ import androidx.navigation.fragment.findNavController
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.toImmutableList
import org.signal.core.ui.compose.DayNightPreviews
import org.signal.core.ui.compose.Previews
import org.signal.core.ui.compose.Scaffolds
import org.signal.core.ui.compose.theme.SignalTheme
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.components.settings.app.appearance.appicon.util.AppIconPreset
@@ -309,7 +309,7 @@ fun CaveatWarning(onClick: () -> Unit, modifier: Modifier = Modifier) {
@DayNightPreviews
@Composable
private fun MainScreenPreview() {
SignalTheme {
Previews.Preview {
Surface {
IconSelectionScreen(AppIconPreset.DEFAULT, onItemConfirmed = {}, onWarningClick = {})
}

View File

@@ -23,8 +23,8 @@ import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.core.Single
import io.reactivex.rxjava3.schedulers.Schedulers
import org.signal.core.ui.compose.DayNightPreviews
import org.signal.core.ui.compose.Previews
import org.signal.core.ui.compose.Scaffolds
import org.signal.core.ui.compose.theme.SignalTheme
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.compose.ComposeFragment
@@ -75,7 +75,7 @@ fun LicenseScreen(licenseTextLines: List<String>, modifier: Modifier = Modifier)
@DayNightPreviews
@Composable
fun LicenseFragmentPreview() {
SignalTheme {
Previews.Preview {
LicenseScreen(listOf("Lorem ipsum", "Delor"))
}
}

View File

@@ -27,9 +27,9 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.fragment.app.viewModels
import androidx.navigation.fragment.findNavController
import org.signal.core.ui.compose.Buttons
import org.signal.core.ui.compose.Previews
import org.signal.core.ui.compose.Rows
import org.signal.core.ui.compose.Scaffolds
import org.signal.core.ui.compose.theme.SignalTheme
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.components.settings.app.internal.donor.DonationErrorValueCodeSelector
import org.thoughtcrime.securesms.components.settings.app.internal.donor.DonationErrorValueTypeSelector
@@ -80,7 +80,7 @@ class InternalPendingOneTimeDonationConfigurationFragment : ComposeFragment() {
@Preview
@Composable
private fun ContentPreview() {
SignalTheme {
Previews.Preview {
Surface {
Content(
state = PendingOneTimeDonation.Builder().error(DonationErrorValue()).build(),

View File

@@ -15,9 +15,9 @@ import org.signal.core.ui.compose.DayNightPreviews
import org.signal.core.ui.compose.Previews
import org.signal.core.ui.compose.Rows
import org.signal.core.ui.compose.Scaffolds
import org.signal.core.ui.compose.theme.SignalTheme
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.compose.ComposeFragment
import org.thoughtcrime.securesms.compose.SignalTheme
import org.thoughtcrime.securesms.stories.dialogs.StoryDialogs
import org.thoughtcrime.securesms.util.DynamicTheme

View File

@@ -19,8 +19,8 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.navigation.fragment.findNavController
import org.signal.core.ui.compose.Buttons
import org.signal.core.ui.compose.Previews
import org.signal.core.ui.compose.Rows
import org.signal.core.ui.compose.theme.SignalTheme
import org.thoughtcrime.securesms.components.settings.app.internal.donor.DonationErrorValueCodeSelector
import org.thoughtcrime.securesms.components.settings.app.internal.donor.DonationErrorValueTypeSelector
import org.thoughtcrime.securesms.compose.ComposeFragment
@@ -48,7 +48,7 @@ class InternalTerminalDonationConfigurationFragment : ComposeFragment() {
@Preview
@Composable
private fun InternalTerminalDonationConfigurationContentPreview() {
SignalTheme {
Previews.Preview {
Surface {
InternalTerminalDonationConfigurationContent(
onAddClick = {}

View File

@@ -25,12 +25,12 @@ import org.signal.core.ui.compose.DayNightPreviews
import org.signal.core.ui.compose.Previews
import org.signal.core.ui.compose.Rows
import org.signal.core.ui.compose.Scaffolds
import org.signal.core.ui.compose.theme.SignalTheme
import org.signal.donations.StripeDeclineCode
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.badges.models.Badge
import org.thoughtcrime.securesms.components.settings.app.subscription.errors.UnexpectedSubscriptionCancellation
import org.thoughtcrime.securesms.compose.ComposeFragment
import org.thoughtcrime.securesms.compose.SignalTheme
import org.thoughtcrime.securesms.util.DynamicTheme
/**

View File

@@ -30,7 +30,7 @@ import androidx.fragment.app.viewModels
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentListOf
import org.signal.core.ui.compose.DayNightPreviews
import org.signal.core.ui.compose.theme.SignalTheme
import org.signal.core.ui.compose.Previews
import org.thoughtcrime.securesms.compose.ComposeFragment
import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.recipients.ui.bottomsheet.RecipientBottomSheetDialogFragment
@@ -110,7 +110,7 @@ fun ResultItem(result: InternalSearchResult, modifier: Modifier = Modifier) {
@DayNightPreviews
@Composable
fun InternalSearchScreenPreview() {
SignalTheme {
Previews.Preview {
InternalSearchFragmentScreen(
query = "",
results = persistentListOf(

View File

@@ -21,12 +21,12 @@ import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.fragment.app.viewModels
import kotlinx.collections.immutable.persistentListOf
import org.signal.core.ui.compose.NightPreview
import org.signal.core.ui.compose.Previews
import org.signal.core.ui.compose.Rows
import org.signal.core.ui.compose.theme.SignalTheme
import org.thoughtcrime.securesms.compose.ComposeFragment
class InternalSvrPlaygroundFragment : ComposeFragment() {
@@ -116,10 +116,10 @@ fun SvrPlaygroundScreen(
}
}
@Preview
@NightPreview
@Composable
fun SvrPlaygroundScreenLightTheme() {
SignalTheme(isDarkMode = false) {
Previews.Preview {
Surface {
SvrPlaygroundScreen(
state = InternalSvrPlaygroundState(
@@ -130,10 +130,10 @@ fun SvrPlaygroundScreenLightTheme() {
}
}
@Preview
@NightPreview
@Composable
fun SvrPlaygroundScreenDarkTheme() {
SignalTheme(isDarkMode = true) {
Previews.Preview {
Surface {
SvrPlaygroundScreen(
state = InternalSvrPlaygroundState(

View File

@@ -43,7 +43,7 @@ class PrivacySettingsViewModel(
}
fun setIncognitoKeyboard(enabled: Boolean) {
sharedPreferences.edit().putBoolean(TextSecurePreferences.INCOGNITO_KEYBORAD_PREF, enabled).apply()
sharedPreferences.edit().putBoolean(TextSecurePreferences.INCOGNITO_KEYBOARD_PREF, enabled).apply()
refresh()
}

View File

@@ -35,9 +35,9 @@ import org.signal.core.ui.compose.Previews
import org.signal.core.ui.compose.Rows
import org.signal.core.ui.compose.Scaffolds
import org.signal.core.ui.compose.horizontalGutters
import org.signal.core.ui.compose.theme.SignalTheme
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.compose.ComposeFragment
import org.thoughtcrime.securesms.compose.SignalTheme
import org.thoughtcrime.securesms.groups.ui.GroupChangeFailureReason
import org.thoughtcrime.securesms.groups.ui.GroupErrors
import org.thoughtcrime.securesms.util.DynamicTheme

View File

@@ -28,10 +28,10 @@ import androidx.navigation.fragment.findNavController
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import kotlinx.coroutines.launch
import org.signal.core.ui.compose.Dividers
import org.signal.core.ui.compose.Previews
import org.signal.core.ui.compose.Rows
import org.signal.core.ui.compose.Scaffolds
import org.signal.core.ui.compose.Texts
import org.signal.core.ui.compose.theme.SignalTheme
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.compose.ComposeFragment
import org.thoughtcrime.securesms.compose.StatusBarColorNestedScrollConnection
@@ -203,7 +203,7 @@ private fun Screen(
@Preview(name = "Dark Theme", group = "Screen", uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
private fun ScreenPreviewSharingAndDiscoverable() {
SignalTheme {
Previews.Preview {
Screen(
state = PhoneNumberPrivacySettingsState(
phoneNumberSharing = true,
@@ -217,7 +217,7 @@ private fun ScreenPreviewSharingAndDiscoverable() {
@Preview(name = "Dark Theme", group = "Screen", uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
private fun ScreenPreviewNotSharingDiscoverable() {
SignalTheme {
Previews.Preview {
Screen(
state = PhoneNumberPrivacySettingsState(
phoneNumberSharing = false,
@@ -231,7 +231,7 @@ private fun ScreenPreviewNotSharingDiscoverable() {
@Preview(name = "Dark Theme", group = "Screen", uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
private fun ScreenPreviewNotSharingNotDiscoverable() {
SignalTheme {
Previews.Preview {
Screen(
state = PhoneNumberPrivacySettingsState(
phoneNumberSharing = false,

View File

@@ -62,12 +62,12 @@ import org.signal.core.ui.compose.Rows
import org.signal.core.ui.compose.Rows.TextAndLabel
import org.signal.core.ui.compose.Scaffolds
import org.signal.core.ui.compose.Texts
import org.signal.core.ui.compose.theme.SignalTheme
import org.signal.core.util.bytes
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.billing.upgrade.UpgradeToEnableOptimizedStorageSheet
import org.thoughtcrime.securesms.billing.upgrade.UpgradeToPaidTierBottomSheet
import org.thoughtcrime.securesms.compose.ComposeFragment
import org.thoughtcrime.securesms.compose.SignalTheme
import org.thoughtcrime.securesms.database.MediaTable
import org.thoughtcrime.securesms.keyvalue.KeepMessagesDuration
import org.thoughtcrime.securesms.keyvalue.SignalStore

View File

@@ -29,8 +29,8 @@ import androidx.navigation.fragment.navArgs
import org.signal.core.ui.compose.BottomSheets
import org.signal.core.ui.compose.Buttons
import org.signal.core.ui.compose.DayNightPreviews
import org.signal.core.ui.compose.Previews
import org.signal.core.ui.compose.Texts
import org.signal.core.ui.compose.theme.SignalTheme
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.badges.Badges
import org.thoughtcrime.securesms.badges.models.Badge
@@ -81,7 +81,7 @@ class DonationPendingBottomSheet : ComposeBottomSheetDialogFragment() {
@DayNightPreviews
@Composable
fun DonationPendingBottomSheetContentPreview() {
SignalTheme {
Previews.Preview {
Surface {
DonationPendingBottomSheetContent(
badge = Badge(

View File

@@ -37,7 +37,7 @@ import androidx.fragment.app.FragmentManager
import org.signal.core.ui.compose.BottomSheets
import org.signal.core.ui.compose.Buttons
import org.signal.core.ui.compose.DayNightPreviews
import org.signal.core.ui.compose.theme.SignalTheme
import org.signal.core.ui.compose.Previews
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.badges.BadgeRepository
import org.thoughtcrime.securesms.badges.models.Badge
@@ -128,7 +128,7 @@ class TerminalDonationBottomSheet : ComposeBottomSheetDialogFragment() {
@DayNightPreviews
@Composable
private fun DonationPaymentFailureBottomSheet() {
SignalTheme {
Previews.Preview {
Surface {
DonationPaymentFailureBottomSheet(
badge = null,
@@ -226,7 +226,7 @@ private fun DonationPaymentFailureBottomSheet(
@DayNightPreviews
@Composable
private fun DonationCompletedSheetContentPreview() {
SignalTheme {
Previews.Preview {
Surface {
DonationCompletedSheetContent(
badge = null,

View File

@@ -50,9 +50,9 @@ import androidx.navigation.fragment.navArgs
import androidx.navigation.navGraphViewModels
import org.signal.core.ui.compose.Buttons
import org.signal.core.ui.compose.DayNightPreviews
import org.signal.core.ui.compose.Previews
import org.signal.core.ui.compose.Scaffolds
import org.signal.core.ui.compose.Texts
import org.signal.core.ui.compose.theme.SignalTheme
import org.signal.core.util.getParcelableCompat
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.components.TemporaryScreenshotSecurity
@@ -187,7 +187,7 @@ class BankTransferDetailsFragment : ComposeFragment(), InAppPaymentCheckoutDeleg
@DayNightPreviews
@Composable
private fun BankTransferDetailsContentPreview() {
SignalTheme {
Previews.Preview {
BankTransferDetailsContent(
state = BankTransferDetailsState(
name = "Miles Morales",

View File

@@ -55,6 +55,7 @@ import kotlinx.coroutines.launch
import org.signal.core.ui.compose.Buttons
import org.signal.core.ui.compose.DayNightPreviews
import org.signal.core.ui.compose.Dividers
import org.signal.core.ui.compose.Previews
import org.signal.core.ui.compose.Texts
import org.signal.core.ui.compose.theme.SignalTheme
import org.thoughtcrime.securesms.R
@@ -129,7 +130,7 @@ class BankTransferMandateFragment : ComposeFragment() {
@DayNightPreviews
@Composable
fun BankTransferScreenPreview() {
SignalTheme {
Previews.Preview {
BankTransferScreen(
bankMandate = "Test ".repeat(500),
failedToLoadMandate = false,

View File

@@ -37,7 +37,7 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import org.signal.core.ui.compose.theme.SignalTheme
import org.signal.core.ui.compose.Previews
import org.thoughtcrime.securesms.R
/**
@@ -165,7 +165,7 @@ fun QrCodeBadge(
@Preview(name = "Dark Theme", group = "ShortName", uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
private fun PreviewWithCodeShort() {
SignalTheme {
Previews.Preview {
Surface {
Column {
QrCodeBadge(
@@ -188,7 +188,7 @@ private fun PreviewWithCodeShort() {
@Preview(group = "LongName")
@Composable
private fun PreviewWithCodeLong() {
SignalTheme {
Previews.Preview {
Surface {
Column {
QrCodeBadge(
@@ -212,7 +212,7 @@ private fun PreviewWithCodeLong() {
@Preview(group = "Colors", heightDp = 1500)
@Composable
private fun PreviewAllColorsP1() {
SignalTheme(isDarkMode = false) {
Previews.Preview {
Surface {
Column {
SampleCode(colorScheme = UsernameQrCodeColorScheme.Blue)
@@ -230,7 +230,7 @@ private fun PreviewAllColorsP1() {
@Preview(group = "Colors", heightDp = 1500)
@Composable
private fun PreviewAllColorsP2() {
SignalTheme(isDarkMode = false) {
Previews.Preview {
Surface {
Column {
SampleCode(colorScheme = UsernameQrCodeColorScheme.Pink)
@@ -258,7 +258,7 @@ private fun SampleCode(colorScheme: UsernameQrCodeColorScheme) {
@Preview(name = "Dark Theme", group = "Loading", uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
private fun PreviewLoading() {
SignalTheme {
Previews.Preview {
Surface {
QrCodeBadge(
data = QrCodeState.Loading,
@@ -273,7 +273,7 @@ private fun PreviewLoading() {
@Preview(name = "Dark Theme", group = "NotSet", uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
private fun PreviewNotSet() {
SignalTheme {
Previews.Preview {
Surface {
QrCodeBadge(
data = QrCodeState.NotSet,

View File

@@ -44,7 +44,7 @@ import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.toImmutableList
import org.signal.core.ui.compose.Buttons
import org.signal.core.ui.compose.DayNightPreviews
import org.signal.core.ui.compose.theme.SignalTheme
import org.signal.core.ui.compose.Previews
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.components.settings.app.usernamelinks.QrCodeBadge
import org.thoughtcrime.securesms.components.settings.app.usernamelinks.UsernameQrCodeColorScheme
@@ -186,7 +186,7 @@ class UsernameLinkQrColorPickerFragment : ComposeFragment() {
@DayNightPreviews
@Composable
private fun PreviewColorPickerItem() {
SignalTheme {
Previews.Preview {
Surface {
Row(verticalAlignment = Alignment.CenterVertically) {
ColorPickerItem(color = UsernameQrCodeColorScheme.Blue, selected = false, onClick = {})
@@ -199,7 +199,7 @@ class UsernameLinkQrColorPickerFragment : ComposeFragment() {
@DayNightPreviews
@Composable
private fun PreviewColorPicker() {
SignalTheme {
Previews.Preview {
Surface {
ColorPicker(
colors = UsernameQrCodeColorScheme.entries.toImmutableList(),

View File

@@ -64,6 +64,7 @@ import kotlinx.coroutines.CoroutineScope
import org.signal.core.ui.compose.Buttons
import org.signal.core.ui.compose.DayNightPreviews
import org.signal.core.ui.compose.Dialogs
import org.signal.core.ui.compose.Previews
import org.signal.core.ui.compose.Snackbars
import org.signal.core.ui.compose.theme.SignalTheme
import org.signal.core.util.concurrent.LifecycleDisposable
@@ -349,7 +350,7 @@ private fun ResetDialog(onConfirm: () -> Unit, onDismiss: () -> Unit) {
@DayNightPreviews
@Composable
private fun AppBarPreview() {
SignalTheme {
Previews.Preview {
Surface {
Column {
TopAppBarContent(activeTab = ActiveTab.Code)
@@ -362,7 +363,7 @@ private fun AppBarPreview() {
@DayNightPreviews
@Composable
private fun MainScreenPreview() {
SignalTheme {
Previews.Preview {
MainScreen(
state = UsernameLinkSettingsState(
activeTab = ActiveTab.Code,
@@ -378,7 +379,7 @@ private fun MainScreenPreview() {
@DayNightPreviews
@Composable
private fun ResetDialogPreview() {
SignalTheme {
Previews.Preview {
Surface {
ResetDialog(onConfirm = {}, onDismiss = {})
}

View File

@@ -31,7 +31,7 @@ import androidx.core.os.bundleOf
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.setFragmentResult
import org.signal.core.ui.compose.BottomSheets
import org.signal.core.ui.compose.theme.SignalTheme
import org.signal.core.ui.compose.Previews
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.components.webrtc.requests.CallLinkIncomingRequestSheet
import org.thoughtcrime.securesms.compose.ComposeBottomSheetDialogFragment
@@ -148,7 +148,7 @@ private fun ButtonRow(icon: Painter, text: String, modifier: Modifier = Modifier
@Preview(name = "Dark Theme", group = "content", uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
private fun ContentPreview() {
SignalTheme {
Previews.Preview {
Surface {
Content(
usernameLink = "https://signal.me#eufzLWmFFUYAOqnVJ4Zlt0KqXf87r59FC1hZ3r7WipjKvgzMBg7DBlY5DB5hQTjsw0"
@@ -161,7 +161,7 @@ private fun ContentPreview() {
@Preview(name = "Dark Theme", group = "button row", uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
private fun ButtonRowPreview() {
SignalTheme {
Previews.Preview {
Surface {
ButtonRow(icon = painterResource(R.drawable.symbol_share_android_24), text = "Share")
}

View File

@@ -35,7 +35,7 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import org.signal.core.ui.compose.Buttons
import org.signal.core.ui.compose.Dialogs
import org.signal.core.ui.compose.theme.SignalTheme
import org.signal.core.ui.compose.Previews
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.components.settings.app.usernamelinks.QrCodeBadge
import org.thoughtcrime.securesms.components.settings.app.usernamelinks.QrCodeData
@@ -67,15 +67,19 @@ fun UsernameLinkShareScreen(
UsernameLinkResetResult.NetworkUnavailable -> {
ResetLinkResultDialog(stringResource(R.string.UsernameLinkSettings_reset_link_result_network_unavailable), onDismiss = onLinkResultHandled)
}
UsernameLinkResetResult.NetworkError -> {
ResetLinkResultDialog(stringResource(R.string.UsernameLinkSettings_reset_link_result_network_error), onDismiss = onLinkResultHandled)
}
UsernameLinkResetResult.UnexpectedError -> {
ResetLinkResultDialog(stringResource(R.string.UsernameLinkSettings_reset_link_result_unknown_error), onDismiss = onLinkResultHandled)
}
is UsernameLinkResetResult.Success -> {
ResetLinkResultDialog(stringResource(R.string.UsernameLinkSettings_reset_link_result_success), onDismiss = onLinkResultHandled)
}
else -> {}
}
@@ -216,7 +220,7 @@ private fun ResetLinkResultDialog(message: String, onDismiss: () -> Unit) {
@Preview(name = "Dark Theme", group = "screen", uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
private fun ScreenPreview() {
SignalTheme {
Previews.Preview {
Surface {
UsernameLinkShareScreen(
state = previewState(),
@@ -235,7 +239,7 @@ private fun ScreenPreview() {
@Preview(name = "Dark Theme", group = "screen", uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
private fun ScreenPreviewResetSuccess() {
SignalTheme {
Previews.Preview {
Surface {
UsernameLinkShareScreen(
state = previewState().copy(usernameLinkResetResult = UsernameLinkResetResult.Success(UsernameLinkComponents(Util.getSecretBytes(32), UUID.randomUUID()))),
@@ -254,7 +258,7 @@ private fun ScreenPreviewResetSuccess() {
@Preview(name = "Dark Theme", group = "screen", uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
private fun ScreenPreviewResetNetworkError() {
SignalTheme {
Previews.Preview {
Surface {
UsernameLinkShareScreen(
state = previewState().copy(usernameLinkResetResult = UsernameLinkResetResult.NetworkError),
@@ -273,7 +277,7 @@ private fun ScreenPreviewResetNetworkError() {
@Preview(name = "Dark Theme", group = "screen", uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
private fun ScreenPreviewResetNetworkUnavailable() {
SignalTheme {
Previews.Preview {
Surface {
UsernameLinkShareScreen(
state = previewState().copy(usernameLinkResetResult = UsernameLinkResetResult.NetworkUnavailable),
@@ -292,7 +296,7 @@ private fun ScreenPreviewResetNetworkUnavailable() {
@Preview(name = "Dark Theme", group = "screen", uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
private fun ScreenPreviewResetUnexpectedError() {
SignalTheme {
Previews.Preview {
Surface {
UsernameLinkShareScreen(
state = previewState().copy(usernameLinkResetResult = UsernameLinkResetResult.UnexpectedError),
@@ -311,7 +315,7 @@ private fun ScreenPreviewResetUnexpectedError() {
@Preview(name = "Dark Theme", group = "LinkRow", uiMode = Configuration.UI_MODE_NIGHT_YES)
@Composable
private fun LinkRowPreview() {
SignalTheme {
Previews.Preview {
Surface {
Column(modifier = Modifier.padding(8.dp)) {
LinkRow(

View File

@@ -38,11 +38,10 @@ import com.google.accompanist.permissions.rememberMultiplePermissionsState
import com.google.accompanist.permissions.rememberPermissionState
import io.reactivex.rxjava3.disposables.CompositeDisposable
import org.signal.core.ui.compose.Dialogs
import org.signal.core.ui.compose.theme.SignalTheme
import org.signal.core.util.concurrent.LifecycleDisposable
import org.signal.core.util.getParcelableExtraCompat
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.components.settings.app.usernamelinks.main.UsernameQrScannerActivity.Contract
import org.thoughtcrime.securesms.compose.SignalTheme
import org.thoughtcrime.securesms.permissions.PermissionCompat
import org.thoughtcrime.securesms.permissions.Permissions
import org.thoughtcrime.securesms.recipients.Recipient

View File

@@ -56,13 +56,12 @@ import org.signal.core.ui.compose.Dialogs
import org.signal.core.ui.compose.Dividers
import org.signal.core.ui.compose.Previews
import org.signal.core.ui.compose.Rows
import org.signal.core.ui.compose.theme.LocalExtendedColors
import org.signal.core.ui.compose.theme.SignalTheme
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.avatar.fallback.FallbackAvatar
import org.thoughtcrime.securesms.avatar.fallback.FallbackAvatarImage
import org.thoughtcrime.securesms.components.AvatarImageView
import org.thoughtcrime.securesms.components.webrtc.v2.WebRtcCallViewModel
import org.thoughtcrime.securesms.compose.SignalTheme
import org.thoughtcrime.securesms.conversation.colors.AvatarColor
import org.thoughtcrime.securesms.dependencies.AppDependencies
import org.thoughtcrime.securesms.events.CallParticipant
@@ -135,7 +134,7 @@ object CallInfoView {
@Preview
@Composable
private fun CallInfoPreview() {
SignalTheme(isDarkMode = true) {
Previews.Preview {
Surface {
val remoteParticipants = listOf(CallParticipant(recipient = Recipient.UNKNOWN))
CallInfo(
@@ -344,7 +343,7 @@ private fun getCallSheetLabel(state: ParticipantsState): String {
@Preview
@Composable
private fun CallParticipantRowPreview() {
SignalTheme(isDarkMode = true) {
Previews.Preview {
Surface {
CallParticipantRow(
CallParticipant(recipient = Recipient.UNKNOWN),
@@ -357,7 +356,7 @@ private fun CallParticipantRowPreview() {
@Preview
@Composable
private fun HandRaisedRowPreview() {
SignalTheme(isDarkMode = true) {
Previews.Preview {
Surface {
HandRaisedRow(Recipient.UNKNOWN, "Peter Parker", canLowerHand = true)
}
@@ -604,7 +603,7 @@ private fun TwoUnknownAvatars() {
modifier = Modifier
.size(38.dp)
.align(Alignment.CenterEnd)
.border(width = 2.dp, color = LocalExtendedColors.current.colorSurface1, shape = CircleShape)
.border(width = 2.dp, color = SignalTheme.colors.colorSurface1, shape = CircleShape)
)
}
}

View File

@@ -45,10 +45,10 @@ import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.map
import org.signal.core.ui.compose.theme.SignalTheme
import org.signal.ringrtc.GroupCall
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.components.webrtc.v2.WebRtcCallViewModel
import org.thoughtcrime.securesms.compose.SignalTheme
import org.thoughtcrime.securesms.dependencies.AppDependencies
import org.thoughtcrime.securesms.events.CallParticipant
import org.thoughtcrime.securesms.events.GroupCallRaiseHandEvent

View File

@@ -26,7 +26,6 @@ import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import org.signal.core.ui.compose.rememberIsInPipMode
import org.signal.core.ui.compose.theme.SignalTheme
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.components.webrtc.CallParticipantListUpdate
import org.thoughtcrime.securesms.components.webrtc.CallParticipantsState
@@ -35,6 +34,7 @@ import org.thoughtcrime.securesms.components.webrtc.WebRtcControls
import org.thoughtcrime.securesms.components.webrtc.controls.CallInfoView
import org.thoughtcrime.securesms.components.webrtc.controls.ControlsAndInfoViewModel
import org.thoughtcrime.securesms.components.webrtc.controls.RaiseHandSnackbar
import org.thoughtcrime.securesms.compose.SignalTheme
import org.thoughtcrime.securesms.dependencies.AppDependencies
import org.thoughtcrime.securesms.events.WebRtcViewModel
import org.thoughtcrime.securesms.keyvalue.SignalStore