From e567b00b6cd02b14d26ad682e1bf6a08ed32511d Mon Sep 17 00:00:00 2001 From: eiiko6 Date: Sun, 11 Jan 2026 21:00:33 +0100 Subject: [PATCH] added profile pictures to messages and improved chat page layout --- src-tauri/tauri.conf.json | 2 +- src/assets/default-avatar.png | Bin 0 -> 29018 bytes src/base.css | 1 + src/components/ChatWindow.vue | 316 +++++++++++++++++---------------- src/components/MessageList.vue | 132 +++++++++++--- src/components/RoomList.vue | 131 +++++++------- src/pages/ChatPage.vue | 179 +++++++++---------- src/pages/SettingsPage.vue | 229 ++++++++++++------------ src/types.ts | 57 +++--- 9 files changed, 565 insertions(+), 482 deletions(-) create mode 100644 src/assets/default-avatar.png diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index e843125..d3b8714 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "chatapp", - "version": "1.0.0", + "version": "1.0.3", "identifier": "com.strawberries.chatapp", "build": { "beforeDevCommand": "yarn dev", diff --git a/src/assets/default-avatar.png b/src/assets/default-avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..9d7653936fc0e6fa89359ef14792d34dc1d61849 GIT binary patch literal 29018 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

^JC2ryh@NHSw8ZZ`kl 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 SR$UAX3=E#GelF{r5}E*Kp6EdU literal 0 HcmV?d00001 diff --git a/src/base.css b/src/base.css index 5d7b302..d9e856e 100644 --- a/src/base.css +++ b/src/base.css @@ -19,6 +19,7 @@ body, :root { --bg: #0f1116; --panel: #171922; + --panel-accent: #12141B; --text: #e6e6eb; --muted: #9aa0aa; --accent: #f27aa3; diff --git a/src/components/ChatWindow.vue b/src/components/ChatWindow.vue index 87f37e1..5267643 100644 --- a/src/components/ChatWindow.vue +++ b/src/components/ChatWindow.vue @@ -1,29 +1,29 @@ diff --git a/src/components/MessageList.vue b/src/components/MessageList.vue index abc6ff0..dd3559b 100644 --- a/src/components/MessageList.vue +++ b/src/components/MessageList.vue @@ -1,49 +1,125 @@ + + + - + diff --git a/src/components/RoomList.vue b/src/components/RoomList.vue index de26347..e28ad3a 100644 --- a/src/components/RoomList.vue +++ b/src/components/RoomList.vue @@ -1,26 +1,26 @@ diff --git a/src/pages/ChatPage.vue b/src/pages/ChatPage.vue index dd0bc4f..ca993ee 100644 --- a/src/pages/ChatPage.vue +++ b/src/pages/ChatPage.vue @@ -1,21 +1,22 @@ diff --git a/src/pages/SettingsPage.vue b/src/pages/SettingsPage.vue index 1484843..3f2ddf0 100644 --- a/src/pages/SettingsPage.vue +++ b/src/pages/SettingsPage.vue @@ -1,48 +1,49 @@ diff --git a/src/types.ts b/src/types.ts index 18e71f3..45c8d3a 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,51 +1,52 @@ export interface User { - uuid: string - username: string - email: string - avatar_url: string + uuid: string + username: string + email: string + avatar_url: string } export interface LoginResponse { - uuid: string - username: string - email: string - token: string + uuid: string + username: string + email: string + token: string } export interface UpdateUserResponse { - username: string - email: string + username: string + email: string } export interface Room { - uuid: string - owner_name: string - owner_uuid: string - name: string - global: boolean + uuid: string + owner_name: string + owner_uuid: string + name: string + global: boolean } export interface Message { - uuid: string - sender: string - message_type: 'text' - content: string - sent_at: string + uuid: string + sender: string + sender_uuid: string + message_type: 'text' + content: string + sent_at: string } export interface Friend { - uuid: string - username: string + uuid: string + username: string } export interface FriendRequest { - sender_uuid: string - sender_username: string + sender_uuid: string + sender_username: string } export interface RoomInvite { - room_uuid: string - room_name: string - sender_uuid: string - sender_username: string + room_uuid: string + room_name: string + sender_uuid: string + sender_username: string }