import filter from 'lodash/filter' import { defineStore } from 'pinia' import { useInterfaceStore } from 'src/stores/interface.js' 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 = this.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 }, }, })