Skip to content

Commit 583625e

Browse files
committed
Merge branch 'develop' into feature/fga/pinned_message_banner_logic
2 parents 49f4526 + 839d419 commit 583625e

File tree

6 files changed

+48
-14
lines changed

6 files changed

+48
-14
lines changed

appconfig/src/main/kotlin/io/element/android/appconfig/TimelineConfig.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ object TimelineConfig {
3131
StateEventType.ROOM_GUEST_ACCESS,
3232
StateEventType.ROOM_HISTORY_VISIBILITY,
3333
StateEventType.ROOM_JOIN_RULES,
34-
StateEventType.ROOM_PINNED_EVENTS,
3534
StateEventType.ROOM_POWER_LEVELS,
3635
StateEventType.ROOM_SERVER_ACL,
3736
StateEventType.ROOM_TOMBSTONE,

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ allprojects {
6161
config.from(files("$rootDir/tools/detekt/detekt.yml"))
6262
}
6363
dependencies {
64-
detektPlugins("io.nlopez.compose.rules:detekt:0.4.8")
64+
detektPlugins("io.nlopez.compose.rules:detekt:0.4.9")
6565
}
6666

6767
// KtLint

libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/StateContentFormatter.kt

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,15 @@ class StateContentFormatter @Inject constructor(
8080
else -> sp.getString(R.string.state_event_room_topic_removed, senderDisambiguatedDisplayName)
8181
}
8282
}
83+
is OtherState.RoomPinnedEvents -> when (renderingMode) {
84+
RenderingMode.RoomList -> {
85+
Timber.v("Filtering timeline item for room state change: $content")
86+
null
87+
}
88+
RenderingMode.Timeline -> {
89+
formatRoomPinnedEvents(content, senderIsYou, senderDisambiguatedDisplayName)
90+
}
91+
}
8392
is OtherState.Custom -> when (renderingMode) {
8493
RenderingMode.RoomList -> {
8594
Timber.v("Filtering timeline item for room state change: $content")
@@ -161,15 +170,6 @@ class StateContentFormatter @Inject constructor(
161170
"RoomJoinRules"
162171
}
163172
}
164-
OtherState.RoomPinnedEvents -> when (renderingMode) {
165-
RenderingMode.RoomList -> {
166-
Timber.v("Filtering timeline item for room state change: $content")
167-
null
168-
}
169-
RenderingMode.Timeline -> {
170-
"RoomPinnedEvents"
171-
}
172-
}
173173
is OtherState.RoomUserPowerLevels -> when (renderingMode) {
174174
RenderingMode.RoomList -> {
175175
Timber.v("Filtering timeline item for room state change: $content")
@@ -217,4 +217,23 @@ class StateContentFormatter @Inject constructor(
217217
}
218218
}
219219
}
220+
221+
private fun formatRoomPinnedEvents(
222+
content: OtherState.RoomPinnedEvents,
223+
senderIsYou: Boolean,
224+
senderDisambiguatedDisplayName: String
225+
) = when (content.change) {
226+
OtherState.RoomPinnedEvents.Change.ADDED -> when {
227+
senderIsYou -> sp.getString(R.string.state_event_room_pinned_events_pinned_by_you)
228+
else -> sp.getString(R.string.state_event_room_pinned_events_pinned, senderDisambiguatedDisplayName)
229+
}
230+
OtherState.RoomPinnedEvents.Change.REMOVED -> when {
231+
senderIsYou -> sp.getString(R.string.state_event_room_pinned_events_unpinned_by_you)
232+
else -> sp.getString(R.string.state_event_room_pinned_events_unpinned, senderDisambiguatedDisplayName)
233+
}
234+
OtherState.RoomPinnedEvents.Change.CHANGED -> when {
235+
senderIsYou -> sp.getString(R.string.state_event_room_pinned_events_changed_by_you)
236+
else -> sp.getString(R.string.state_event_room_pinned_events_changed, senderDisambiguatedDisplayName)
237+
}
238+
}
220239
}

