2023-04-06 17:59:12 -06:00
|
|
|
import filter from 'lodash/filter'
|
2026-01-06 16:23:17 +02:00
|
|
|
import { defineStore } from 'pinia'
|
2026-01-08 17:26:52 +02:00
|
|
|
|
2026-01-29 20:44:55 +02:00
|
|
|
import { useInterfaceStore } from 'src/stores/interface.js'
|
2023-04-06 17:59:12 -06:00
|
|
|
|
|
|
|
|
export const useReportsStore = defineStore('reports', {
|
|
|
|
|
state: () => ({
|
|
|
|
|
reportModal: {
|
|
|
|
|
userId: null,
|
|
|
|
|
statuses: [],
|
|
|
|
|
preTickedIds: [],
|
2026-01-06 16:22:52 +02:00
|
|
|
activated: false,
|
2023-04-06 17:59:12 -06:00
|
|
|
},
|
2026-01-06 16:22:52 +02:00
|
|
|
reports: {},
|
2023-04-06 17:59:12 -06:00
|
|
|
}),
|
|
|
|
|
actions: {
|
2026-01-06 16:22:52 +02:00
|
|
|
openUserReportingModal({ userId, statusIds = [] }) {
|
|
|
|
|
const preTickedStatuses = statusIds.map(
|
|
|
|
|
(id) => window.vuex.state.statuses.allStatusesObject[id],
|
|
|
|
|
)
|
2023-04-06 17:59:12 -06:00
|
|
|
const preTickedIds = statusIds
|
|
|
|
|
const statuses = preTickedStatuses.concat(
|
2026-01-06 16:22:52 +02:00
|
|
|
filter(
|
|
|
|
|
window.vuex.state.statuses.allStatuses,
|
|
|
|
|
(status) =>
|
|
|
|
|
status.user.id === userId && !preTickedIds.includes(status.id),
|
|
|
|
|
),
|
2023-04-06 17:59:12 -06:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
this.reportModal.userId = userId
|
|
|
|
|
this.reportModal.statuses = statuses
|
|
|
|
|
this.reportModal.preTickedIds = preTickedIds
|
|
|
|
|
this.reportModal.activated = true
|
|
|
|
|
},
|
2026-01-06 16:22:52 +02:00
|
|
|
closeUserReportingModal() {
|
2023-04-06 17:59:12 -06:00
|
|
|
this.reportModal.activated = false
|
|
|
|
|
},
|
2026-01-06 16:22:52 +02:00
|
|
|
setReportState({ id, state }) {
|
2025-03-05 02:32:25 +02:00
|
|
|
const oldState = this.reports[id].state
|
2023-04-06 17:59:12 -06:00
|
|
|
this.reports[id].state = state
|
2026-01-06 16:22:52 +02:00
|
|
|
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
|
2023-04-06 17:59:12 -06:00
|
|
|
})
|
|
|
|
|
},
|
2026-01-06 16:22:52 +02:00
|
|
|
addReport(report) {
|
2023-04-06 17:59:12 -06:00
|
|
|
this.reports[report.id] = report
|
2026-01-06 16:22:52 +02:00
|
|
|
},
|
|
|
|
|
},
|
2023-04-06 17:59:12 -06:00
|
|
|
})
|