headless_talk/
user.rs

1use serde::{Deserialize, Serialize};
2use talk_loco_client::talk::session::channel::{normal, open};
3
4use crate::database::model::user::UserProfileModel;
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct DisplayUser {
8    pub id: i64,
9    pub profile: DisplayUserProfile,
10}
11
12impl From<open::user::DisplayUser> for DisplayUser {
13    fn from(info: open::user::DisplayUser) -> Self {
14        Self {
15            id: info.user_id,
16            profile: DisplayUserProfile {
17                nickname: info.nickname,
18                image_url: info.profile_image_url,
19            },
20        }
21    }
22}
23
24impl From<normal::user::DisplayUser> for DisplayUser {
25    fn from(info: normal::user::DisplayUser) -> Self {
26        Self {
27            id: info.user_id,
28            profile: DisplayUserProfile {
29                nickname: info.nickname,
30                image_url: info.profile_image_url,
31            },
32        }
33    }
34}
35
36#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
37pub struct UserProfile {
38    pub nickname: String,
39
40    pub image_url: String,
41    pub full_image_url: String,
42    pub original_image_url: String,
43}
44
45impl From<normal::user::User> for UserProfile {
46    fn from(value: normal::user::User) -> Self {
47        Self {
48            nickname: value.nickname,
49            image_url: value.profile_image_url,
50            full_image_url: value.full_profile_image_url,
51            original_image_url: value.original_profile_image_url,
52        }
53    }
54}
55
56impl From<open::user::User> for UserProfile {
57    fn from(value: open::user::User) -> Self {
58        Self {
59            nickname: value.nickname,
60            image_url: value.profile_image_url,
61            full_image_url: value.full_profile_image_url,
62            original_image_url: value.original_profile_image_url,
63        }
64    }
65}
66
67impl From<UserProfileModel> for UserProfile {
68    fn from(value: UserProfileModel) -> Self {
69        Self {
70            nickname: value.nickname,
71            image_url: value.profile_url,
72            full_image_url: value.full_profile_url,
73            original_image_url: value.original_profile_url,
74        }
75    }
76}
77
78#[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq)]
79pub struct DisplayUserProfile {
80    pub nickname: String,
81    pub image_url: Option<String>,
82}
83
84impl From<UserProfile> for DisplayUserProfile {
85    fn from(profile: UserProfile) -> Self {
86        Self {
87            nickname: profile.nickname,
88            image_url: Some(profile.image_url),
89        }
90    }
91}