feat(webapp): mark messages as seen

This commit is contained in:
Moriz Wahl 2023-07-14 18:53:56 +02:00
parent c46d0064fc
commit db594650f9
2 changed files with 49 additions and 30 deletions

View File

@ -59,7 +59,7 @@
<script>
import { roomQuery, createRoom } from '~/graphql/Rooms'
import { messageQuery, createMessageMutation } from '~/graphql/Messages'
import { messageQuery, createMessageMutation, markMessagesAsSeen } from '~/graphql/Messages'
import chatStyle from '~/constants/chat.js'
import { mapGetters } from 'vuex'
@ -208,8 +208,19 @@ export default {
fetchPolicy: 'no-cache',
})
const newMsgIds = Message.filter((m) => m.seen === false).map((m) => m.id)
if (newMsgIds.length) {
this.$apollo.mutate({
mutation: markMessagesAsSeen(),
variables: {
messageIds: newMsgIds,
},
})
}
const msgs = []
;[...this.messages, ...Message].forEach((m) => {
m.seen = true
msgs[m.indexId] = m
})
this.messages = msgs.filter(Boolean)

View File

@ -27,3 +27,11 @@ export const createMessageMutation = () => {
}
`
}
export const markMessagesAsSeen = () => {
return gql`
mutation ($messageIds: [String!]) {
MarkMessagesAsSeen(messageIds: $messageIds)
}
`
}