pleroma-fe/src/stores/reports.js

61 lines
1.9 KiB
JavaScript
Raw Normal View History

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'
2026-06-16 17:32:26 +03:00
import { useOAuthStore } from 'src/stores/oauth.js'
2026-08-10 22:26:22 +03:00
import { useStatusesStore } from 'src/stores/statuses.js'
2023-04-06 17:59:12 -06:00
2026-06-17 14:36:45 +03:00
import { setReportState } from 'src/api/admin.js'
2026-06-13 03:10:00 +03:00
2023-04-06 17:59:12 -06:00
export const useReportsStore = defineStore('reports', {
state: () => ({
reportModal: {
userId: null,
2026-08-26 13:57:45 +03:00
statusIds: new Set(),
preTickedIds: new Set(),
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 = [] }) {
2026-08-26 13:57:45 +03:00
const preTickedIds = new Set(statusIds)
2026-08-26 18:12:17 +03:00
// There could be a case (i.e. user is only ever mentioned in someone else's post -> user popover)
// where user has no known posts
2026-08-26 18:49:23 +03:00
const userAllStatusesIds =
useStatusesStore().statusesPerUser.get(userId) ?? new Set()
2026-08-26 13:57:45 +03:00
// Set constructor should take care of duplicated IDs and order,
// later duplicated IDs will be dropped in favor of earlier
const sortedIds = new Set([...preTickedIds, ...userAllStatusesIds])
2023-04-06 17:59:12 -06:00
this.reportModal.userId = userId
2026-08-26 13:57:45 +03:00
this.reportModal.statusIds = sortedIds
2023-04-06 17:59:12 -06:00
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-06-13 03:10:00 +03:00
setReportState({
id,
state,
2026-06-16 17:32:26 +03:00
credentials: useOAuthStore().token,
2026-06-13 03:10:00 +03:00
}).catch((e) => {
console.error('Failed to set report state', e)
useInterfaceStore().pushGlobalNotice({
level: 'error',
messageKey: 'general.generic_error_message',
messageArgs: [e.message],
timeout: 5000,
2023-04-06 17:59:12 -06:00
})
2026-06-13 03:10:00 +03:00
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
})