diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/BlankNote.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/BlankNote.kt index 81823b0c9..22e42d5aa 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/BlankNote.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/BlankNote.kt @@ -37,15 +37,28 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.model.Note +import com.vitorpamplona.amethyst.ui.components.mockAccountViewModel import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.theme.ButtonBorder import com.vitorpamplona.amethyst.ui.theme.ButtonPadding import com.vitorpamplona.amethyst.ui.theme.DividerThickness import com.vitorpamplona.amethyst.ui.theme.Size35dp +import com.vitorpamplona.amethyst.ui.theme.ThemeComparisonColumn import kotlinx.collections.immutable.ImmutableSet +import kotlinx.collections.immutable.persistentSetOf + +@Composable +@Preview +fun BlankNotePreview() { + ThemeComparisonColumn( + onDark = { BlankNote() }, + onLight = { BlankNote() }, + ) +} @Composable fun BlankNote( @@ -85,6 +98,32 @@ fun BlankNote( } } +@Composable +@Preview +fun HiddenNotePreview() { + val accountViewModel = mockAccountViewModel() + val nav: (String) -> Unit = {} + + ThemeComparisonColumn( + onDark = { + HiddenNote( + reports = persistentSetOf(), + isHiddenAuthor = true, + accountViewModel = accountViewModel, + nav = nav, + ) {} + }, + onLight = { + HiddenNote( + reports = persistentSetOf(), + isHiddenAuthor = true, + accountViewModel = accountViewModel, + nav = nav, + ) {} + }, + ) +} + @OptIn(ExperimentalLayoutApi::class) @Composable fun HiddenNote( @@ -149,3 +188,56 @@ fun HiddenNote( ) } } + +@Preview +@Composable +fun HiddenNoteByMePreview() { + ThemeComparisonColumn( + onDark = { HiddenNoteByMe {} }, + onLight = { HiddenNoteByMe {} }, + ) +} + +@Composable +fun HiddenNoteByMe( + modifier: Modifier = Modifier, + isQuote: Boolean = false, + onClick: () -> Unit, +) { + Column(modifier = modifier, horizontalAlignment = Alignment.CenterHorizontally) { + Row( + modifier = Modifier.padding(horizontal = 20.dp), + horizontalArrangement = Arrangement.Center, + verticalAlignment = Alignment.CenterVertically, + ) { + Column( + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier.padding(30.dp), + ) { + Text( + text = stringResource(R.string.post_was_hidden), + color = Color.Gray, + ) + + Button( + modifier = Modifier.padding(top = 10.dp), + onClick = onClick, + shape = ButtonBorder, + colors = + ButtonDefaults.buttonColors( + contentColor = MaterialTheme.colorScheme.primary, + ), + contentPadding = ButtonPadding, + ) { + Text(text = stringResource(R.string.show_anyway), color = Color.White) + } + } + } + + if (!isQuote) { + Divider( + thickness = DividerThickness, + ) + } + } +} diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt index 9b57df413..c4dc75fc9 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/NoteCompose.kt @@ -359,8 +359,13 @@ fun CheckHiddenNoteCompose( } .observeAsState(accountViewModel.isNoteHidden(note)) + val showAnyway = + remember { + mutableStateOf(false) + } + Crossfade(targetState = isHidden, label = "CheckHiddenNoteCompose") { - if (!it) { + if (!it || showAnyway.value) { LoadedNoteCompose( note = note, routeForLastRead = routeForLastRead, @@ -374,6 +379,11 @@ fun CheckHiddenNoteCompose( accountViewModel = accountViewModel, nav = nav, ) + } else if (isQuotedNote || isBoostedNote) { + HiddenNoteByMe( + isQuote = true, + onClick = { showAnyway.value = true }, + ) } } } @@ -441,8 +451,7 @@ fun RenderReportState( ) { var showReportedNote by remember(note) { mutableStateOf(false) } - Crossfade(targetState = !state.isAcceptable && !showReportedNote, label = "RenderReportState") { - showHiddenNote -> + Crossfade(targetState = !state.isAcceptable && !showReportedNote, label = "RenderReportState") { showHiddenNote -> if (showHiddenNote) { HiddenNote( state.relevantReports, diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 845fe0b15..9de79d5d3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -7,6 +7,7 @@ Your Profile Picture Scan QR Show Anyway + This post was hidden because it mentions your hidden users or words Post was muted or reported by Event is loading or can\'t be found in your relay list Channel Image