@@ -40,79 +40,81 @@ use super::{
4040 TimelineKey ,
4141} ;
4242
43- pub ( super ) fn handle_live_event (
44- raw : Raw < AnySyncTimelineEvent > ,
45- encryption_info : Option < EncryptionInfo > ,
46- own_user_id : & UserId ,
47- timeline : & TimelineInner ,
48- ) {
49- handle_remote_event ( raw, encryption_info, own_user_id, TimelineItemPosition :: End , timeline)
50- }
43+ impl TimelineInner {
44+ pub ( super ) fn handle_live_event (
45+ & self ,
46+ raw : Raw < AnySyncTimelineEvent > ,
47+ encryption_info : Option < EncryptionInfo > ,
48+ own_user_id : & UserId ,
49+ ) {
50+ self . handle_remote_event ( raw, encryption_info, own_user_id, TimelineItemPosition :: End )
51+ }
5152
52- pub ( super ) fn handle_local_event (
53- txn_id : OwnedTransactionId ,
54- content : AnyMessageLikeEventContent ,
55- own_user_id : & UserId ,
56- timeline : & TimelineInner ,
57- ) {
58- let meta = TimelineEventMetadata {
59- sender : own_user_id. to_owned ( ) ,
60- origin_server_ts : None ,
61- raw_event : None ,
62- is_own_event : true ,
63- relations : None ,
64- // FIXME: Should we supply something here for encrypted rooms?
65- encryption_info : None ,
66- } ;
67-
68- let flow = Flow :: Local { txn_id } ;
69- let kind = TimelineEventKind :: Message { content } ;
70-
71- TimelineEventHandler :: new ( meta, flow, timeline) . handle_event ( kind)
72- }
53+ pub ( super ) fn handle_local_event (
54+ & self ,
55+ txn_id : OwnedTransactionId ,
56+ content : AnyMessageLikeEventContent ,
57+ own_user_id : & UserId ,
58+ ) {
59+ let meta = TimelineEventMetadata {
60+ sender : own_user_id. to_owned ( ) ,
61+ origin_server_ts : None ,
62+ raw_event : None ,
63+ is_own_event : true ,
64+ relations : None ,
65+ // FIXME: Should we supply something here for encrypted rooms?
66+ encryption_info : None ,
67+ } ;
7368
74- pub ( super ) fn handle_back_paginated_event (
75- raw : Raw < AnySyncTimelineEvent > ,
76- encryption_info : Option < EncryptionInfo > ,
77- own_user_id : & UserId ,
78- timeline : & TimelineInner ,
79- ) {
80- handle_remote_event ( raw, encryption_info, own_user_id, TimelineItemPosition :: Start , timeline)
81- }
69+ let flow = Flow :: Local { txn_id } ;
70+ let kind = TimelineEventKind :: Message { content } ;
8271
83- fn handle_remote_event (
84- raw : Raw < AnySyncTimelineEvent > ,
85- encryption_info : Option < EncryptionInfo > ,
86- own_user_id : & UserId ,
87- position : TimelineItemPosition ,
88- timeline : & TimelineInner ,
89- ) {
90- let event = match raw. deserialize ( ) {
91- Ok ( ev) => ev,
92- Err ( _e) => {
93- // TODO: Add some sort of error timeline item
94- return ;
95- }
96- } ;
97-
98- let sender = event. sender ( ) . to_owned ( ) ;
99- let is_own_event = sender == own_user_id;
100-
101- let meta = TimelineEventMetadata {
102- raw_event : Some ( raw) ,
103- sender,
104- origin_server_ts : Some ( event. origin_server_ts ( ) ) ,
105- is_own_event,
106- relations : event. relations ( ) . cloned ( ) ,
107- encryption_info,
108- } ;
109- let flow = Flow :: Remote {
110- event_id : event. event_id ( ) . to_owned ( ) ,
111- txn_id : event. transaction_id ( ) . map ( ToOwned :: to_owned) ,
112- position,
113- } ;
114-
115- TimelineEventHandler :: new ( meta, flow, timeline) . handle_event ( event. into ( ) )
72+ TimelineEventHandler :: new ( meta, flow, self ) . handle_event ( kind)
73+ }
74+
75+ pub ( super ) fn handle_back_paginated_event (
76+ & self ,
77+ raw : Raw < AnySyncTimelineEvent > ,
78+ encryption_info : Option < EncryptionInfo > ,
79+ own_user_id : & UserId ,
80+ ) {
81+ self . handle_remote_event ( raw, encryption_info, own_user_id, TimelineItemPosition :: Start )
82+ }
83+
84+ fn handle_remote_event (
85+ & self ,
86+ raw : Raw < AnySyncTimelineEvent > ,
87+ encryption_info : Option < EncryptionInfo > ,
88+ own_user_id : & UserId ,
89+ position : TimelineItemPosition ,
90+ ) {
91+ let event = match raw. deserialize ( ) {
92+ Ok ( ev) => ev,
93+ Err ( _e) => {
94+ // TODO: Add some sort of error timeline item
95+ return ;
96+ }
97+ } ;
98+
99+ let sender = event. sender ( ) . to_owned ( ) ;
100+ let is_own_event = sender == own_user_id;
101+
102+ let meta = TimelineEventMetadata {
103+ raw_event : Some ( raw) ,
104+ sender,
105+ origin_server_ts : Some ( event. origin_server_ts ( ) ) ,
106+ is_own_event,
107+ relations : event. relations ( ) . cloned ( ) ,
108+ encryption_info,
109+ } ;
110+ let flow = Flow :: Remote {
111+ event_id : event. event_id ( ) . to_owned ( ) ,
112+ txn_id : event. transaction_id ( ) . map ( ToOwned :: to_owned) ,
113+ position,
114+ } ;
115+
116+ TimelineEventHandler :: new ( meta, flow, self ) . handle_event ( event. into ( ) )
117+ }
116118}
117119
118120enum Flow {
0 commit comments