add members in message modal
This commit is contained in:
parent
43e8cc7d3e
commit
f40b6758de
@ -1,17 +1,42 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { Message } from "@/store/models/model";
|
import { Address, Message, Room } from "@/store/models/model";
|
||||||
import { ref, watch, defineProps, PropType } from "vue";
|
import { ref, Ref, watch, defineProps, PropType } from "vue";
|
||||||
import Content from "../structure/message/Content.vue";
|
import Content from "../structure/message/Content.vue";
|
||||||
import Modal from "./Modal.vue";
|
import Modal from "./Modal.vue";
|
||||||
|
import MemberList from "@/views/room/MemberList.vue";
|
||||||
|
import { removeDuplicates } from "@/utils/array";
|
||||||
|
|
||||||
const props = defineProps({ messageId: { type: Number, require: true }, message: Object as PropType<Message> });
|
const props = defineProps({
|
||||||
|
messageId: { type: Number, require: true },
|
||||||
|
message: Object as PropType<Message>,
|
||||||
|
room: Object as PropType<Room>,
|
||||||
|
});
|
||||||
|
|
||||||
const messageId = ref(-1);
|
const messageId = ref(-1);
|
||||||
|
const fromA = ref<Address[]>([]);
|
||||||
|
const toA = ref<Address[]>([]);
|
||||||
|
const ccA = ref<Address[]>([]);
|
||||||
|
|
||||||
|
const getAddr = (ids: string | undefined, addrs: Address[] | undefined, res: Ref<Address[]>) => {
|
||||||
|
res.value = [];
|
||||||
|
if (!ids || !addrs) return;
|
||||||
|
let idsClean = removeDuplicates(ids.split(","));
|
||||||
|
idsClean.forEach((id) => {
|
||||||
|
let addr = addrs.find((member) => member.id === parseInt(id));
|
||||||
|
if (addr) {
|
||||||
|
res.value.push(addr);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
watch(
|
watch(
|
||||||
() => props.messageId,
|
() => props.messageId,
|
||||||
(newMessageId: number | undefined) => {
|
(newMessageId: number | undefined) => {
|
||||||
if (!newMessageId) return;
|
if (!newMessageId) return;
|
||||||
messageId.value = newMessageId;
|
messageId.value = newMessageId;
|
||||||
|
getAddr(props.message?.fromA, props.room?.members, fromA);
|
||||||
|
getAddr(props.message?.toA, props.room?.members, toA);
|
||||||
|
getAddr(props.message?.ccA, props.room?.members, ccA);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
</script>
|
</script>
|
||||||
@ -20,6 +45,9 @@ watch(
|
|||||||
<div class="main">
|
<div class="main">
|
||||||
<Modal v-if="messageId != -1" @close-modal="() => $emit('close')">
|
<Modal v-if="messageId != -1" @close-modal="() => $emit('close')">
|
||||||
<template v-slot:body>
|
<template v-slot:body>
|
||||||
|
<MemberList type="from" :members="fromA" />
|
||||||
|
<MemberList type="to" :members="toA" />
|
||||||
|
<MemberList v-if="ccA.length > 0" type="cc" :members="ccA" />
|
||||||
<div>{{ props.message?.subject ?? "No Object" }}</div>
|
<div>{{ props.message?.subject ?? "No Object" }}</div>
|
||||||
<Content type="large" :content="props.message?.content" class="content" />
|
<Content type="large" :content="props.message?.content" class="content" />
|
||||||
</template>
|
</template>
|
||||||
|
@ -72,7 +72,12 @@ provide("room", room);
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<Composer v-if="shouldDisplayComposer() || true" />
|
<Composer v-if="shouldDisplayComposer() || true" />
|
||||||
<MessageViewModal :message="message" :messageId="messageIdView" @close="() => openMessageView(-1)" />
|
<MessageViewModal
|
||||||
|
:room="room"
|
||||||
|
:message="message"
|
||||||
|
:messageId="messageIdView"
|
||||||
|
@close="() => openMessageView(-1)"
|
||||||
|
/>
|
||||||
<!-- todo -->
|
<!-- todo -->
|
||||||
<!-- <ConfirmationModal /> -->
|
<!-- <ConfirmationModal /> -->
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user