chat message capability

This commit is contained in:
Ulf Gebhardt 2023-07-10 16:21:39 +02:00
parent a965cef459
commit aecc24e374
Signed by: ulfgebhardt
GPG Key ID: DA6B843E748679C9
2 changed files with 44 additions and 75 deletions

View File

@ -28,7 +28,7 @@
<script> <script>
import { roomQuery, createRoom } from '~/graphql/Rooms' import { roomQuery, createRoom } from '~/graphql/Rooms'
import { messageQuery } from '~/graphql/Messages' import { messageQuery, createMessageMutation } from '~/graphql/Messages'
export default { export default {
name: 'Chat', name: 'Chat',
@ -43,7 +43,7 @@ export default {
}, },
data() { data() {
return { return {
currentUserId: '1234', currentUserId: this.$store.getters['auth/user'].id,
menuActions: [ menuActions: [
/* { /* {
name: 'inviteUser', name: 'inviteUser',
@ -133,85 +133,44 @@ export default {
}, },
methods: { methods: {
fetchMessages({ room, options = {} }) { fetchMessages({ room, options = {} }) {
// console.log(room, options)
this.messagesLoaded = false this.messagesLoaded = false
setTimeout(async () => { setTimeout(async () => {
if (options.reset) { try {
// console.log('reset messages') const {
this.messages = [] // this.addMessages(true) data: { Message },
} else { } = await this.$apollo.query({
try { query: messageQuery(),
const { variables: {
data: { Message }, roomId: room.id,
} = await this.$apollo.query({ },
query: messageQuery(), fetchPolicy: 'no-cache',
variables: { })
roomId: room.id, this.messages = Message
}, } catch (error) {
}) this.messages = []
// console.log('Messages', Message) this.$toast.error(error.message)
this.messages = Message
} catch (error) {
// console.log('Error', error)
this.messages = [] // this.addMessages(true)
this.$toast.error(error.message)
}
} }
this.messagesLoaded = true this.messagesLoaded = true
}) })
}, },
/* addMessages(reset) { refetchMessage(roomId) {
const messages = [] this.fetchMessages({room: this.rooms.find((r) => r.roomId === roomId)})
for (let i = 0; i < 30; i++) {
messages.push({
_id: reset ? i : this.messages.length + i,
content: `${reset ? '' : 'paginated'} message ${i + 1}`,
senderId: '4321',
username: 'John Doe',
date: '13 November',
timestamp: '10:20',
})
}
messages.push({
_id: '31',
content: `Hallo Welt`,
senderId: '1234',
username: 'John Doe',
date: '13 November',
timestamp: '10:20',
})
return messages
}, */
sendMessage(message) {
this.messages = [
...this.messages,
{
_id: this.messages.length,
content: message.content,
senderId: this.currentUserId,
timestamp: new Date().toString().substring(16, 21),
date: new Date().toDateString(),
},
]
}, },
addNewMessage() { async sendMessage(message) {
setTimeout(() => { try {
this.messages = [ const result = await this.$apollo.mutate({
...this.messages, mutation: createMessageMutation(),
{ variables: {
_id: this.messages.length, roomId: message.roomId,
content: 'NEW MESSAGE', content: message.content
senderId: '1234',
timestamp: new Date().toString().substring(16, 21),
date: new Date().toDateString(),
}, },
] })
}, 2000) } catch (error) {
this.$toast.error(error.message)
}
this.refetchMessage(message.roomId)
}, },
}, },
apollo: { apollo: {
@ -220,7 +179,6 @@ export default {
return roomQuery() return roomQuery()
}, },
update({ Room }) { update({ Room }) {
// console.log('Rooms', Room)
if (!Room) { if (!Room) {
this.rooms = [] this.rooms = []
return return
@ -240,14 +198,12 @@ export default {
}).filter((r) => }).filter((r) =>
this.singleRoom ? r.users.filter((u) => u.id === this.singleRoomId).length > 0 : true, this.singleRoom ? r.users.filter((u) => u.id === this.singleRoomId).length > 0 : true,
) )
// console.log(this.rooms)
}, },
error(error) { error(error) {
this.rooms = [] this.rooms = []
this.$toast.error(error.message) this.$toast.error(error.message)
}, },
fetchPolicy: 'cache-and-network', fetchPolicy: 'no-cache',
}, },
}, },
} }

View File

@ -4,7 +4,9 @@ export const messageQuery = () => {
return gql` return gql`
query ($roomId: ID!) { query ($roomId: ID!) {
Message(roomId: $roomId) { Message(roomId: $roomId) {
_id
id id
senderId
content content
author { author {
id id
@ -13,3 +15,14 @@ export const messageQuery = () => {
} }
` `
} }
export const createMessageMutation = () => {
return gql`
mutation ($roomId: ID!, $content: String!) {
CreateMessage(roomId: $roomId, content: $content) {
id
content
}
}
`
}