@@ -9,6 +9,12 @@ pub struct MessageList<M: Message + 'static> {
99 messages : Vec < MessageGroup < M > > ,
1010}
1111
12+ impl < M : Message > Default for MessageList < M > {
13+ fn default ( ) -> Self {
14+ Self :: new ( )
15+ }
16+ }
17+
1218impl < M : Message > MessageList < M > {
1319 pub fn new ( ) -> MessageList < M > {
1420 Self { messages : Vec :: default ( ) }
@@ -37,24 +43,24 @@ impl<M: Message> MessageList<M> {
3743
3844 let last = self . messages . last_mut ( ) ;
3945
40- if last. is_some ( )
41- && last. as_ref ( ) . unwrap ( ) . get_author ( ) . get_id ( ) == message. get_author ( ) . get_id ( )
42- && message. should_group ( last. as_ref ( ) . unwrap ( ) . last ( ) )
43- {
44- last. unwrap ( ) . add ( message) ;
46+ if let Some ( last_group) = last {
47+ if last_group. get_author ( ) . get_id ( ) == message. get_author ( ) . get_id ( ) && message. should_group ( last_group. last ( ) ) {
48+ last_group. add ( message) ;
49+ } else {
50+ self . messages . push ( MessageGroup :: new ( message) ) ;
51+ }
4552 } else {
4653 self . messages . push ( MessageGroup :: new ( message) ) ;
4754 }
4855 }
4956
5057 pub fn add_pending_message ( & mut self , pending_message : M ) {
51- let last = self . messages . last_mut ( ) ;
52-
53- if last. is_some ( )
54- && last. as_ref ( ) . unwrap ( ) . get_author ( ) . get_id ( ) == pending_message. get_author ( ) . get_id ( )
55- && pending_message. should_group ( last. as_ref ( ) . unwrap ( ) . last ( ) )
56- {
57- last. unwrap ( ) . add ( pending_message) ;
58+ if let Some ( last) = self . messages . last_mut ( ) {
59+ if last. get_author ( ) . get_id ( ) == pending_message. get_author ( ) . get_id ( ) && pending_message. should_group ( last. last ( ) ) {
60+ last. add ( pending_message) ;
61+ } else {
62+ self . messages . push ( MessageGroup :: new ( pending_message) ) ;
63+ }
5864 } else {
5965 self . messages . push ( MessageGroup :: new ( pending_message) ) ;
6066 }
0 commit comments