mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-13 07:46:06 +00:00
Refactor reports mutation to CaseFolder structure
This commit is contained in:
parent
3daba417de
commit
3b4de22855
@ -5,7 +5,6 @@ export default {
|
||||
report: async (_parent, params, context, _resolveInfo) => {
|
||||
let createdRelationshipWithNestedAttributes
|
||||
const { resourceId, reasonCategory, reasonDescription } = params
|
||||
// Wolle console.log('resourceId: ', resourceId)
|
||||
const { driver, user } = context
|
||||
const session = driver.session()
|
||||
const writeTxResultPromise = session.writeTransaction(async txc => {
|
||||
@ -21,7 +20,7 @@ export default {
|
||||
WITH submitter, resource, caseFolder
|
||||
CREATE (caseFolder)<-[report:REPORTED {createdAt: $createdAt, reasonCategory: $reasonCategory, reasonDescription: $reasonDescription}]-(submitter)
|
||||
|
||||
RETURN caseFolder {.id}, submitter, report, resource, labels(resource)[0] AS type
|
||||
RETURN submitter, report, caseFolder {.id}, resource, labels(resource)[0] AS type
|
||||
`,
|
||||
{
|
||||
resourceId,
|
||||
@ -32,19 +31,17 @@ export default {
|
||||
},
|
||||
)
|
||||
return reportRelationshipTransactionResponse.records.map(record => ({
|
||||
caseFolder: record.get('caseFolder'),
|
||||
submitter: record.get('submitter'),
|
||||
report: record.get('report'),
|
||||
caseFolder: record.get('caseFolder'),
|
||||
resource: record.get('resource').properties,
|
||||
type: record.get('type'),
|
||||
}))
|
||||
})
|
||||
try {
|
||||
// Wolle console.log('reasonCategory: ', reasonCategory)
|
||||
const txResult = await writeTxResultPromise
|
||||
// Wolle console.log('txResult: ', txResult)
|
||||
if (!txResult[0]) return null
|
||||
const { caseFolder, submitter, report, resource, type } = txResult[0]
|
||||
const { submitter, report, caseFolder, resource, type } = txResult[0]
|
||||
createdRelationshipWithNestedAttributes = {
|
||||
...report.properties,
|
||||
caseFolderId: caseFolder.id,
|
||||
@ -89,42 +86,34 @@ export default {
|
||||
}
|
||||
try {
|
||||
const cypher = `
|
||||
MATCH (submitter:User)-[report:REPORTED]->(resource)
|
||||
WHERE resource:User OR resource:Comment OR resource:Post
|
||||
OPTIONAL MATCH (:User)-[decision:DECIDED {uuid: report.decisionUuid}]->(resource)
|
||||
OPTIONAL MATCH (:User)-[decisionPending:DECIDED {latest: true}]->(resource)
|
||||
RETURN report, submitter, resource, labels(resource)[0] as type, decision, decisionPending
|
||||
MATCH (submitter:User)-[report:REPORTED]->(caseFolder:CaseFolder)-[:FLAGGED]->(resource)
|
||||
// Wolle OPTIONAL MATCH (reviewer:User)-[:REVIEWED]->(caseFolder)
|
||||
WHERE resource:User OR resource:Post OR resource:Comment
|
||||
RETURN submitter, report, caseFolder, resource, labels(resource)[0] as type
|
||||
${orderByClause}
|
||||
`
|
||||
const result = await session.run(cypher, {})
|
||||
const dbResponse = result.records.map(r => {
|
||||
return {
|
||||
report: r.get('report'),
|
||||
submitter: r.get('submitter'),
|
||||
report: r.get('report'),
|
||||
caseFolder: r.get('caseFolder'),
|
||||
resource: r.get('resource'),
|
||||
type: r.get('type'),
|
||||
decision: r.get('decision'),
|
||||
decisionPending: r.get('decisionPending'),
|
||||
}
|
||||
})
|
||||
if (!dbResponse) return null
|
||||
|
||||
response = []
|
||||
dbResponse.forEach(ele => {
|
||||
const { report, submitter, resource, type, decision, decisionPending } = ele
|
||||
const { report, submitter, caseFolder, resource, type, decision, decisionPending } = ele
|
||||
|
||||
const responseEle = {
|
||||
...report.properties,
|
||||
decisionAt: decision
|
||||
? decision.properties.updatedAt
|
||||
: decisionPending
|
||||
? decisionPending.properties.updatedAt
|
||||
: null,
|
||||
decisionDisable: decision
|
||||
? decision.properties.disable
|
||||
: decisionPending
|
||||
? decisionPending.properties.disable
|
||||
: null,
|
||||
caseFolderId: caseFolder.id,
|
||||
caseFolderUpdatedAt: caseFolder.updatedAt,
|
||||
caseFolderDisable: caseFolder.disable,
|
||||
caseFolderClosed: caseFolder.closed,
|
||||
post: null,
|
||||
comment: null,
|
||||
user: null,
|
||||
@ -162,6 +151,6 @@ export default {
|
||||
},
|
||||
},
|
||||
REPORTED: {
|
||||
...undefinedToNullResolver(['decisionUuid', 'decisionAt', 'decisionDisable']),
|
||||
// Wolle ...undefinedToNullResolver(['decisionUuid', 'decisionAt', 'decisionDisable']),
|
||||
},
|
||||
}
|
||||
|
||||
@ -2,12 +2,11 @@ type REPORTED {
|
||||
createdAt: String!
|
||||
reasonCategory: ReasonCategory!
|
||||
reasonDescription: String!
|
||||
caseFolderId: ID!
|
||||
closed: Boolean # ! Wolle comlete still needed?
|
||||
decisionUuid: ID # Wolle still needed?
|
||||
|
||||
decisionDisable: Boolean # Wolle still needed?
|
||||
decisionAt: String # Wolle still needed?
|
||||
caseFolderId: ID!
|
||||
caseFolderDisable: Boolean!
|
||||
caseFolderUpdatedAt: String!
|
||||
caseFolderClosed: Boolean!
|
||||
|
||||
# Wolle decision: DECIDED
|
||||
# @cypher(statement: "MATCH (resource)<-[decision:DECIDED {uuid: $decisionUuid}]-(user:User) RETURN decision")
|
||||
|
||||
@ -8,10 +8,10 @@ export const reportListQuery = () => {
|
||||
createdAt
|
||||
reasonCategory
|
||||
reasonDescription
|
||||
closed
|
||||
decisionUuid
|
||||
decisionAt
|
||||
decisionDisable
|
||||
caseFolderId
|
||||
caseFolderUpdatedAt
|
||||
caseFolderDisable
|
||||
caseFolderClosed
|
||||
type
|
||||
submitter {
|
||||
id
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
<template v-for="content in reportedContentStructure">
|
||||
<thead
|
||||
:class="[
|
||||
content.closed ? 'decision' : 'no-decision',
|
||||
content.caseFolderClosed ? 'decision' : 'no-decision',
|
||||
'ds-table-col',
|
||||
'ds-table-head-col',
|
||||
'ds-table-head-col-border',
|
||||
@ -88,8 +88,8 @@
|
||||
<span v-else>—</span>
|
||||
</td>
|
||||
<td class="ds-table-col ds-table-head-col-border">
|
||||
<!-- closed -->
|
||||
<b v-if="content.closed">
|
||||
<!-- caseFolderClosed -->
|
||||
<b v-if="content.caseFolderClosed">
|
||||
{{ $t('moderation.reports.decided') }}
|
||||
</b>
|
||||
<ds-button
|
||||
@ -104,7 +104,7 @@
|
||||
<!-- decidedByModerator -->
|
||||
<div v-if="content.resource.decidedByModerator">
|
||||
<br />
|
||||
<div v-if="content.decisionDisable">
|
||||
<div v-if="content.caseFolderDisable">
|
||||
<ds-icon name="eye-slash" class="ban" />
|
||||
{{ $t('moderation.reports.disabledBy') }}
|
||||
</div>
|
||||
@ -116,7 +116,7 @@
|
||||
:user="content.resource.decidedByModerator"
|
||||
:showAvatar="false"
|
||||
:trunc="30"
|
||||
:date-time="content.decisionAt"
|
||||
:date-time="content.caseFolderUpdatedAt"
|
||||
positionDatetime="below"
|
||||
/>
|
||||
</div>
|
||||
@ -226,10 +226,10 @@ export default {
|
||||
if (idx === -1) {
|
||||
idx = newReportedContentStructure.length
|
||||
newReportedContentStructure.push({
|
||||
closed: report.closed,
|
||||
decisionUuid: report.decisionUuid,
|
||||
decisionAt: report.decisionAt,
|
||||
decisionDisable: report.decisionDisable,
|
||||
caseFolderId: report.caseFolderId,
|
||||
caseFolderUpdatedAt: report.caseFolderUpdatedAt,
|
||||
caseFolderDisable: report.caseFolderDisable,
|
||||
caseFolderClosed: report.caseFolderClosed,
|
||||
type: report.type,
|
||||
resource,
|
||||
user: report.user,
|
||||
@ -267,7 +267,7 @@ export default {
|
||||
'moderation.reports.decideModal.' +
|
||||
content.type +
|
||||
'.' +
|
||||
(content.decisionDisable ? 'disable' : 'enable')
|
||||
(content.caseFolderDisable ? 'disable' : 'enable')
|
||||
this.$store.commit('modal/SET_OPEN', {
|
||||
name: 'confirm',
|
||||
data: {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user