52 lines
1.6 KiB
JavaScript
52 lines
1.6 KiB
JavaScript
|
|
import { defineStore } from 'pinia'
|
||
|
|
|
||
|
|
import filter from 'lodash/filter'
|
||
|
|
import { useInterfaceStore } from '../stores/interface'
|
||
|
|
|
||
|
|
export const useReportsStore = defineStore('reports', {
|
||
|
|
state: () => ({
|
||
|
|
reportModal: {
|
||
|
|
userId: null,
|
||
|
|
statuses: [],
|
||
|
|
preTickedIds: [],
|
||
|
|
activated: false
|
||
|
|
},
|
||
|
|
reports: {}
|
||
|
|
}),
|
||
|
|
actions: {
|
||
|
|
openUserReportingModal ({ userId, statusIds = [] }) {
|
||
|
|
const preTickedStatuses = statusIds.map(id => window.vuex.state.statuses.allStatusesObject[id])
|
||
|
|
const preTickedIds = statusIds
|
||
|
|
const statuses = preTickedStatuses.concat(
|
||
|
|
filter(window.vuex.state.statuses.allStatuses,
|
||
|
|
status => status.user.id === userId && !preTickedIds.includes(status.id)
|
||
|
|
)
|
||
|
|
)
|
||
|
|
|
||
|
|
this.reportModal.userId = userId
|
||
|
|
this.reportModal.statuses = statuses
|
||
|
|
this.reportModal.preTickedIds = preTickedIds
|
||
|
|
this.reportModal.activated = true
|
||
|
|
},
|
||
|
|
closeUserReportingModal () {
|
||
|
|
this.reportModal.activated = false
|
||
|
|
},
|
||
|
|
setReportState ({ id, state }) {
|
||
|
|
const oldState = window.vuex.state.reports.reports[id].state
|
||
|
|
this.reports[id].state = state
|
||
|
|
window.vuex.state.api.backendInteractor.setReportState({ id, state }).catch(e => {
|
||
|
|
console.error('Failed to set report state', e)
|
||
|
|
useInterfaceStore().pushGlobalNotice({
|
||
|
|
level: 'error',
|
||
|
|
messageKey: 'general.generic_error_message',
|
||
|
|
messageArgs: [e.message],
|
||
|
|
timeout: 5000
|
||
|
|
})
|
||
|
|
this.reports[id].state = oldState
|
||
|
|
})
|
||
|
|
},
|
||
|
|
addReport (report) {
|
||
|
|
this.reports[report.id] = report
|
||
|
|
}
|
||
|
|
}
|
||
|
|
})
|