Browse Source

Remove `UnknownMessageType`, should be handled by `OtherMessageType` now.

pull/1875/head
Benoit Marty 10 months ago committed by Benoit Marty
parent
commit
68463c2e0c
  1. 8
      features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactory.kt
  2. 6
      libraries/eventformatter/impl/src/main/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatter.kt
  3. 16
      libraries/eventformatter/impl/src/test/kotlin/io/element/android/libraries/eventformatter/impl/DefaultRoomLastMessageFormatterTest.kt
  4. 2
      libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/timeline/item/event/MessageType.kt
  5. 4
      libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/timeline/item/event/EventMessageMapper.kt
  6. 2
      libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotifiableEventResolver.kt
  7. 18
      libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotifiableEventResolverTest.kt

8
features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/timeline/factories/event/TimelineItemContentMessageFactory.kt

@ -42,7 +42,6 @@ import io.element.android.libraries.matrix.api.timeline.item.event.MessageConten
import io.element.android.libraries.matrix.api.timeline.item.event.NoticeMessageType import io.element.android.libraries.matrix.api.timeline.item.event.NoticeMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.OtherMessageType import io.element.android.libraries.matrix.api.timeline.item.event.OtherMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.TextMessageType import io.element.android.libraries.matrix.api.timeline.item.event.TextMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.UnknownMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.VideoMessageType import io.element.android.libraries.matrix.api.timeline.item.event.VideoMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.VoiceMessageType import io.element.android.libraries.matrix.api.timeline.item.event.VoiceMessageType
import io.element.android.libraries.matrix.ui.messages.toHtmlDocument import io.element.android.libraries.matrix.ui.messages.toHtmlDocument
@ -174,13 +173,6 @@ class TimelineItemContentMessageFactory @Inject constructor(
htmlDocument = null, htmlDocument = null,
isEdited = content.isEdited, isEdited = content.isEdited,
) )
UnknownMessageType -> TimelineItemTextContent(
// Display the body as a fallback, but should not happen anymore
// (we have `OtherMessageType` now)
body = content.body,
htmlDocument = null,
isEdited = content.isEdited,
)
} }
} }

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

