diff --git a/src/components/Chats/ChatListElement.vue b/src/components/Chats/ChatListElement.vue index e49a520..9103e25 100644 --- a/src/components/Chats/ChatListElement.vue +++ b/src/components/Chats/ChatListElement.vue @@ -1,6 +1,7 @@ - + - {{ chatName }} + {{ chatInfo.name }} - - {{ lastMessageCreatedAt }} + + {{ convertDate(chat.message.createdAt) }} - + - {{ lastMessage }} + {{ chat.message.message }} diff --git a/src/components/Messages/MessageInput.vue b/src/components/Messages/MessageInput.vue index b8dc309..31f6c7d 100644 --- a/src/components/Messages/MessageInput.vue +++ b/src/components/Messages/MessageInput.vue @@ -6,23 +6,23 @@ import { useChatsStore } from '@/stores/chats.ts' const socketsStore = useSocketsStore() const chatsStore = useChatsStore() -const text = ref('') +const message = ref('') const sendMessage = () => { - if (text.value.trim()) { + if (message.value && chatsStore.selectedChat) { socketsStore.send({ type: SocketDataReq.CREATE_MESSAGE, data: { - chat_id: chatsStore.selected, - text: text.value, + chatId: chatsStore.selectedChat.id, + message: message.value.trim().slice(0, 200), }, }) } - text.value = '' + message.value = '' } const isEmptyText = computed(() => { - return !text.value + return !message.value }) @@ -32,7 +32,7 @@ const isEmptyText = computed(() => { prepend-inner-icon="mdi-emoticon-outline" append-inner-icon="mdi-paperclip" bg-color="white" - v-model="text" + v-model="message" placeholder="message" density="default" @keyup.enter="sendMessage" diff --git a/src/components/Messages/MessageData.vue b/src/components/Messages/MessageItem.vue similarity index 64% rename from src/components/Messages/MessageData.vue rename to src/components/Messages/MessageItem.vue index 6a0ba6b..4adadb4 100644 --- a/src/components/Messages/MessageData.vue +++ b/src/components/Messages/MessageItem.vue @@ -1,23 +1,27 @@ @@ -35,15 +39,15 @@ const avatarLetter = computed(() => { - + - - {{ props.message }} - {{ createdAt }} + + {{ message }} + {{ messageDate }} diff --git a/src/components/Messages/MessageToolbar.vue b/src/components/Messages/MessageToolbar.vue index 40618c0..c3b51ec 100644 --- a/src/components/Messages/MessageToolbar.vue +++ b/src/components/Messages/MessageToolbar.vue @@ -1,6 +1,6 @@ - + - + diff --git a/src/components/RightPane.vue b/src/components/RightPane.vue index 4fff137..9920137 100644 --- a/src/components/RightPane.vue +++ b/src/components/RightPane.vue @@ -1,9 +1,9 @@ @@ -11,17 +11,17 @@ const chatsStore = useChatsStore() - - - + + + - + - + diff --git a/src/stores/chats.ts b/src/stores/chats.ts index dd4ad55..6a6080b 100644 --- a/src/stores/chats.ts +++ b/src/stores/chats.ts @@ -10,6 +10,7 @@ export interface Chat { name: string users: User[] message?: Message + image?: string } export const useChatsStore = defineStore('chats', () => { @@ -18,6 +19,8 @@ export const useChatsStore = defineStore('chats', () => { const selected = ref([]) const selectedChat = computed(() => { + if (!selected.value.length) return + return chats.value.find((chat: Chat) => chat.id === selected.value[0]) }) @@ -35,5 +38,9 @@ export const useChatsStore = defineStore('chats', () => { } } + function getChatLastMessage(chat: Chat) { + return chats.value.find((el) => el.id === chat.id) + } + return { chats, selected, selectedChat, getChatInfo } }) diff --git a/src/stores/messages.ts b/src/stores/messages.ts index 72cc88c..7975445 100644 --- a/src/stores/messages.ts +++ b/src/stores/messages.ts @@ -1,5 +1,6 @@ import { defineStore } from 'pinia' -import { ref } from 'vue' +import { computed, ref } from 'vue' +import { useChatsStore } from '@/stores/chats.ts' export interface Message { id: number @@ -9,7 +10,13 @@ export interface Message { } export const useMessagesStore = defineStore('messages', () => { + const chatsStore = useChatsStore() const messages = ref([]) + const message = ref() - return { messages } + const lastMessage = computed(() => { + return message.value ?? chatsStore.selectedChat?.message ?? null + }) + + return { messages, lastMessage } }) diff --git a/src/stores/sockets.ts b/src/stores/sockets.ts index a1c27a2..7a4d8a3 100644 --- a/src/stores/sockets.ts +++ b/src/stores/sockets.ts @@ -76,7 +76,6 @@ export const useSocketsStore = defineStore('sockets', () => { const idx = chatsStore.chats.findIndex((chat) => chat.id === data.id) if (idx < 0) chatsStore.chats.push(data) - console.log(data.id) menuStore.selected = ['chats'] chatsStore.selected = [data.id] } diff --git a/src/stores/users.ts b/src/stores/users.ts index 31909cf..c30724a 100644 --- a/src/stores/users.ts +++ b/src/stores/users.ts @@ -5,6 +5,7 @@ export interface User { id: number email: string name: string + image?: string } export const useUsersStore = defineStore('users', () => {