Display room invitation notification (#735)
* Notifications: Add some extra mappings so we keep the original contents and can pass it later to an UI layer * Fix notifications not appearing for a room if the app was on that room when it went to background. * Modernize how we create spannable strings for notifications, remove unneeded dependency * Remove actions from invite notifications temporarily * Add `NotificationDrawerManager` interface to be able to clear membership notifications when accepting or rejecting a room invite * Fix tests * Add comment to clarify some weird behaviours * Address review comments * Set circle shape for `largeBitmap` in message notifications * Fix no avatar in DM rooms * Fix rebase issues * Add invite list pending intent: - Refactor pending intents. - Make `DeepLinkData` a sealed interface. - Fix and add tests. * Rename `navigate__` functions to `attach__` * Add an extra test case for the `InviteList` deep link * Address most review comments. * Fix rebase issue * Add fallback notification type, allow dismissing invite notifications. Fallback notifications have a different underlying type and can be dismissed at will. * Fix tests
This commit is contained in:
parent
0fbf799d15
commit
a0c1f2c18a
55 changed files with 905 additions and 327 deletions
|
|
@ -19,6 +19,8 @@ package io.element.android.libraries.matrix.api.notification
|
|||
import io.element.android.libraries.matrix.api.core.EventId
|
||||
import io.element.android.libraries.matrix.api.core.RoomId
|
||||
import io.element.android.libraries.matrix.api.core.UserId
|
||||
import io.element.android.libraries.matrix.api.room.RoomMembershipState
|
||||
import io.element.android.libraries.matrix.api.timeline.item.event.MessageType
|
||||
|
||||
data class NotificationData(
|
||||
val senderId: UserId,
|
||||
|
|
@ -36,7 +38,60 @@ data class NotificationData(
|
|||
|
||||
data class NotificationEvent(
|
||||
val timestamp: Long,
|
||||
val content: String,
|
||||
val content: NotificationContent,
|
||||
// For images for instance
|
||||
val contentUrl: String?
|
||||
)
|
||||
|
||||
sealed interface NotificationContent {
|
||||
sealed interface MessageLike : NotificationContent {
|
||||
object CallAnswer : MessageLike
|
||||
object CallInvite : MessageLike
|
||||
object CallHangup : MessageLike
|
||||
object CallCandidates : MessageLike
|
||||
object KeyVerificationReady : MessageLike
|
||||
object KeyVerificationStart : MessageLike
|
||||
object KeyVerificationCancel : MessageLike
|
||||
object KeyVerificationAccept : MessageLike
|
||||
object KeyVerificationKey : MessageLike
|
||||
object KeyVerificationMac : MessageLike
|
||||
object KeyVerificationDone : MessageLike
|
||||
data class ReactionContent(
|
||||
val relatedEventId: String
|
||||
) : MessageLike
|
||||
object RoomEncrypted : MessageLike
|
||||
data class RoomMessage(
|
||||
val messageType: MessageType
|
||||
) : MessageLike
|
||||
object RoomRedaction : MessageLike
|
||||
object Sticker : MessageLike
|
||||
}
|
||||
|
||||
sealed interface StateEvent : NotificationContent {
|
||||
object PolicyRuleRoom : StateEvent
|
||||
object PolicyRuleServer : StateEvent
|
||||
object PolicyRuleUser : StateEvent
|
||||
object RoomAliases : StateEvent
|
||||
object RoomAvatar : StateEvent
|
||||
object RoomCanonicalAlias : StateEvent
|
||||
object RoomCreate : StateEvent
|
||||
object RoomEncryption : StateEvent
|
||||
object RoomGuestAccess : StateEvent
|
||||
object RoomHistoryVisibility : StateEvent
|
||||
object RoomJoinRules : StateEvent
|
||||
data class RoomMemberContent(
|
||||
val userId: String,
|
||||
val membershipState: RoomMembershipState
|
||||
) : StateEvent
|
||||
object RoomName : StateEvent
|
||||
object RoomPinnedEvents : StateEvent
|
||||
object RoomPowerLevels : StateEvent
|
||||
object RoomServerAcl : StateEvent
|
||||
object RoomThirdPartyInvite : StateEvent
|
||||
object RoomTombstone : StateEvent
|
||||
object RoomTopic : StateEvent
|
||||
object SpaceChild : StateEvent
|
||||
object SpaceParent : StateEvent
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue