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}