open viewMessageModal on double click

This commit is contained in:
grimhilt 2023-04-08 01:01:10 +02:00
parent 5b6995d6a6
commit b9cc543b64
7 changed files with 41 additions and 4 deletions

View File

@ -0,0 +1,26 @@
<script setup lang="ts">
import { Message } from "@/store/models/model";
import { ref, watch, defineProps, PropType } from "vue";
import Modal from "./Modal.vue";
const props = defineProps({ messageId: { type: Number, require: true }, message: Object as PropType<Message> });
const messageId = ref(-1);
watch(
() => props.messageId,
(newMessageId: number | undefined) => {
if (!newMessageId) return;
messageId.value = newMessageId;
},
);
</script>
<template>
<div>
<Modal v-if="messageId != -1" :title="props.message?.subject" @close-modal="() => $emit('close')">
<template v-slot:body> yep </template>
</Modal>
</div>
</template>
<style></style>

View File

@ -7,6 +7,7 @@ export enum RoomType {
} }
export interface Message { export interface Message {
id: number;
fromA: string; fromA: string;
toA: string; toA: string;
ccA?: string; ccA?: string;

View File

@ -85,7 +85,7 @@ const classes = (): string => {
content content
attachments --> attachments -->
<template> <template>
<div class="message"> <div class="message" @dblclick="$emit('openMessageView', props.msg?.id)">
<div id="context"> <div id="context">
<div class="left" id="profile"> <div class="left" id="profile">
{{ displayAddresses(props.msg?.fromA?.split(",")) }} - {{ props.msg?.fromA }} {{ displayAddresses(props.msg?.fromA?.split(",")) }} - {{ props.msg?.fromA }}

View File

@ -4,11 +4,14 @@ import { useRoute, onBeforeRouteUpdate } from "vue-router";
import { onBeforeMount, ref } from "vue"; import { onBeforeMount, ref } from "vue";
import Header from "./Header.vue"; import Header from "./Header.vue";
import Message from "./Message.vue"; import Message from "./Message.vue";
import { RoomType } from "@/store/models/model"; import { Room, RoomType } from "@/store/models/model";
import MessageViewModal from "@/components/modals/MessageViewModal.vue";
const store = useStore(); const store = useStore();
const route = useRoute(); const route = useRoute();
const id = ref(parseInt(route.params?.id)); const messageIdView = ref(-1);
const message = ref(undefined);
const id = ref(parseInt(route.params.id));
let room; let room;
onBeforeMount(async () => { onBeforeMount(async () => {
store.commit("setActiveRoom", id.value); store.commit("setActiveRoom", id.value);
@ -27,6 +30,11 @@ const shouldDisplayComposer = () => {
if (!room) return false; if (!room) return false;
return room.roomType == RoomType.THREAD || room.roomType == RoomType.GROUP; return room.roomType == RoomType.THREAD || room.roomType == RoomType.GROUP;
}; };
function openMessageView(id) {
messageIdView.value = id;
message.value = room?.messages.find((message) => message.id == id);
}
</script> </script>
<template> <template>
@ -39,10 +47,12 @@ const shouldDisplayComposer = () => {
:key="index" :key="index"
:msg="message" :msg="message"
:members="room?.members" :members="room?.members"
@open-message-view="(id) => openMessageView(id)"
/> />
</div> </div>
<div id="composer" v-if="shouldDisplayComposer()">COMPOSER</div> <div id="composer" v-if="shouldDisplayComposer()">COMPOSER</div>
</div> </div>
<MessageViewModal :message="message" :messageId="messageIdView" @close="() => openMessageView(-1)" />
</div> </div>
</template> </template>

View File

@ -14,7 +14,7 @@
<script> <script>
import { mapState } from "vuex"; import { mapState } from "vuex";
import Account from "./Account"; import Account from "./Account";
import AddAccountModal from "../../modals/AddAccountModal"; import AddAccountModal from "@/components/modals/AddAccountModal";
import store from "@/store/store"; import store from "@/store/store";
export default { export default {