From 919b4888e60f7166672a6b3998a7f7b2e25f5a31 Mon Sep 17 00:00:00 2001 From: joschuatonn Date: Mon, 3 Jun 2024 15:19:49 +0200 Subject: [PATCH] Messages are now properly displayed and formatted --- src/components/ChatSettingsComponent.vue | 16 +++++++++++-- src/pages/IndexPage.vue | 15 ++++-------- src/stores/message-store.ts | 30 ++++++++++++++++++++++-- src/utils.ts | 5 ---- 4 files changed, 47 insertions(+), 19 deletions(-) diff --git a/src/components/ChatSettingsComponent.vue b/src/components/ChatSettingsComponent.vue index 6db68f9..e2ace4f 100644 --- a/src/components/ChatSettingsComponent.vue +++ b/src/components/ChatSettingsComponent.vue @@ -11,7 +11,7 @@
Mitglieder
- + @@ -67,7 +67,7 @@ import { computed, ref } from 'vue'; import ProfileCardComponent from './ProfileCardComponent.vue'; import { useUserStore } from 'src/stores/user-store'; -import { profilePicture, responseModel } from 'src/models'; +import { profilePicture, ptpUser, responseModel } from 'src/models'; import { useChatStore } from 'src/stores/chat-store'; import { useQuasar } from 'quasar'; import { sendNotification } from 'src/utils'; @@ -96,11 +96,23 @@ import { sendNotification } from 'src/utils'; } const $q = useQuasar(); + const members = ref([] as ptpUser[]); + + members.value = props.chat!.members; const removeUser = (keycloakID : string) => { chatStore.removeUserFromChat(keycloakID, props.chat!.id).then((response : responseModel) => { reloadChats(); sendNotification(response.message, response.success); + if(response.success) { + members.value = members.value.filter((user) => user.id != keycloakID); + } + + if(members.value.length == 1) { + sendNotification("Es ist ein kritischer Fehler aufgetreten", false); + } else if(members.value.length == 2) { + closeDialog(); + } }); } diff --git a/src/pages/IndexPage.vue b/src/pages/IndexPage.vue index d3f0d57..7abdc04 100644 --- a/src/pages/IndexPage.vue +++ b/src/pages/IndexPage.vue @@ -149,20 +149,15 @@
- { + const config = { headers: {'Content-Type': 'application/json'} }; + await api.post("/messages/"+chatId+"/"+senderId, content, config).then((result) => { this.loadMessagesByChatID(chatId); }); }, loadMessagesByChatID(chatID : number) { this.getAllMessagesByChatID(chatID).then((messages) => { + messages.forEach((message : message) => { + message.content = message.content.substring(1, message.content.length-1); + if (isUrl(message.content)) { + if (isTenorGifUrl(message.content)) { + message.gif = true; + } else { + message.link = true; + } + } + }); + this.messages[chatID] = messages; }); }, async getAllMessagesByChatID(chatID : number) { - return (await api.get("/messages/chat/"+chatID)).data; + return (await api.get("/messages/"+chatID)).data; }, }, }); + +function isUrl(url : string) { + try { + new URL(url); + return true; + } catch (err) { + return false; + } +} + +function isTenorGifUrl(url : string) { + return url.startsWith("https://media.tenor.com/") && url.endsWith(".gif"); + +} diff --git a/src/utils.ts b/src/utils.ts index 326d4ef..8e23921 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,9 +1,4 @@ import { Notify } from "quasar"; -import { responseModel } from "./models"; - -export const sendRestResponseAsNotification = (response : responseModel) => { - -} export const sendNotification = (message : string, successful : Boolean) => { Notify.create({