From ed62ac06410f8fe10795f8e473d0c4105696a296 Mon Sep 17 00:00:00 2001 From: Sinan Date: Tue, 13 Jan 2026 23:24:19 +0100 Subject: [PATCH] feat: implement user profiles and social walls (Tasks #171, #173, #174) --- client/src/components/ChatLayout.vue | 31 ++-- client/src/components/MessageList.vue | 10 +- client/src/components/UserList.vue | 16 +- client/src/components/UserProfile.vue | 201 ++++++++++++++++++++++++++ client/src/stores/chat.js | 50 +++++++ server/db.js | 26 +++- server/index.js | 58 ++++++++ tasks/tasks.duckdb | Bin 1585152 -> 3682304 bytes 8 files changed, 372 insertions(+), 20 deletions(-) create mode 100644 client/src/components/UserProfile.vue diff --git a/client/src/components/ChatLayout.vue b/client/src/components/ChatLayout.vue index ab69c90..8726ba1 100644 --- a/client/src/components/ChatLayout.vue +++ b/client/src/components/ChatLayout.vue @@ -3,12 +3,13 @@ import { useChatStore } from '../stores/chat'; import { storeToRefs } from 'pinia'; import MessageList from './MessageList.vue'; import UserList from './UserList.vue'; +import UserList from './UserList.vue'; import MusicPlayer from './MusicPlayer.vue'; -import TokenCreator from './TokenCreator.vue'; -import { Hash, Volume2, VolumeX, Settings, X, Coins, Menu } from 'lucide-vue-next'; +import { Hash, Volume2, VolumeX, Settings, X, Coins, Menu, User } from 'lucide-vue-next'; import { ref } from 'vue'; -const showTokenCreator = ref(false); +const showProfile = ref(false); +const selectedProfileAddress = ref(null); const showMobileMenu = ref(false); const chatStore = useChatStore(); @@ -102,24 +103,24 @@ const saveSettings = () => {
- +
Text Channels
@@ -156,18 +157,18 @@ const saveSettings = () => { - {{ showTokenCreator ? 'Token Creator' : currentChannel }} + {{ showProfile ? (selectedProfileAddress === walletAddress ? 'My Profile' : 'User Profile') : currentChannel }}
- - + +
diff --git a/client/src/components/MessageList.vue b/client/src/components/MessageList.vue index 3838fbb..ab5ee7b 100644 --- a/client/src/components/MessageList.vue +++ b/client/src/components/MessageList.vue @@ -50,6 +50,8 @@ const send = () => { const formatTime = (isoString) => { return new Date(isoString).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }); }; + +const emit = defineEmits(['view-profile']);