@ -48,7 +48,6 @@ import io.element.android.libraries.matrix.api.timeline.item.event.StickerConten
import io.element.android.libraries.matrix.api.timeline.item.event.TextMessageType import io.element.android.libraries.matrix.api.timeline.item.event.TextMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.UnableToDecryptContent import io.element.android.libraries.matrix.api.timeline.item.event.UnableToDecryptContent
import io.element.android.libraries.matrix.api.timeline.item.event.UnknownContent import io.element.android.libraries.matrix.api.timeline.item.event.UnknownContent
import io.element.android.libraries.matrix.api.timeline.item.event.UnknownMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.VideoMessageType import io.element.android.libraries.matrix.api.timeline.item.event.VideoMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.VoiceMessageType import io.element.android.libraries.matrix.api.timeline.item.event.VoiceMessageType
import io.element.android.libraries.matrix.ui.messages.toPlainText import io.element.android.libraries.matrix.ui.messages.toPlainText
@ -138,11 +137,6 @@ class DefaultRoomLastMessageFormatter @Inject constructor(
is OtherMessageType -> { is OtherMessageType -> {
messageType.body messageType.body
} }
UnknownMessageType -> {
// Display the body as a fallback, but should not happen anymore
// (we have `OtherMessageType` now)
messageContent.body
}
is NoticeMessageType -> { is NoticeMessageType -> {
messageType.body messageType.body
} }

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

@ -45,7 +45,6 @@ import io.element.android.libraries.matrix.api.timeline.item.event.StickerConten
import io.element.android.libraries.matrix.api.timeline.item.event.TextMessageType import io.element.android.libraries.matrix.api.timeline.item.event.TextMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.UnableToDecryptContent import io.element.android.libraries.matrix.api.timeline.item.event.UnableToDecryptContent
import io.element.android.libraries.matrix.api.timeline.item.event.UnknownContent import io.element.android.libraries.matrix.api.timeline.item.event.UnknownContent
import io.element.android.libraries.matrix.api.timeline.item.event.UnknownMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.VideoMessageType import io.element.android.libraries.matrix.api.timeline.item.event.VideoMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.VoiceMessageType import io.element.android.libraries.matrix.api.timeline.item.event.VoiceMessageType
import io.element.android.libraries.matrix.test.A_USER_ID import io.element.android.libraries.matrix.test.A_USER_ID
@ -170,6 +169,7 @@ class DefaultRoomLastMessageFormatterTest {
LocationMessageType(body, "geo:1,2", null), LocationMessageType(body, "geo:1,2", null),
NoticeMessageType(body, null), NoticeMessageType(body, null),
EmoteMessageType(body, null), EmoteMessageType(body, null),
OtherMessageType(msgType = "a_type", body = body),
) )
val senderName = "Someone" val senderName = "Someone"
val resultsInRoom = mutableListOf<Pair<MessageType, CharSequence?>>() val resultsInRoom = mutableListOf<Pair<MessageType, CharSequence?>>()
@ -187,13 +187,6 @@ class DefaultRoomLastMessageFormatterTest {
resultsInRoom.add(type to result) resultsInRoom.add(type to result)
} }
} }
val unknownMessage = createRoomEvent(sentByYou = false, senderDisplayName = "Someone", content = createMessageContent(UnknownMessageType))
val result = UnknownMessageType to formatter.format(unknownMessage, isDmRoom = isDm)
if (isDm) {
resultsInDm.add(result)
} else {
resultsInRoom.add(result)
}
} }
// Verify results of DM mode // Verify results of DM mode
@ -208,8 +201,7 @@ class DefaultRoomLastMessageFormatterTest {
is EmoteMessageType -> "* $senderName ${type.body}" is EmoteMessageType -> "* $senderName ${type.body}"
is TextMessageType, is TextMessageType,
is NoticeMessageType, is NoticeMessageType,
is OtherMessageType, is OtherMessageType -> body
UnknownMessageType -> body
} }
Truth.assertWithMessage("$type was not properly handled for DM").that(result).isEqualTo(expectedResult) Truth.assertWithMessage("$type was not properly handled for DM").that(result).isEqualTo(expectedResult)
} }
@ -226,8 +218,7 @@ class DefaultRoomLastMessageFormatterTest {
is LocationMessageType -> "$senderName: Shared location" is LocationMessageType -> "$senderName: Shared location"
is TextMessageType, is TextMessageType,
is NoticeMessageType, is NoticeMessageType,
is OtherMessageType, is OtherMessageType -> "$senderName: $body"
UnknownMessageType -> "$senderName: $body"
is EmoteMessageType -> "* $senderName ${type.body}" is EmoteMessageType -> "* $senderName ${type.body}"
} }
val shouldCreateAnnotatedString = when (type) { val shouldCreateAnnotatedString = when (type) {
@ -240,7 +231,6 @@ class DefaultRoomLastMessageFormatterTest {
is EmoteMessageType -> false is EmoteMessageType -> false
is TextMessageType, is NoticeMessageType -> true is TextMessageType, is NoticeMessageType -> true
is OtherMessageType -> true is OtherMessageType -> true
UnknownMessageType -> true
} }
if (shouldCreateAnnotatedString) { if (shouldCreateAnnotatedString) {
Truth.assertWithMessage("$type doesn't produce an AnnotatedString") Truth.assertWithMessage("$type doesn't produce an AnnotatedString")

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

@ -25,8 +25,6 @@ import io.element.android.libraries.matrix.api.media.VideoInfo
sealed interface MessageType sealed interface MessageType
data object UnknownMessageType : MessageType
data class EmoteMessageType( data class EmoteMessageType(
val body: String, val body: String,
val formatted: FormattedBody? val formatted: FormattedBody?

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

@ -30,7 +30,6 @@ import io.element.android.libraries.matrix.api.timeline.item.event.MessageFormat
import io.element.android.libraries.matrix.api.timeline.item.event.NoticeMessageType import io.element.android.libraries.matrix.api.timeline.item.event.NoticeMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.OtherMessageType import io.element.android.libraries.matrix.api.timeline.item.event.OtherMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.TextMessageType import io.element.android.libraries.matrix.api.timeline.item.event.TextMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.UnknownMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.VideoMessageType import io.element.android.libraries.matrix.api.timeline.item.event.VideoMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.VoiceMessageType import io.element.android.libraries.matrix.api.timeline.item.event.VoiceMessageType
import io.element.android.libraries.matrix.impl.media.map import io.element.android.libraries.matrix.impl.media.map
@ -76,7 +75,7 @@ class EventMessageMapper {
) )
} }
fun mapMessageType(type: RustMessageType?) = when (type) { fun mapMessageType(type: RustMessageType) = when (type) {
is RustMessageType.Audio -> { is RustMessageType.Audio -> {
when (type.content.voice) { when (type.content.voice) {
null -> { null -> {
@ -120,7 +119,6 @@ class EventMessageMapper {
is MessageType.Other -> { is MessageType.Other -> {
OtherMessageType(type.msgtype, type.body) OtherMessageType(type.msgtype, type.body)
} }
null -> UnknownMessageType
} }
} }

2
libraries/push/impl/src/main/kotlin/io/element/android/libraries/push/impl/notifications/NotifiableEventResolver.kt

@ -34,7 +34,6 @@ import io.element.android.libraries.matrix.api.timeline.item.event.LocationMessa
import io.element.android.libraries.matrix.api.timeline.item.event.NoticeMessageType import io.element.android.libraries.matrix.api.timeline.item.event.NoticeMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.OtherMessageType import io.element.android.libraries.matrix.api.timeline.item.event.OtherMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.TextMessageType import io.element.android.libraries.matrix.api.timeline.item.event.TextMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.UnknownMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.VideoMessageType import io.element.android.libraries.matrix.api.timeline.item.event.VideoMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.VoiceMessageType import io.element.android.libraries.matrix.api.timeline.item.event.VoiceMessageType
import io.element.android.libraries.matrix.ui.messages.toPlainText import io.element.android.libraries.matrix.ui.messages.toPlainText
@ -222,7 +221,6 @@ class NotifiableEventResolver @Inject constructor(
is VideoMessageType -> messageType.body is VideoMessageType -> messageType.body
is LocationMessageType -> messageType.body is LocationMessageType -> messageType.body
is OtherMessageType -> messageType.body is OtherMessageType -> messageType.body
is UnknownMessageType -> stringProvider.getString(CommonStrings.common_unsupported_event)
} }
} }

18
libraries/push/impl/src/test/kotlin/io/element/android/libraries/push/impl/notifications/NotifiableEventResolverTest.kt

@ -29,7 +29,6 @@ import io.element.android.libraries.matrix.api.timeline.item.event.ImageMessageT
import io.element.android.libraries.matrix.api.timeline.item.event.LocationMessageType import io.element.android.libraries.matrix.api.timeline.item.event.LocationMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.NoticeMessageType import io.element.android.libraries.matrix.api.timeline.item.event.NoticeMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.TextMessageType import io.element.android.libraries.matrix.api.timeline.item.event.TextMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.UnknownMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.VideoMessageType import io.element.android.libraries.matrix.api.timeline.item.event.VideoMessageType
import io.element.android.libraries.matrix.api.timeline.item.event.VoiceMessageType import io.element.android.libraries.matrix.api.timeline.item.event.VoiceMessageType
import io.element.android.libraries.matrix.test.AN_EVENT_ID import io.element.android.libraries.matrix.test.AN_EVENT_ID
@ -234,23 +233,6 @@ class NotifiableEventResolverTest {
assertThat(result).isEqualTo(expectedResult) assertThat(result).isEqualTo(expectedResult)
} }
@Test
fun `resolve event message unknown`() = runTest {
val sut = createNotifiableEventResolver(
notificationResult = Result.success(
createNotificationData(
content = NotificationContent.MessageLike.RoomMessage(
senderId = A_USER_ID_2,
messageType = UnknownMessageType,
)
)
)
)
val result = sut.resolveEvent(A_SESSION_ID, A_ROOM_ID, AN_EVENT_ID)
val expectedResult = createNotifiableMessageEvent(body = "Unsupported event")
assertThat(result).isEqualTo(expectedResult)
}
@Test @Test
fun `resolve poll`() = runTest { fun `resolve poll`() = runTest {
val sut = createNotifiableEventResolver( val sut = createNotifiableEventResolver(

Loading…
Cancel
Save