148148 receiverType: showingInbox ? MESSAGE_TYPE_INBOX : MESSAGE_TYPE_SENDER,
149149 },
150150 }"
151- class =" text-primary"
151+ : class =" [' text-primary', { 'font-bold': showingInbox && !findMyReceiver(slotProps.data)?.read }] "
152152 >
153153 {{ slotProps.data.title }}
154154 </BaseAppLink >
223223 <div class =" mt-4" >
224224 <div class =" text-sm font-bold" >{{ t("Title") }}:</div >
225225 <BaseAppLink
226- :to =" { name: 'MessageShow', query: { id: item['@id'] } }"
227- class =" text-base text-blue-600"
226+ :to =" {
227+ name: 'MessageShow',
228+ query: {
229+ id: item['@id'],
230+ receiverType: showingInbox ? MESSAGE_TYPE_INBOX : MESSAGE_TYPE_SENDER,
231+ },
232+ }"
233+ :class =" ['text-base text-blue-600', { 'font-bold': showingInbox && !findMyReceiver(item)?.read }]"
228234 >
229235 {{ item.title }}
230236 </BaseAppLink >
279285</template >
280286
281287<script setup>
282- import { computed , onMounted , ref } from " vue"
288+ import { computed , onBeforeUnmount , onMounted , ref } from " vue"
283289import { useStore } from " vuex"
284290import { useI18n } from " vue-i18n"
285291import { useRoute , useRouter } from " vue-router"
@@ -499,6 +505,7 @@ function showInboxByTag(tag) {
499505
500506 fetchPayload = {
501507 " order[sendDate]" : " desc" ,
508+ " receivers.receiver" : securityStore .user [" @id" ],
502509 itemsPerPage: initialRowsPerPage,
503510 page: 1 ,
504511 " receivers.receiverType" : MESSAGE_TYPE_INBOX ,
@@ -515,6 +522,7 @@ function showUnread() {
515522
516523 fetchPayload = {
517524 " order[sendDate]" : " desc" ,
525+ " receivers.receiver" : securityStore .user [" @id" ],
518526 " receivers.read" : false ,
519527 itemsPerPage: initialRowsPerPage,
520528 page: 1 ,
@@ -653,4 +661,27 @@ function onResetSearch() {
653661
654662 loadMessages ()
655663}
664+
665+ let onMessageRead
666+
667+ onMounted (() => {
668+ onMessageRead = (ev ) => {
669+ const { iri , receiverId , receiverType } = ev .detail || {}
670+ const msg = items .value ? .find ? .((m ) => m[" @id" ] === iri)
671+ if (! msg) return
672+
673+ const receivers = [... msg .receiversTo , ... msg .receiversCc , ... msg .receiversSender ]
674+ const mine = receivers .find ((r ) => r .receiver ? .[" @id" ] === receiverId && r .receiverType === receiverType)
675+ if (mine) {
676+ mine .read = true
677+ }
678+ }
679+ window .addEventListener (" message:read" , onMessageRead)
680+ })
681+
682+ onBeforeUnmount (() => {
683+ if (onMessageRead) {
684+ window .removeEventListener (" message:read" , onMessageRead)
685+ }
686+ })
656687< / script>
0 commit comments