Rename hideContent to hideMediaContent
This commit is contained in:
parent
76eb4b73f3
commit
a73c8b1e25
14 changed files with 42 additions and 42 deletions
|
|
@ -402,7 +402,7 @@ class MessagesPresenter @AssistedInject constructor(
|
||||||
val replyToDetails = loadReplyDetails(targetEvent.eventId).map(permalinkParser)
|
val replyToDetails = loadReplyDetails(targetEvent.eventId).map(permalinkParser)
|
||||||
val composerMode = MessageComposerMode.Reply(
|
val composerMode = MessageComposerMode.Reply(
|
||||||
replyToDetails = replyToDetails,
|
replyToDetails = replyToDetails,
|
||||||
hideImage = timelineProtectionState.hideContent(targetEvent.eventId),
|
hideImage = timelineProtectionState.hideMediaContent(targetEvent.eventId),
|
||||||
)
|
)
|
||||||
composerState.eventSink(
|
composerState.eventSink(
|
||||||
MessageComposerEvents.SetMode(composerMode)
|
MessageComposerEvents.SetMode(composerMode)
|
||||||
|
|
|
||||||
|
|
@ -256,7 +256,7 @@ private fun TimelineItemEventContentViewWrapper(
|
||||||
} else {
|
} else {
|
||||||
TimelineItemEventContentView(
|
TimelineItemEventContentView(
|
||||||
content = event.content,
|
content = event.content,
|
||||||
hideContent = timelineProtectionState.hideContent(event.eventId),
|
hideMediaContent = timelineProtectionState.hideMediaContent(event.eventId),
|
||||||
onShowClick = { timelineProtectionState.eventSink(TimelineProtectionEvent.ShowContent(event.eventId)) },
|
onShowClick = { timelineProtectionState.eventSink(TimelineProtectionEvent.ShowContent(event.eventId)) },
|
||||||
onLinkClick = onLinkClick,
|
onLinkClick = onLinkClick,
|
||||||
eventSink = { },
|
eventSink = { },
|
||||||
|
|
|
||||||
|
|
@ -129,7 +129,7 @@ fun TimelineItemEventRow(
|
||||||
eventContentView: @Composable (Modifier, (ContentAvoidingLayoutData) -> Unit) -> Unit = { contentModifier, onContentLayoutChange ->
|
eventContentView: @Composable (Modifier, (ContentAvoidingLayoutData) -> Unit) -> Unit = { contentModifier, onContentLayoutChange ->
|
||||||
TimelineItemEventContentView(
|
TimelineItemEventContentView(
|
||||||
content = event.content,
|
content = event.content,
|
||||||
hideContent = timelineProtectionState.hideContent(event.eventId),
|
hideMediaContent = timelineProtectionState.hideMediaContent(event.eventId),
|
||||||
onShowClick = { timelineProtectionState.eventSink(TimelineProtectionEvent.ShowContent(event.eventId)) },
|
onShowClick = { timelineProtectionState.eventSink(TimelineProtectionEvent.ShowContent(event.eventId)) },
|
||||||
onLinkClick = onLinkClick,
|
onLinkClick = onLinkClick,
|
||||||
eventSink = eventSink,
|
eventSink = eventSink,
|
||||||
|
|
@ -572,7 +572,7 @@ private fun MessageEventBubbleContent(
|
||||||
.clickable(onClick = inReplyToClick)
|
.clickable(onClick = inReplyToClick)
|
||||||
InReplyToView(
|
InReplyToView(
|
||||||
inReplyTo = inReplyTo,
|
inReplyTo = inReplyTo,
|
||||||
hideImage = timelineProtectionState.hideContent(inReplyTo.eventId()),
|
hideImage = timelineProtectionState.hideMediaContent(inReplyTo.eventId()),
|
||||||
modifier = inReplyToModifier,
|
modifier = inReplyToModifier,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@ fun TimelineItemGroupedEventsRow(
|
||||||
{ event, contentModifier, onContentLayoutChange ->
|
{ event, contentModifier, onContentLayoutChange ->
|
||||||
TimelineItemEventContentView(
|
TimelineItemEventContentView(
|
||||||
content = event.content,
|
content = event.content,
|
||||||
hideContent = timelineProtectionState.hideContent(event.eventId),
|
hideMediaContent = timelineProtectionState.hideMediaContent(event.eventId),
|
||||||
onShowClick = { timelineProtectionState.eventSink(TimelineProtectionEvent.ShowContent(event.eventId)) },
|
onShowClick = { timelineProtectionState.eventSink(TimelineProtectionEvent.ShowContent(event.eventId)) },
|
||||||
onLinkClick = onLinkClick,
|
onLinkClick = onLinkClick,
|
||||||
eventSink = eventSink,
|
eventSink = eventSink,
|
||||||
|
|
@ -120,7 +120,7 @@ private fun TimelineItemGroupedEventsRowContent(
|
||||||
{ event, contentModifier, onContentLayoutChange ->
|
{ event, contentModifier, onContentLayoutChange ->
|
||||||
TimelineItemEventContentView(
|
TimelineItemEventContentView(
|
||||||
content = event.content,
|
content = event.content,
|
||||||
hideContent = timelineProtectionState.hideContent(event.eventId),
|
hideMediaContent = timelineProtectionState.hideMediaContent(event.eventId),
|
||||||
onShowClick = { timelineProtectionState.eventSink(TimelineProtectionEvent.ShowContent(event.eventId)) },
|
onShowClick = { timelineProtectionState.eventSink(TimelineProtectionEvent.ShowContent(event.eventId)) },
|
||||||
onLinkClick = onLinkClick,
|
onLinkClick = onLinkClick,
|
||||||
eventSink = eventSink,
|
eventSink = eventSink,
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ internal fun TimelineItemRow(
|
||||||
{ event, contentModifier, onContentLayoutChange ->
|
{ event, contentModifier, onContentLayoutChange ->
|
||||||
TimelineItemEventContentView(
|
TimelineItemEventContentView(
|
||||||
content = event.content,
|
content = event.content,
|
||||||
hideContent = timelineProtectionState.hideContent(event.eventId),
|
hideMediaContent = timelineProtectionState.hideMediaContent(event.eventId),
|
||||||
onShowClick = { timelineProtectionState.eventSink(TimelineProtectionEvent.ShowContent(event.eventId)) },
|
onShowClick = { timelineProtectionState.eventSink(TimelineProtectionEvent.ShowContent(event.eventId)) },
|
||||||
onLinkClick = onLinkClick,
|
onLinkClick = onLinkClick,
|
||||||
eventSink = eventSink,
|
eventSink = eventSink,
|
||||||
|
|
@ -118,7 +118,7 @@ internal fun TimelineItemRow(
|
||||||
timelineProtectionState = timelineProtectionState,
|
timelineProtectionState = timelineProtectionState,
|
||||||
isLastOutgoingMessage = isLastOutgoingMessage,
|
isLastOutgoingMessage = isLastOutgoingMessage,
|
||||||
isHighlighted = timelineItem.isEvent(focusedEventId),
|
isHighlighted = timelineItem.isEvent(focusedEventId),
|
||||||
onClick = if (timelineProtectionState.hideContent(timelineItem.eventId) && timelineItem.mustBeProtected()) {
|
onClick = if (timelineProtectionState.hideMediaContent(timelineItem.eventId) && timelineItem.mustBeProtected()) {
|
||||||
{}
|
{}
|
||||||
} else {
|
} else {
|
||||||
{ onClick(timelineItem) }
|
{ onClick(timelineItem) }
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ fun TimelineItemStateEventRow(
|
||||||
TimelineItemEventContentView(
|
TimelineItemEventContentView(
|
||||||
content = event.content,
|
content = event.content,
|
||||||
onLinkClick = {},
|
onLinkClick = {},
|
||||||
hideContent = false,
|
hideMediaContent = false,
|
||||||
onShowClick = {},
|
onShowClick = {},
|
||||||
eventSink = eventSink,
|
eventSink = eventSink,
|
||||||
modifier = Modifier.defaultTimelineContentPadding()
|
modifier = Modifier.defaultTimelineContentPadding()
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ import io.element.android.libraries.architecture.Presenter
|
||||||
@Composable
|
@Composable
|
||||||
fun TimelineItemEventContentView(
|
fun TimelineItemEventContentView(
|
||||||
content: TimelineItemEventContent,
|
content: TimelineItemEventContent,
|
||||||
hideContent: Boolean,
|
hideMediaContent: Boolean,
|
||||||
onShowClick: () -> Unit,
|
onShowClick: () -> Unit,
|
||||||
onLinkClick: (url: String) -> Unit,
|
onLinkClick: (url: String) -> Unit,
|
||||||
eventSink: (TimelineEvents.EventFromTimelineItem) -> Unit,
|
eventSink: (TimelineEvents.EventFromTimelineItem) -> Unit,
|
||||||
|
|
@ -71,20 +71,20 @@ fun TimelineItemEventContentView(
|
||||||
)
|
)
|
||||||
is TimelineItemImageContent -> TimelineItemImageView(
|
is TimelineItemImageContent -> TimelineItemImageView(
|
||||||
content = content,
|
content = content,
|
||||||
hideContent = hideContent,
|
hideMediaContent = hideMediaContent,
|
||||||
onShowClick = onShowClick,
|
onShowClick = onShowClick,
|
||||||
onContentLayoutChange = onContentLayoutChange,
|
onContentLayoutChange = onContentLayoutChange,
|
||||||
modifier = modifier,
|
modifier = modifier,
|
||||||
)
|
)
|
||||||
is TimelineItemStickerContent -> TimelineItemStickerView(
|
is TimelineItemStickerContent -> TimelineItemStickerView(
|
||||||
content = content,
|
content = content,
|
||||||
hideContent = hideContent,
|
hideMediaContent = hideMediaContent,
|
||||||
onShowClick = onShowClick,
|
onShowClick = onShowClick,
|
||||||
modifier = modifier,
|
modifier = modifier,
|
||||||
)
|
)
|
||||||
is TimelineItemVideoContent -> TimelineItemVideoView(
|
is TimelineItemVideoContent -> TimelineItemVideoView(
|
||||||
content = content,
|
content = content,
|
||||||
hideContent = hideContent,
|
hideMediaContent = hideMediaContent,
|
||||||
onShowClick = onShowClick,
|
onShowClick = onShowClick,
|
||||||
onContentLayoutChange = onContentLayoutChange,
|
onContentLayoutChange = onContentLayoutChange,
|
||||||
modifier = modifier
|
modifier = modifier
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ import io.element.android.wysiwyg.compose.EditorStyledText
|
||||||
@Composable
|
@Composable
|
||||||
fun TimelineItemImageView(
|
fun TimelineItemImageView(
|
||||||
content: TimelineItemImageContent,
|
content: TimelineItemImageContent,
|
||||||
hideContent: Boolean,
|
hideMediaContent: Boolean,
|
||||||
onShowClick: () -> Unit,
|
onShowClick: () -> Unit,
|
||||||
onContentLayoutChange: (ContentAvoidingLayoutData) -> Unit,
|
onContentLayoutChange: (ContentAvoidingLayoutData) -> Unit,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
|
|
@ -80,7 +80,7 @@ fun TimelineItemImageView(
|
||||||
aspectRatio = content.aspectRatio,
|
aspectRatio = content.aspectRatio,
|
||||||
) {
|
) {
|
||||||
ProtectedView(
|
ProtectedView(
|
||||||
hideContent = hideContent,
|
hideContent = hideMediaContent,
|
||||||
onShowClick = onShowClick,
|
onShowClick = onShowClick,
|
||||||
) {
|
) {
|
||||||
var isLoaded by remember { mutableStateOf(false) }
|
var isLoaded by remember { mutableStateOf(false) }
|
||||||
|
|
@ -133,7 +133,7 @@ fun TimelineItemImageView(
|
||||||
internal fun TimelineItemImageViewPreview(@PreviewParameter(TimelineItemImageContentProvider::class) content: TimelineItemImageContent) = ElementPreview {
|
internal fun TimelineItemImageViewPreview(@PreviewParameter(TimelineItemImageContentProvider::class) content: TimelineItemImageContent) = ElementPreview {
|
||||||
TimelineItemImageView(
|
TimelineItemImageView(
|
||||||
content = content,
|
content = content,
|
||||||
hideContent = false,
|
hideMediaContent = false,
|
||||||
onShowClick = {},
|
onShowClick = {},
|
||||||
onContentLayoutChange = {},
|
onContentLayoutChange = {},
|
||||||
)
|
)
|
||||||
|
|
@ -141,10 +141,10 @@ internal fun TimelineItemImageViewPreview(@PreviewParameter(TimelineItemImageCon
|
||||||
|
|
||||||
@PreviewsDayNight
|
@PreviewsDayNight
|
||||||
@Composable
|
@Composable
|
||||||
internal fun TimelineItemImageViewHideContentPreview() = ElementPreview {
|
internal fun TimelineItemImageViewHideMediaContentPreview() = ElementPreview {
|
||||||
TimelineItemImageView(
|
TimelineItemImageView(
|
||||||
content = aTimelineItemImageContent(),
|
content = aTimelineItemImageContent(),
|
||||||
hideContent = true,
|
hideMediaContent = true,
|
||||||
onShowClick = {},
|
onShowClick = {},
|
||||||
onContentLayoutChange = {},
|
onContentLayoutChange = {},
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ private const val STICKER_SIZE_IN_DP = 128
|
||||||
@Composable
|
@Composable
|
||||||
fun TimelineItemStickerView(
|
fun TimelineItemStickerView(
|
||||||
content: TimelineItemStickerContent,
|
content: TimelineItemStickerContent,
|
||||||
hideContent: Boolean,
|
hideMediaContent: Boolean,
|
||||||
onShowClick: () -> Unit,
|
onShowClick: () -> Unit,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
) {
|
) {
|
||||||
|
|
@ -54,7 +54,7 @@ fun TimelineItemStickerView(
|
||||||
maxHeight = STICKER_SIZE_IN_DP,
|
maxHeight = STICKER_SIZE_IN_DP,
|
||||||
) {
|
) {
|
||||||
ProtectedView(
|
ProtectedView(
|
||||||
hideContent = hideContent,
|
hideContent = hideMediaContent,
|
||||||
onShowClick = onShowClick,
|
onShowClick = onShowClick,
|
||||||
) {
|
) {
|
||||||
var isLoaded by remember { mutableStateOf(false) }
|
var isLoaded by remember { mutableStateOf(false) }
|
||||||
|
|
@ -84,7 +84,7 @@ fun TimelineItemStickerView(
|
||||||
internal fun TimelineItemStickerViewPreview(@PreviewParameter(TimelineItemStickerContentProvider::class) content: TimelineItemStickerContent) = ElementPreview {
|
internal fun TimelineItemStickerViewPreview(@PreviewParameter(TimelineItemStickerContentProvider::class) content: TimelineItemStickerContent) = ElementPreview {
|
||||||
TimelineItemStickerView(
|
TimelineItemStickerView(
|
||||||
content = content,
|
content = content,
|
||||||
hideContent = false,
|
hideMediaContent = false,
|
||||||
onShowClick = {},
|
onShowClick = {},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ import io.element.android.wysiwyg.compose.EditorStyledText
|
||||||
@Composable
|
@Composable
|
||||||
fun TimelineItemVideoView(
|
fun TimelineItemVideoView(
|
||||||
content: TimelineItemVideoContent,
|
content: TimelineItemVideoContent,
|
||||||
hideContent: Boolean,
|
hideMediaContent: Boolean,
|
||||||
onShowClick: () -> Unit,
|
onShowClick: () -> Unit,
|
||||||
onContentLayoutChange: (ContentAvoidingLayoutData) -> Unit,
|
onContentLayoutChange: (ContentAvoidingLayoutData) -> Unit,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
|
|
@ -87,7 +87,7 @@ fun TimelineItemVideoView(
|
||||||
contentAlignment = Alignment.Center,
|
contentAlignment = Alignment.Center,
|
||||||
) {
|
) {
|
||||||
ProtectedView(
|
ProtectedView(
|
||||||
hideContent = hideContent,
|
hideContent = hideMediaContent,
|
||||||
onShowClick = onShowClick,
|
onShowClick = onShowClick,
|
||||||
) {
|
) {
|
||||||
var isLoaded by remember { mutableStateOf(false) }
|
var isLoaded by remember { mutableStateOf(false) }
|
||||||
|
|
@ -151,7 +151,7 @@ fun TimelineItemVideoView(
|
||||||
internal fun TimelineItemVideoViewPreview(@PreviewParameter(TimelineItemVideoContentProvider::class) content: TimelineItemVideoContent) = ElementPreview {
|
internal fun TimelineItemVideoViewPreview(@PreviewParameter(TimelineItemVideoContentProvider::class) content: TimelineItemVideoContent) = ElementPreview {
|
||||||
TimelineItemVideoView(
|
TimelineItemVideoView(
|
||||||
content = content,
|
content = content,
|
||||||
hideContent = false,
|
hideMediaContent = false,
|
||||||
onShowClick = {},
|
onShowClick = {},
|
||||||
onContentLayoutChange = {},
|
onContentLayoutChange = {},
|
||||||
)
|
)
|
||||||
|
|
@ -159,10 +159,10 @@ internal fun TimelineItemVideoViewPreview(@PreviewParameter(TimelineItemVideoCon
|
||||||
|
|
||||||
@PreviewsDayNight
|
@PreviewsDayNight
|
||||||
@Composable
|
@Composable
|
||||||
internal fun TimelineItemVideoViewHideContentPreview() = ElementPreview {
|
internal fun TimelineItemVideoViewHideMediaContentPreview() = ElementPreview {
|
||||||
TimelineItemVideoView(
|
TimelineItemVideoView(
|
||||||
content = aTimelineItemVideoContent(),
|
content = aTimelineItemVideoContent(),
|
||||||
hideContent = true,
|
hideMediaContent = true,
|
||||||
onShowClick = {},
|
onShowClick = {},
|
||||||
onContentLayoutChange = {},
|
onContentLayoutChange = {},
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -25,11 +25,11 @@ class TimelineProtectionPresenter @Inject constructor(
|
||||||
) : Presenter<TimelineProtectionState> {
|
) : Presenter<TimelineProtectionState> {
|
||||||
@Composable
|
@Composable
|
||||||
override fun present(): TimelineProtectionState {
|
override fun present(): TimelineProtectionState {
|
||||||
val hideContent by appPreferencesStore.doesHideImagesAndVideosFlow().collectAsState(initial = false)
|
val hideMediaContent by appPreferencesStore.doesHideImagesAndVideosFlow().collectAsState(initial = false)
|
||||||
var allowedEvents by remember { mutableStateOf<Set<EventId>>(setOf()) }
|
var allowedEvents by remember { mutableStateOf<Set<EventId>>(setOf()) }
|
||||||
val protectionState by remember(hideContent) {
|
val protectionState by remember(hideMediaContent) {
|
||||||
derivedStateOf {
|
derivedStateOf {
|
||||||
if (hideContent) {
|
if (hideMediaContent) {
|
||||||
ProtectionState.RenderOnly(eventIds = allowedEvents.toImmutableSet())
|
ProtectionState.RenderOnly(eventIds = allowedEvents.toImmutableSet())
|
||||||
} else {
|
} else {
|
||||||
ProtectionState.RenderAll
|
ProtectionState.RenderAll
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ data class TimelineProtectionState(
|
||||||
val protectionState: ProtectionState,
|
val protectionState: ProtectionState,
|
||||||
val eventSink: (TimelineProtectionEvent) -> Unit,
|
val eventSink: (TimelineProtectionEvent) -> Unit,
|
||||||
) {
|
) {
|
||||||
fun hideContent(eventId: EventId?) = when (protectionState) {
|
fun hideMediaContent(eventId: EventId?) = when (protectionState) {
|
||||||
is ProtectionState.RenderAll -> false
|
is ProtectionState.RenderAll -> false
|
||||||
is ProtectionState.RenderOnly -> eventId !in protectionState.eventIds
|
is ProtectionState.RenderOnly -> eventId !in protectionState.eventIds
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,30 +15,30 @@ import org.junit.Test
|
||||||
|
|
||||||
class TimelineProtectionStateTest {
|
class TimelineProtectionStateTest {
|
||||||
@Test
|
@Test
|
||||||
fun `when protectionState is RenderAll, hideContent always return null`() {
|
fun `when protectionState is RenderAll, hideMediaContent always return null`() {
|
||||||
val sut = aTimelineProtectionState(
|
val sut = aTimelineProtectionState(
|
||||||
protectionState = ProtectionState.RenderAll
|
protectionState = ProtectionState.RenderAll
|
||||||
)
|
)
|
||||||
assertThat(sut.hideContent(null)).isFalse()
|
assertThat(sut.hideMediaContent(null)).isFalse()
|
||||||
assertThat(sut.hideContent(AN_EVENT_ID)).isFalse()
|
assertThat(sut.hideMediaContent(AN_EVENT_ID)).isFalse()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `when protectionState is RenderOnly with empty set, hideContent always return true`() {
|
fun `when protectionState is RenderOnly with empty set, hideMediaContent always return true`() {
|
||||||
val sut = aTimelineProtectionState(
|
val sut = aTimelineProtectionState(
|
||||||
protectionState = ProtectionState.RenderOnly(persistentSetOf())
|
protectionState = ProtectionState.RenderOnly(persistentSetOf())
|
||||||
)
|
)
|
||||||
assertThat(sut.hideContent(null)).isTrue()
|
assertThat(sut.hideMediaContent(null)).isTrue()
|
||||||
assertThat(sut.hideContent(AN_EVENT_ID)).isTrue()
|
assertThat(sut.hideMediaContent(AN_EVENT_ID)).isTrue()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `when protectionState is RenderOnly with an Event, hideContent can return true or false`() {
|
fun `when protectionState is RenderOnly with an Event, hideMediaContent can return true or false`() {
|
||||||
val sut = aTimelineProtectionState(
|
val sut = aTimelineProtectionState(
|
||||||
protectionState = ProtectionState.RenderOnly(persistentSetOf(AN_EVENT_ID))
|
protectionState = ProtectionState.RenderOnly(persistentSetOf(AN_EVENT_ID))
|
||||||
)
|
)
|
||||||
assertThat(sut.hideContent(null)).isTrue()
|
assertThat(sut.hideMediaContent(null)).isTrue()
|
||||||
assertThat(sut.hideContent(AN_EVENT_ID)).isFalse()
|
assertThat(sut.hideMediaContent(AN_EVENT_ID)).isFalse()
|
||||||
assertThat(sut.hideContent(AN_EVENT_ID_2)).isTrue()
|
assertThat(sut.hideMediaContent(AN_EVENT_ID_2)).isTrue()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -118,8 +118,8 @@ class KonsistPreviewTest {
|
||||||
"TimelineItemEventRowWithReplyPreview",
|
"TimelineItemEventRowWithReplyPreview",
|
||||||
"TimelineItemGroupedEventsRowContentCollapsePreview",
|
"TimelineItemGroupedEventsRowContentCollapsePreview",
|
||||||
"TimelineItemGroupedEventsRowContentExpandedPreview",
|
"TimelineItemGroupedEventsRowContentExpandedPreview",
|
||||||
"TimelineItemImageViewHideContentPreview",
|
"TimelineItemImageViewHideMediaContentPreview",
|
||||||
"TimelineItemVideoViewHideContentPreview",
|
"TimelineItemVideoViewHideMediaContentPreview",
|
||||||
"TimelineItemVoiceViewUnifiedPreview",
|
"TimelineItemVoiceViewUnifiedPreview",
|
||||||
"TimelineVideoWithCaptionRowPreview",
|
"TimelineVideoWithCaptionRowPreview",
|
||||||
"TimelineViewMessageShieldPreview",
|
"TimelineViewMessageShieldPreview",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue