@@ -2,6 +2,7 @@ use std::sync::Arc;
22
33use extension_trait:: extension_trait;
44use futures_signals:: signal_vec:: VecDiff ;
5+ use matrix_sdk:: room:: timeline:: { Profile , TimelineDetails } ;
56pub use matrix_sdk:: ruma:: events:: room:: { message:: RoomMessageEventContent , MediaSource } ;
67
78#[ uniffi:: export]
@@ -225,7 +226,7 @@ impl EventTimelineItem {
225226 self . 0 . sender ( ) . to_string ( )
226227 }
227228
228- pub fn sender_profile ( & self ) -> Profile {
229+ pub fn sender_profile ( & self ) -> ProfileTimelineDetails {
229230 self . 0 . sender_profile ( ) . into ( )
230231 }
231232
@@ -281,19 +282,23 @@ impl EventTimelineItem {
281282 }
282283}
283284
284- #[ derive( uniffi:: Record ) ]
285- pub struct Profile {
286- display_name : Option < String > ,
287- display_name_ambiguous : bool ,
288- avatar_url : Option < String > ,
289- }
290-
291- impl From < & matrix_sdk:: room:: timeline:: Profile > for Profile {
292- fn from ( p : & matrix_sdk:: room:: timeline:: Profile ) -> Self {
293- Self {
294- display_name : p. display_name . clone ( ) ,
295- display_name_ambiguous : p. display_name_ambiguous ,
296- avatar_url : p. avatar_url . as_ref ( ) . map ( ToString :: to_string) ,
285+ #[ derive( uniffi:: Enum ) ]
286+ pub enum ProfileTimelineDetails {
287+ Unavailable ,
288+ Pending ,
289+ Ready { display_name : Option < String > , display_name_ambiguous : bool , avatar_url : Option < String > } ,
290+ }
291+
292+ impl From < & TimelineDetails < Profile > > for ProfileTimelineDetails {
293+ fn from ( details : & TimelineDetails < Profile > ) -> Self {
294+ match details {
295+ TimelineDetails :: Unavailable => Self :: Unavailable ,
296+ TimelineDetails :: Pending => Self :: Pending ,
297+ TimelineDetails :: Ready ( profile) => Self :: Ready {
298+ display_name : profile. display_name . clone ( ) ,
299+ display_name_ambiguous : profile. display_name_ambiguous ,
300+ avatar_url : profile. avatar_url . as_ref ( ) . map ( ToString :: to_string) ,
301+ } ,
297302 }
298303 }
299304}
0 commit comments