From 639f55a063bc2c0d88fe755fda75f21d1c4a3382 Mon Sep 17 00:00:00 2001 From: Franklin Date: Fri, 10 Feb 2023 10:35:17 -0400 Subject: [PATCH] Added from impls for chat --- src/client_types/chat_message_update.rs | 0 src/domain/chat_message.rs | 21 ++++++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 src/client_types/chat_message_update.rs diff --git a/src/client_types/chat_message_update.rs b/src/client_types/chat_message_update.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/domain/chat_message.rs b/src/domain/chat_message.rs index f36aabc..9e4032b 100644 --- a/src/domain/chat_message.rs +++ b/src/domain/chat_message.rs @@ -1,4 +1,4 @@ -use chrono::{DateTime, Utc}; +use chrono::{DateTime, Utc, TimeZone}; use serde::{Deserialize, Serialize}; use sqlx::{ mysql::{MySqlTypeInfo, MySqlValueRef}, @@ -168,4 +168,23 @@ impl Default for ChatMessageContent { fn default() -> Self { Self::Text(Default::default()) } +} + +impl From for ChatMessage { + fn from(value: crate::client_types::chat_message::ChatMessage) -> Self { + Self { + id: value.id, + from_id: value.from_id, + to_id: value.to_id, + message: match value.message_content { + crate::client_types::chat_message::MessageContentType::Text => ChatMessageContent::Text(String::from_utf8(value.message).unwrap()), + crate::client_types::chat_message::MessageContentType::Image => ChatMessageContent::Image(value.message), + crate::client_types::chat_message::MessageContentType::Video => ChatMessageContent::Video(value.message), + crate::client_types::chat_message::MessageContentType::Audio => ChatMessageContent::Audio(value.message), + }, + time_sent: Utc.timestamp_millis_opt(value.time_sent).unwrap(), + time_delivered: TimeSensitiveActionVec { list: value.time_delivered.into_iter().map(|time_delivered| TimeSensitiveAction { time: Utc.timestamp_millis_opt(time_delivered.time).unwrap(), by: time_delivered.by }).collect() }, + time_seen: TimeSensitiveActionVec { list: value.time_seen.into_iter().map(|time_seen| TimeSensitiveAction { time: Utc.timestamp_millis_opt(time_seen.time).unwrap(), by: time_seen.by }).collect() }, + } + } } \ No newline at end of file