diff options
Diffstat (limited to 'src/components/message_history_buffer.rs')
-rw-r--r-- | src/components/message_history_buffer.rs | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/src/components/message_history_buffer.rs b/src/components/message_history_buffer.rs index cf4c328..9dc0473 100644 --- a/src/components/message_history_buffer.rs +++ b/src/components/message_history_buffer.rs @@ -111,23 +111,25 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView { .into_iter() .map(|(id, message)| { let message_timestamp = message.message.get().timestamp().read().naive_local(); - // TODO: mark new day - // if message_timestamp.date() > last_timestamp.date() { - // messages_view = messages_view.push(date(message_timestamp.date())); - // } - let major = if last_user.as_ref() != Some(&message.message.get().read().from) + let mut major = if last_user.as_ref() != Some(&message.message.get().read().from) || message_timestamp - last_timestamp > TimeDelta::minutes(3) { true } else { false }; + let new_day = if message_timestamp.date() > last_timestamp.date() { + major = true; + true + } else { + false + }; last_user = Some(message.get().from().get()); last_timestamp = message_timestamp; - (id, (message, major, false)) + (id, (message, major, false, new_day)) }) .collect::<Vec<_>>(); - if let Some((_id, (_, _, last))) = messages.last_mut() { + if let Some((_id, (_, _, last, _))) = messages.last_mut() { *last = true } messages.into_iter().rev() @@ -135,8 +137,17 @@ pub fn MessageHistoryBuffer(chat: MacawChat) -> impl IntoView { view! { <div class="messages-buffer"> - <For each=each key=|message| (message.0, message.1.1, message.1.2) let(message)> - <Message message=message.1.0.into() major=message.1.1 r#final=message.1.2 /> + <For + each=each + key=|message| (message.0, message.1.1, message.1.2, message.1.3) + let(message) + > + <Message + message=message.1.0.into() + major=message.1.1 + r#final=message.1.2 + new_day=message.1.3 + /> </For> </div> } |