[fractal] room: Simplify use of TimelineItemImpl
- From: Julian Sparber <jsparber src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [fractal] room: Simplify use of TimelineItemImpl
- Date: Wed, 13 Apr 2022 16:57:13 +0000 (UTC)
commit a6653be085e96a202324ffe72f597ffa63320ff3
Author: Kévin Commaille <zecakeh tedomum fr>
Date: Tue Apr 12 19:45:50 2022 +0200
room: Simplify use of TimelineItemImpl
src/session/room/event.rs | 21 +++++++--------------
src/session/room/timeline/timeline_item.rs | 24 ++++++++++++------------
2 files changed, 19 insertions(+), 26 deletions(-)
---
diff --git a/src/session/room/event.rs b/src/session/room/event.rs
index 8252e36c3..63167e190 100644
--- a/src/session/room/event.rs
+++ b/src/session/room/event.rs
@@ -135,15 +135,12 @@ mod imp {
}
impl TimelineItemImpl for Event {
- fn selectable(&self, _obj: &TimelineItem) -> bool {
+ fn selectable(&self, _obj: &Self::Type) -> bool {
true
}
- fn activatable(&self, obj: &TimelineItem) -> bool {
- match obj
- .downcast_ref::<super::Event>()
- .and_then(|event| event.message_content())
- {
+ fn activatable(&self, obj: &Self::Type) -> bool {
+ match obj.message_content() {
// The event can be activated to open the media viewer if it's an image or a video.
Some(AnyMessageLikeEventContent::RoomMessage(message)) => {
matches!(
@@ -155,11 +152,8 @@ mod imp {
}
}
- fn can_hide_header(&self, obj: &TimelineItem) -> bool {
- match obj
- .downcast_ref::<super::Event>()
- .and_then(|event| event.message_content())
- {
+ fn can_hide_header(&self, obj: &Self::Type) -> bool {
+ match obj.message_content() {
Some(AnyMessageLikeEventContent::RoomMessage(message)) => {
matches!(
message.msgtype,
@@ -177,9 +171,8 @@ mod imp {
}
}
- fn sender(&self, obj: &TimelineItem) -> Option<Member> {
- obj.downcast_ref::<super::Event>()
- .map(|event| event.room().members().member_by_id(event.matrix_sender()))
+ fn sender(&self, obj: &Self::Type) -> Option<Member> {
+ Some(obj.room().members().member_by_id(obj.matrix_sender()))
}
}
}
diff --git a/src/session/room/timeline/timeline_item.rs b/src/session/room/timeline/timeline_item.rs
index d1c5f8b24..55ef72656 100644
--- a/src/session/room/timeline/timeline_item.rs
+++ b/src/session/room/timeline/timeline_item.rs
@@ -205,19 +205,19 @@ impl<O: IsA<TimelineItem>> TimelineItemExt for O {
/// Overriding a method from this Trait overrides also its behavior in
/// `TimelineItemExt`.
pub trait TimelineItemImpl: ObjectImpl {
- fn selectable(&self, _obj: &TimelineItem) -> bool {
+ fn selectable(&self, _obj: &Self::Type) -> bool {
false
}
- fn activatable(&self, _obj: &TimelineItem) -> bool {
+ fn activatable(&self, _obj: &Self::Type) -> bool {
false
}
- fn can_hide_header(&self, _obj: &TimelineItem) -> bool {
+ fn can_hide_header(&self, _obj: &Self::Type) -> bool {
false
}
- fn sender(&self, _obj: &TimelineItem) -> Option<Member> {
+ fn sender(&self, _obj: &Self::Type) -> Option<Member> {
None
}
}
@@ -246,8 +246,8 @@ where
T: ObjectSubclass + TimelineItemImpl,
T::Type: IsA<TimelineItem>,
{
- let imp = this.downcast_ref::<T::Type>().unwrap().imp();
- imp.selectable(this)
+ let this = this.downcast_ref::<T::Type>().unwrap();
+ this.imp().selectable(this)
}
fn activatable_trampoline<T>(this: &TimelineItem) -> bool
@@ -255,8 +255,8 @@ where
T: ObjectSubclass + TimelineItemImpl,
T::Type: IsA<TimelineItem>,
{
- let imp = this.downcast_ref::<T::Type>().unwrap().imp();
- imp.activatable(this)
+ let this = this.downcast_ref::<T::Type>().unwrap();
+ this.imp().activatable(this)
}
fn can_hide_header_trampoline<T>(this: &TimelineItem) -> bool
@@ -264,8 +264,8 @@ where
T: ObjectSubclass + TimelineItemImpl,
T::Type: IsA<TimelineItem>,
{
- let imp = this.downcast_ref::<T::Type>().unwrap().imp();
- imp.can_hide_header(this)
+ let this = this.downcast_ref::<T::Type>().unwrap();
+ this.imp().can_hide_header(this)
}
fn sender_trampoline<T>(this: &TimelineItem) -> Option<Member>
@@ -273,6 +273,6 @@ where
T: ObjectSubclass + TimelineItemImpl,
T::Type: IsA<TimelineItem>,
{
- let imp = this.downcast_ref::<T::Type>().unwrap().imp();
- imp.sender(this)
+ let this = this.downcast_ref::<T::Type>().unwrap();
+ this.imp().sender(this)
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]