timeline : allow rendering m.room.pinned_events

This commit is contained in:
ganfra 2024-08-02 17:44:04 +02:00
parent aca6f9e665
commit 5d2abd0350
6 changed files with 46 additions and 10 deletions

View file

@ -80,11 +80,13 @@ class StateContentFormatter @Inject constructor(
else -> sp.getString(R.string.state_event_room_topic_removed, senderDisambiguatedDisplayName)
}
}
OtherState.RoomPinnedEvents -> {
when {
//TODO manage all cases when available
senderIsYou -> sp.getString(R.string.state_event_room_pinned_events_changed_by_you)
else -> sp.getString(R.string.state_event_room_pinned_events_changed, senderDisambiguatedDisplayName)
is OtherState.RoomPinnedEvents -> when (renderingMode) {
RenderingMode.RoomList -> {
Timber.v("Filtering timeline item for room state change: $content")
null
}
RenderingMode.Timeline -> {
formatRoomPinnedEvents(content, senderIsYou, senderDisambiguatedDisplayName)
}
}
is OtherState.Custom -> when (renderingMode) {
@ -215,4 +217,23 @@ class StateContentFormatter @Inject constructor(
}
}
}
private fun formatRoomPinnedEvents(
content: OtherState.RoomPinnedEvents,
senderIsYou: Boolean,
senderDisambiguatedDisplayName: String
) = when (content.change) {
OtherState.RoomPinnedEvents.Change.ADDED -> when {
senderIsYou -> sp.getString(R.string.state_event_room_pinned_events_pinned_by_you)
else -> sp.getString(R.string.state_event_room_pinned_events_pinned, senderDisambiguatedDisplayName)
}
OtherState.RoomPinnedEvents.Change.REMOVED -> when {
senderIsYou -> sp.getString(R.string.state_event_room_pinned_events_unpinned_by_you)
else -> sp.getString(R.string.state_event_room_pinned_events_unpinned, senderDisambiguatedDisplayName)
}
OtherState.RoomPinnedEvents.Change.CHANGED -> when {
senderIsYou -> sp.getString(R.string.state_event_room_pinned_events_changed_by_you)
else -> sp.getString(R.string.state_event_room_pinned_events_changed, senderDisambiguatedDisplayName)
}
}
}

View file

@ -660,7 +660,7 @@ class DefaultRoomLastMessageFormatterTest {
OtherState.RoomGuestAccess,
OtherState.RoomHistoryVisibility,
OtherState.RoomJoinRules,
OtherState.RoomPinnedEvents,
OtherState.RoomPinnedEvents(OtherState.RoomPinnedEvents.Change.CHANGED),
OtherState.RoomUserPowerLevels(emptyMap()),
OtherState.RoomServerAcl,
OtherState.RoomTombstone,