148
148
receiverType: showingInbox ? MESSAGE_TYPE_INBOX : MESSAGE_TYPE_SENDER,
149
149
},
150
150
}"
151
- class =" text-primary"
151
+ : class =" [' text-primary', { 'font-bold': showingInbox && !findMyReceiver(slotProps.data)?.read }] "
152
152
>
153
153
{{ slotProps.data.title }}
154
154
</BaseAppLink >
223
223
<div class =" mt-4" >
224
224
<div class =" text-sm font-bold" >{{ t("Title") }}:</div >
225
225
<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 }]"
228
234
>
229
235
{{ item.title }}
230
236
</BaseAppLink >
279
285
</template >
280
286
281
287
<script setup>
282
- import { computed , onMounted , ref } from " vue"
288
+ import { computed , onBeforeUnmount , onMounted , ref } from " vue"
283
289
import { useStore } from " vuex"
284
290
import { useI18n } from " vue-i18n"
285
291
import { useRoute , useRouter } from " vue-router"
@@ -499,6 +505,7 @@ function showInboxByTag(tag) {
499
505
500
506
fetchPayload = {
501
507
" order[sendDate]" : " desc" ,
508
+ " receivers.receiver" : securityStore .user [" @id" ],
502
509
itemsPerPage: initialRowsPerPage,
503
510
page: 1 ,
504
511
" receivers.receiverType" : MESSAGE_TYPE_INBOX ,
@@ -515,6 +522,7 @@ function showUnread() {
515
522
516
523
fetchPayload = {
517
524
" order[sendDate]" : " desc" ,
525
+ " receivers.receiver" : securityStore .user [" @id" ],
518
526
" receivers.read" : false ,
519
527
itemsPerPage: initialRowsPerPage,
520
528
page: 1 ,
@@ -653,4 +661,27 @@ function onResetSearch() {
653
661
654
662
loadMessages ()
655
663
}
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
+ })
656
687
< / script>
0 commit comments