diff --git a/back/db/api-db.ts b/back/db/api-db.ts index 6447957..08cba0c 100644 --- a/back/db/api-db.ts +++ b/back/db/api-db.ts @@ -38,6 +38,7 @@ export async function getRooms(mailboxId: number) { room.room_type AS roomType, mailbox_message.mailbox_id AS mailboxId, app_thread.parent_id + FROM app_room room INNER JOIN message ON message.message_id = room.message_id INNER JOIN mailbox_message ON mailbox_message.message_id = message.message_id @@ -55,6 +56,7 @@ export async function getRooms(mailboxId: number) { ) ) notSeenRoom ON notSeenRoom.room_id = room.room_id + -- get not seen in thread LEFT JOIN ( SELECT app_room_message.message_id, app_thread.parent_id FROM app_room @@ -89,7 +91,8 @@ export async function getMessages(roomId: number) { subjectT.value AS subject, content.text AS content, message.idate AS date, - GROUP_CONCAT(flagT.flag_name) AS flags + GROUP_CONCAT(flagT.flag_name) AS flags, + thread.room_id AS thread FROM app_room_message msg ${queryFromId} fromT ON msg.message_id = fromT.message_id @@ -120,6 +123,13 @@ export async function getMessages(roomId: number) { LEFT JOIN flag_name flagT ON flagT.flag_id = flag.flag_id INNER JOIN message ON message.message_id = msg.message_id + + -- get room_id of thread room with this message as origin + LEFT JOIN app_room thread ON ( + thread.message_id = msg.message_id AND + msg.room_id != thread.room_id AND + thread.room_type = 4 + ) WHERE msg.room_id = ? GROUP BY msg.message_id diff --git a/front/src/assets/svg/expand-left-fill.svg b/front/src/assets/svg/expand-left-fill.svg new file mode 100644 index 0000000..bf975a1 --- /dev/null +++ b/front/src/assets/svg/expand-left-fill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/front/src/components/structure/message/Message.vue b/front/src/components/structure/message/Message.vue index 2f17a49..8070f18 100644 --- a/front/src/components/structure/message/Message.vue +++ b/front/src/components/structure/message/Message.vue @@ -7,6 +7,7 @@ import Content from "./Content.vue"; import Options from "./Options.vue"; import { isSeenFc } from "@/utils/flagsUtils"; import SvgLoader from "@/components/utils/SvgLoader.vue"; +import { useRouter } from "vue-router"; export interface Props { msg: Message; @@ -43,6 +44,8 @@ const classes = (): string => { } return "msg-basic"; }; + +const router = useRouter(); @@ -81,16 +84,34 @@ const classes = (): string => { /> + -