mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-13 07:46:06 +00:00
90 lines
2.1 KiB
JavaScript
90 lines
2.1 KiB
JavaScript
import gql from 'graphql-tag'
|
|
|
|
export const state = () => {
|
|
return {
|
|
notifications: null,
|
|
pending: false
|
|
}
|
|
}
|
|
|
|
export const mutations = {
|
|
SET_NOTIFICATIONS(state, notifications) {
|
|
state.notifications = notifications
|
|
},
|
|
SET_PENDING(state, pending) {
|
|
state.pending = pending
|
|
},
|
|
UPDATE_NOTIFICATIONS(state, notification) {
|
|
const notifications = state.notifications
|
|
const toBeUpdated = notifications.find(n => {
|
|
return n.id === notification.id
|
|
})
|
|
toBeUpdated = { ...toBeUpdated, ...notification }
|
|
}
|
|
}
|
|
export const getters = {
|
|
notifications(state) {
|
|
return !!state.notifications
|
|
}
|
|
}
|
|
|
|
export const actions = {
|
|
async init({ getters, commit }) {
|
|
if (getters.notifications) return
|
|
commit('SET_PENDING', true)
|
|
const client = this.app.apolloProvider.defaultClient
|
|
let notifications
|
|
try {
|
|
const {
|
|
data: { currentUser }
|
|
} = await client.query({
|
|
query: gql(`{
|
|
currentUser {
|
|
id
|
|
notifications(orderBy: createdAt_desc) {
|
|
id
|
|
read
|
|
createdAt
|
|
post {
|
|
author {
|
|
id
|
|
slug
|
|
name
|
|
disabled
|
|
deleted
|
|
}
|
|
title
|
|
contentExcerpt
|
|
slug
|
|
}
|
|
}
|
|
}
|
|
}`)
|
|
})
|
|
notifications = currentUser.notifications
|
|
console.log(notifications)
|
|
commit('SET_NOTIFICATIONS', notifications)
|
|
} finally {
|
|
commit('SET_PENDING', false)
|
|
}
|
|
return notifications
|
|
},
|
|
|
|
async markAsRead({ commit, rootGetters }, notificationId) {
|
|
const client = this.app.apolloProvider.defaultClient
|
|
const mutation = gql(`
|
|
mutation($id: ID!, $read: Boolean!) {
|
|
UpdateNotification(id: $id, read: $read) {
|
|
id
|
|
read
|
|
}
|
|
}
|
|
`)
|
|
const variables = { id: notificationId, read: true }
|
|
const {
|
|
data: { UpdateNotification }
|
|
} = await client.mutate({ mutation, variables })
|
|
commit('UPDATE_NOTIFICATIONS', UpdateNotification)
|
|
}
|
|
}
|