reports.js (1635B)
- import { defineStore } from 'pinia'
- import filter from 'lodash/filter'
- import { useInterfaceStore } from 'src/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
- }
- }
- })