libraries/eventformatter/impl/src/test/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatterTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -660,7 +660,7 @@ class DefaultRoomLastMessageFormatterTest {
660660
OtherState.RoomGuestAccess,
661661
OtherState.RoomHistoryVisibility,
662662
OtherState.RoomJoinRules,
663-
OtherState.RoomPinnedEvents,
663+
OtherState.RoomPinnedEvents(OtherState.RoomPinnedEvents.Change.CHANGED),
664664
OtherState.RoomUserPowerLevels(emptyMap()),
665665
OtherState.RoomServerAcl,
666666
OtherState.RoomTombstone,

libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/OtherState.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,14 @@ sealed interface OtherState {
3232
data object RoomHistoryVisibility : OtherState
3333
data object RoomJoinRules : OtherState
3434
data class RoomName(val name: String?) : OtherState
35-
data object RoomPinnedEvents : OtherState
35+
data class RoomPinnedEvents(val change: Change) : OtherState {
36+
enum class Change {
37+
ADDED,
38+
REMOVED,
39+
CHANGED
40+
}
41+
}
42+
3643
data class RoomUserPowerLevels(val users: Map<String, Long>) : OtherState
3744
data object RoomServerAcl : OtherState
3845
data class RoomThirdPartyInvite(val displayName: String?) : OtherState

libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/TimelineEventContentMapper.kt

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import kotlinx.collections.immutable.toImmutableMap
4040
import org.matrix.rustcomponents.sdk.TimelineItemContent
4141
import org.matrix.rustcomponents.sdk.TimelineItemContentKind
4242
import org.matrix.rustcomponents.sdk.use
43+
import uniffi.matrix_sdk_ui.RoomPinnedEventsChange
4344
import org.matrix.rustcomponents.sdk.EncryptedMessage as RustEncryptedMessage
4445
import org.matrix.rustcomponents.sdk.MembershipChange as RustMembershipChange
4546
import org.matrix.rustcomponents.sdk.OtherState as RustOtherState
@@ -176,7 +177,7 @@ private fun RustOtherState.map(): OtherState {
176177
RustOtherState.RoomHistoryVisibility -> OtherState.RoomHistoryVisibility
177178
RustOtherState.RoomJoinRules -> OtherState.RoomJoinRules
178179
is RustOtherState.RoomName -> OtherState.RoomName(name)
179-
is RustOtherState.RoomPinnedEvents -> OtherState.RoomPinnedEvents
180+
is RustOtherState.RoomPinnedEvents -> OtherState.RoomPinnedEvents(change.map())
180181
is RustOtherState.RoomPowerLevels -> OtherState.RoomUserPowerLevels(users)
181182
RustOtherState.RoomServerAcl -> OtherState.RoomServerAcl
182183
is RustOtherState.RoomThirdPartyInvite -> OtherState.RoomThirdPartyInvite(displayName)
@@ -187,6 +188,14 @@ private fun RustOtherState.map(): OtherState {
187188
}
188189
}
189190

191+
private fun RoomPinnedEventsChange.map(): OtherState.RoomPinnedEvents.Change {
192+
return when (this) {
193+
RoomPinnedEventsChange.ADDED -> OtherState.RoomPinnedEvents.Change.ADDED
194+
RoomPinnedEventsChange.REMOVED -> OtherState.RoomPinnedEvents.Change.REMOVED
195+
RoomPinnedEventsChange.CHANGED -> OtherState.RoomPinnedEvents.Change.CHANGED
196+
}
197+
}
198+
190199
private fun RustEncryptedMessage.map(): UnableToDecryptContent.Data {
191200
return when (this) {
192201
is RustEncryptedMessage.MegolmV1AesSha2 -> UnableToDecryptContent.Data.MegolmV1AesSha2(sessionId, cause.map())

0 commit comments

Comments
 (0)