ffi: add missing variants to ffi::event::MessageLikeEventType and use it in the timeline filter types

This commit is contained in:
Benjamin Bouvier
2024-02-01 13:37:23 +01:00
parent ac2fce8220
commit 40e006658c
2 changed files with 24 additions and 126 deletions
+14 -2
View File
@@ -285,11 +285,17 @@ pub enum MessageLikeEventType {
KeyVerificationMac,
KeyVerificationReady,
KeyVerificationStart,
ReactionSent,
PollEnd,
PollResponse,
PollStart,
Reaction,
RoomEncrypted,
RoomMessage,
RoomRedaction,
Sticker,
UnstablePollEnd,
UnstablePollResponse,
UnstablePollStart,
}
impl From<MessageLikeEventType> for ruma::events::MessageLikeEventType {
@@ -306,11 +312,17 @@ impl From<MessageLikeEventType> for ruma::events::MessageLikeEventType {
MessageLikeEventType::KeyVerificationKey => Self::KeyVerificationKey,
MessageLikeEventType::KeyVerificationMac => Self::KeyVerificationMac,
MessageLikeEventType::KeyVerificationDone => Self::KeyVerificationDone,
MessageLikeEventType::ReactionSent => Self::Reaction,
MessageLikeEventType::Reaction => Self::Reaction,
MessageLikeEventType::RoomEncrypted => Self::RoomEncrypted,
MessageLikeEventType::RoomMessage => Self::RoomMessage,
MessageLikeEventType::RoomRedaction => Self::RoomRedaction,
MessageLikeEventType::Sticker => Self::Sticker,
MessageLikeEventType::PollEnd => Self::PollEnd,
MessageLikeEventType::PollResponse => Self::PollResponse,
MessageLikeEventType::PollStart => Self::PollStart,
MessageLikeEventType::UnstablePollEnd => Self::UnstablePollEnd,
MessageLikeEventType::UnstablePollResponse => Self::UnstablePollResponse,
MessageLikeEventType::UnstablePollStart => Self::UnstablePollStart,
}
}
}
@@ -3,6 +3,8 @@ use std::sync::Arc;
use matrix_sdk_ui::timeline::event_type_filter::TimelineEventTypeFilter as InnerTimelineEventTypeFilter;
use ruma::events::{AnySyncTimelineEvent, TimelineEventType};
use crate::event::{MessageLikeEventType, StateEventType};
#[derive(uniffi::Object)]
pub struct TimelineEventTypeFilter {
inner: InnerTimelineEventTypeFilter,
@@ -35,135 +37,19 @@ impl TimelineEventTypeFilter {
#[derive(uniffi::Enum, Clone)]
pub enum FilterTimelineEventType {
MessageLike { event_type: FilterMessageLikeEventType },
State { event_type: FilterStateEventType },
MessageLike { event_type: MessageLikeEventType },
State { event_type: StateEventType },
}
impl From<FilterTimelineEventType> for TimelineEventType {
fn from(value: FilterTimelineEventType) -> TimelineEventType {
match value {
FilterTimelineEventType::MessageLike { event_type } => event_type.into(),
FilterTimelineEventType::State { event_type } => event_type.into(),
}
}
}
#[derive(uniffi::Enum, Clone)]
pub enum FilterStateEventType {
PolicyRuleRoom,
PolicyRuleServer,
PolicyRuleUser,
RoomAliases,
RoomAvatar,
RoomCanonicalAlias,
RoomCreate,
RoomEncryption,
RoomGuestAccess,
RoomHistoryVisibility,
RoomJoinRules,
RoomMember,
RoomName,
RoomPinnedEvents,
RoomPowerLevels,
RoomServerAcl,
RoomThirdPartyInvite,
RoomTombstone,
RoomTopic,
SpaceChild,
SpaceParent,
}
impl From<FilterStateEventType> for TimelineEventType {
fn from(value: FilterStateEventType) -> TimelineEventType {
match value {
FilterStateEventType::PolicyRuleRoom => TimelineEventType::PolicyRuleRoom,
FilterStateEventType::PolicyRuleServer => TimelineEventType::PolicyRuleServer,
FilterStateEventType::PolicyRuleUser => TimelineEventType::PolicyRuleUser,
FilterStateEventType::RoomAliases => TimelineEventType::RoomAliases,
FilterStateEventType::RoomAvatar => TimelineEventType::RoomAvatar,
FilterStateEventType::RoomCanonicalAlias => TimelineEventType::RoomCanonicalAlias,
FilterStateEventType::RoomCreate => TimelineEventType::RoomCreate,
FilterStateEventType::RoomEncryption => TimelineEventType::RoomEncryption,
FilterStateEventType::RoomGuestAccess => TimelineEventType::RoomGuestAccess,
FilterStateEventType::RoomHistoryVisibility => TimelineEventType::RoomHistoryVisibility,
FilterStateEventType::RoomJoinRules => TimelineEventType::RoomJoinRules,
FilterStateEventType::RoomMember => TimelineEventType::RoomMember,
FilterStateEventType::RoomName => TimelineEventType::RoomName,
FilterStateEventType::RoomPinnedEvents => TimelineEventType::RoomPinnedEvents,
FilterStateEventType::RoomPowerLevels => TimelineEventType::RoomPowerLevels,
FilterStateEventType::RoomServerAcl => TimelineEventType::RoomServerAcl,
FilterStateEventType::RoomThirdPartyInvite => TimelineEventType::RoomThirdPartyInvite,
FilterStateEventType::RoomTombstone => TimelineEventType::RoomTopic,
FilterStateEventType::RoomTopic => TimelineEventType::RoomTopic,
FilterStateEventType::SpaceChild => TimelineEventType::SpaceChild,
FilterStateEventType::SpaceParent => TimelineEventType::SpaceParent,
}
}
}
#[derive(uniffi::Enum, Clone)]
pub enum FilterMessageLikeEventType {
CallAnswer,
CallCandidates,
CallHangup,
CallInvite,
KeyVerificationAccept,
KeyVerificationCancel,
KeyVerificationDone,
KeyVerificationKey,
KeyVerificationMac,
KeyVerificationReady,
KeyVerificationStart,
PollEnd,
PollResponse,
PollStart,
Reaction,
RoomEncrypted,
RoomMessage,
RoomRedaction,
Sticker,
UnstablePollEnd,
UnstablePollResponse,
UnstablePollStart,
}
impl From<FilterMessageLikeEventType> for TimelineEventType {
fn from(value: FilterMessageLikeEventType) -> TimelineEventType {
match value {
FilterMessageLikeEventType::CallAnswer => TimelineEventType::CallAnswer,
FilterMessageLikeEventType::CallInvite => TimelineEventType::CallInvite,
FilterMessageLikeEventType::CallHangup => TimelineEventType::CallHangup,
FilterMessageLikeEventType::CallCandidates => TimelineEventType::CallCandidates,
FilterMessageLikeEventType::KeyVerificationReady => {
TimelineEventType::KeyVerificationReady
}
FilterMessageLikeEventType::KeyVerificationStart => {
TimelineEventType::KeyVerificationStart
}
FilterMessageLikeEventType::KeyVerificationCancel => {
TimelineEventType::KeyVerificationCancel
}
FilterMessageLikeEventType::KeyVerificationAccept => {
TimelineEventType::KeyVerificationAccept
}
FilterMessageLikeEventType::KeyVerificationKey => TimelineEventType::KeyVerificationKey,
FilterMessageLikeEventType::KeyVerificationMac => TimelineEventType::KeyVerificationMac,
FilterMessageLikeEventType::KeyVerificationDone => {
TimelineEventType::KeyVerificationDone
}
FilterMessageLikeEventType::PollEnd => TimelineEventType::PollEnd,
FilterMessageLikeEventType::PollResponse => TimelineEventType::PollResponse,
FilterMessageLikeEventType::PollStart => TimelineEventType::PollStart,
FilterMessageLikeEventType::Reaction => TimelineEventType::Reaction,
FilterMessageLikeEventType::RoomEncrypted => TimelineEventType::RoomEncrypted,
FilterMessageLikeEventType::RoomMessage => TimelineEventType::RoomMessage,
FilterMessageLikeEventType::RoomRedaction => TimelineEventType::RoomRedaction,
FilterMessageLikeEventType::Sticker => TimelineEventType::Sticker,
FilterMessageLikeEventType::UnstablePollEnd => TimelineEventType::UnstablePollEnd,
FilterMessageLikeEventType::UnstablePollResponse => {
TimelineEventType::UnstablePollResponse
}
FilterMessageLikeEventType::UnstablePollStart => TimelineEventType::UnstablePollStart,
FilterTimelineEventType::MessageLike { event_type } => {
ruma::events::MessageLikeEventType::from(event_type).into()
}
FilterTimelineEventType::State { event_type } => {
ruma::events::StateEventType::from(event_type).into()
}
}
}
}