mirror of
https://github.com/IT4Change/Ocelot-Social.git
synced 2025-12-13 07:45:56 +00:00
Prefer persistent pinnedPost filter in backend
This commit is contained in:
parent
f871df02ae
commit
cbeecce775
@ -2,10 +2,9 @@ import uuid from 'uuid/v4'
|
||||
import { neo4jgraphql } from 'neo4j-graphql-js'
|
||||
import fileUpload from './fileUpload'
|
||||
import { getBlockedUsers, getBlockedByUsers } from './users.js'
|
||||
import { mergeWith, isArray } from 'lodash'
|
||||
import { mergeWith, isArray, isEmpty } from 'lodash'
|
||||
import { UserInputError } from 'apollo-server'
|
||||
import Resolver from './helpers/Resolver'
|
||||
|
||||
const filterForBlockedUsers = async (params, context) => {
|
||||
if (!context.user) return params
|
||||
const [blockedUsers, blockedByUsers] = await Promise.all([
|
||||
@ -29,10 +28,26 @@ const filterForBlockedUsers = async (params, context) => {
|
||||
return params
|
||||
}
|
||||
|
||||
const maintainPinnedPosts = params => {
|
||||
const pinnedPostFilter = { pinnedBy_in: { role_in: ['admin'] } }
|
||||
if (isEmpty(params.filter)) {
|
||||
params.filter = { OR: [pinnedPostFilter, {}] }
|
||||
} else {
|
||||
const filteredPostsArray = []
|
||||
Object.keys(params.filter).forEach(key => {
|
||||
filteredPostsArray.push({ [key]: params.filter[key] })
|
||||
})
|
||||
filteredPostsArray.push(pinnedPostFilter)
|
||||
params.filter = { OR: filteredPostsArray }
|
||||
}
|
||||
return params
|
||||
}
|
||||
|
||||
export default {
|
||||
Query: {
|
||||
Post: async (object, params, context, resolveInfo) => {
|
||||
params = await filterForBlockedUsers(params, context)
|
||||
params = await maintainPinnedPosts(params)
|
||||
return neo4jgraphql(object, params, context, resolveInfo, false)
|
||||
},
|
||||
findPosts: async (object, params, context, resolveInfo) => {
|
||||
|
||||
@ -10,31 +10,23 @@ const defaultFilter = {}
|
||||
export const state = () => {
|
||||
return {
|
||||
filter: {
|
||||
OR: [{ pinnedBy_in: { role_in: ['admin'] } }, {}],
|
||||
...defaultFilter,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
export const mutations = {
|
||||
TOGGLE_FILTER_BY_FOLLOWED(state, currentUserId) {
|
||||
let filter = clone(state.filter)
|
||||
const id = filter.OR.find(object => object.author)
|
||||
const filter = clone(state.filter)
|
||||
const id = get(filter, 'author.followedBy_some.id')
|
||||
if (id) {
|
||||
filter.OR.forEach(object => delete object.author)
|
||||
delete filter.author
|
||||
state.filter = filter
|
||||
} else {
|
||||
if (isEmpty(filter.OR[-1])) filter.OR.pop()
|
||||
filter.OR.map(object => {
|
||||
for (let key in object) {
|
||||
if (object.hasOwnProperty(key)) {
|
||||
object = { key: object[key] }
|
||||
}
|
||||
}
|
||||
})
|
||||
filter.OR.unshift({
|
||||
state.filter = {
|
||||
...filter,
|
||||
author: { followedBy_some: { id: currentUserId } },
|
||||
})
|
||||
state.filter = filter
|
||||
}
|
||||
}
|
||||
},
|
||||
RESET_CATEGORIES(state) {
|
||||
@ -43,20 +35,9 @@ export const mutations = {
|
||||
state.filter = filter
|
||||
},
|
||||
TOGGLE_CATEGORY(state, categoryId) {
|
||||
let filter = clone(state.filter)
|
||||
if (isEmpty(filter.OR[-1])) filter.OR.pop()
|
||||
filter.OR.map(object => {
|
||||
for (let key in object) {
|
||||
if (object.hasOwnProperty(key)) {
|
||||
object = { key: object[key] }
|
||||
}
|
||||
}
|
||||
})
|
||||
filter.OR.unshift({
|
||||
categories_some: { id_in: [categoryId] },
|
||||
})
|
||||
// update(filter, 'categories_some.id_in', categoryIds => xor(categoryIds, [categoryId]))
|
||||
// if (isEmpty(get(filter.OR[0], 'categories_some.id_in'))) delete filter.OR[0].categories_some
|
||||
const filter = clone(state.filter)
|
||||
update(filter, 'categories_some.id_in', categoryIds => xor(categoryIds, [categoryId]))
|
||||
if (isEmpty(get(filter, 'categories_some.id_in'))) delete filter.categories_some
|
||||
state.filter = filter
|
||||
},
|
||||
TOGGLE_EMOTION(state, emotion) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user