mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-13 07:46:06 +00:00
recover filteredPostTypes getter
This commit is contained in:
parent
2ae6c350e1
commit
f252c76670
@ -40,10 +40,10 @@ export default {
|
|||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters({
|
...mapGetters({
|
||||||
filteredPostTypes: 'posts/filteredPostTypes',
|
postFilters: 'posts/filter',
|
||||||
}),
|
}),
|
||||||
eventSetInPostTypeFilter() {
|
eventSetInPostTypeFilter() {
|
||||||
return this.filteredPostTypes.includes('Event')
|
return this.postTypes.postType_in && this.postTypes.postType_in.includes('Event')
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@ -9,7 +9,7 @@
|
|||||||
<labeled-button
|
<labeled-button
|
||||||
icon="check"
|
icon="check"
|
||||||
:label="$t('filter-menu.all')"
|
:label="$t('filter-menu.all')"
|
||||||
:filled="filteredPostTypes === []"
|
:filled="filteredPostTypes.length === 0"
|
||||||
:title="$t('filter-menu.all')"
|
:title="$t('filter-menu.all')"
|
||||||
@click="togglePostType(null)"
|
@click="togglePostType(null)"
|
||||||
/>
|
/>
|
||||||
|
|||||||
@ -188,8 +188,8 @@ export default {
|
|||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters({
|
...mapGetters({
|
||||||
postsFilter: 'posts/filter',
|
|
||||||
filteredPostTypes: 'posts/filteredPostTypes',
|
filteredPostTypes: 'posts/filteredPostTypes',
|
||||||
|
postsFilter: 'posts/filter',
|
||||||
orderBy: 'posts/orderBy',
|
orderBy: 'posts/orderBy',
|
||||||
}),
|
}),
|
||||||
filterButtonIcon() {
|
filterButtonIcon() {
|
||||||
|
|||||||
@ -6,11 +6,6 @@ import isEqual from 'lodash/isEqual'
|
|||||||
import clone from 'lodash/clone'
|
import clone from 'lodash/clone'
|
||||||
|
|
||||||
const defaultFilter = {}
|
const defaultFilter = {}
|
||||||
const filterPostTypes = ['Article', 'Event']
|
|
||||||
const orderByTypes = {
|
|
||||||
creationDate: ['createdAt_asc', 'createdAt_desc'],
|
|
||||||
startDate: ['eventStart_asc', 'eventStart_desc'],
|
|
||||||
}
|
|
||||||
|
|
||||||
export const state = () => {
|
export const state = () => {
|
||||||
return {
|
return {
|
||||||
@ -21,109 +16,6 @@ export const state = () => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const TOGGLE_POST_TYPE = (state, postType) => {
|
|
||||||
const filter = clone(state.filter)
|
|
||||||
if (postType && !(filter.postType_in && filter.postType_in.includes(postType))) {
|
|
||||||
filter.postType_in = [postType]
|
|
||||||
if (postType === 'Event') {
|
|
||||||
filter.eventStart_gte = new Date()
|
|
||||||
state.order = 'eventStart_asc'
|
|
||||||
} else {
|
|
||||||
delete filter.eventStart_gte
|
|
||||||
state.order = 'createdAt_desc'
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
delete filter.eventStart_gte
|
|
||||||
delete filter.postType_in
|
|
||||||
state.order = 'createdAt_desc'
|
|
||||||
}
|
|
||||||
state.filter = filter
|
|
||||||
}
|
|
||||||
|
|
||||||
const TOGGLE_UNSET_ALL_POST_TYPES_FILTERS = (state) => {
|
|
||||||
const beforeEventSetInPostTypeFilter = eventSetInPostTypeFilter(state)
|
|
||||||
filterPostTypes.forEach((postType) => {
|
|
||||||
if (filteredPostTypes(state).includes(postType)) TOGGLE_POST_TYPE(state, postType)
|
|
||||||
})
|
|
||||||
adjustEventsEnded(state, beforeEventSetInPostTypeFilter)
|
|
||||||
adjustOrder(state)
|
|
||||||
}
|
|
||||||
const TOGGLE_SET_UNSET_POST_TYPE_FILTER = (state, setPostType) => {
|
|
||||||
const beforeEventSetInPostTypeFilter = eventSetInPostTypeFilter(state)
|
|
||||||
if (noneSetInPostTypeFilter(state)) {
|
|
||||||
if (setPostType !== 'All') TOGGLE_POST_TYPE(state, setPostType)
|
|
||||||
} else {
|
|
||||||
if (setPostType !== 'All') {
|
|
||||||
if (filteredPostTypes(state).includes(setPostType)) {
|
|
||||||
TOGGLE_UNSET_ALL_POST_TYPES_FILTERS(state)
|
|
||||||
} else {
|
|
||||||
// if 'setPostType' is not set then set it and unset all others
|
|
||||||
TOGGLE_POST_TYPE(state, setPostType)
|
|
||||||
filterPostTypes.forEach((postType) => {
|
|
||||||
if (postType !== setPostType && filteredPostTypes(state).includes(postType))
|
|
||||||
TOGGLE_POST_TYPE(state, postType)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
TOGGLE_UNSET_ALL_POST_TYPES_FILTERS(state)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
adjustEventsEnded(state, beforeEventSetInPostTypeFilter)
|
|
||||||
adjustOrder(state)
|
|
||||||
}
|
|
||||||
const TOGGLE_EVENTS_ENDED = (state) => {
|
|
||||||
if (state.filter.eventStart_gte) {
|
|
||||||
delete state.filter.eventStart_gte
|
|
||||||
} else {
|
|
||||||
if (state.filter.postType_in && state.filter.postType_in.includes('Event')) {
|
|
||||||
state.filter.eventStart_gte = new Date()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const TOGGLE_ORDER = (state, value) => {
|
|
||||||
state.order = value
|
|
||||||
}
|
|
||||||
const adjustEventsEnded = (state, beforeEventSetInPostTypeFilter) => {
|
|
||||||
if (eventSetInPostTypeFilter(state) !== beforeEventSetInPostTypeFilter) {
|
|
||||||
if (eventSetInPostTypeFilter(state)) {
|
|
||||||
TOGGLE_EVENTS_ENDED(state, true)
|
|
||||||
} else {
|
|
||||||
TOGGLE_EVENTS_ENDED(state, false)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
const adjustOrder = (state) => {
|
|
||||||
if (orderedByCreationDate(state)) {
|
|
||||||
if (!orderByTypes.creationDate.includes(orderBy(state))) {
|
|
||||||
TOGGLE_ORDER(state, 'createdAt_desc')
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (!orderByTypes.startDate.includes(orderBy(state))) {
|
|
||||||
TOGGLE_ORDER(state, 'eventStart_asc')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const filteredPostTypes = (state) => {
|
|
||||||
return get(state.filter, 'postType_in') || []
|
|
||||||
}
|
|
||||||
const noneSetInPostTypeFilter = (state) => {
|
|
||||||
return !articleSetInPostTypeFilter(state) && !eventSetInPostTypeFilter(state)
|
|
||||||
}
|
|
||||||
const articleSetInPostTypeFilter = (state) => {
|
|
||||||
return filteredPostTypes(state).includes('Article')
|
|
||||||
}
|
|
||||||
const eventSetInPostTypeFilter = (state) => {
|
|
||||||
return filteredPostTypes(state).includes('Event')
|
|
||||||
}
|
|
||||||
const orderedByCreationDate = (state) => {
|
|
||||||
return noneSetInPostTypeFilter(state) || articleSetInPostTypeFilter(state)
|
|
||||||
}
|
|
||||||
const orderBy = (state) => {
|
|
||||||
return state.order
|
|
||||||
}
|
|
||||||
|
|
||||||
export const mutations = {
|
export const mutations = {
|
||||||
TOGGLE_FILTER_BY_FOLLOWED(state, currentUserId) {
|
TOGGLE_FILTER_BY_FOLLOWED(state, currentUserId) {
|
||||||
const filter = clone(state.filter)
|
const filter = clone(state.filter)
|
||||||
@ -190,11 +82,36 @@ export const mutations = {
|
|||||||
if (isEmpty(get(filter, 'emotions_some.emotion_in'))) delete filter.emotions_some
|
if (isEmpty(get(filter, 'emotions_some.emotion_in'))) delete filter.emotions_some
|
||||||
state.filter = filter
|
state.filter = filter
|
||||||
},
|
},
|
||||||
TOGGLE_POST_TYPE,
|
TOGGLE_POST_TYPE(state, postType) {
|
||||||
TOGGLE_UNSET_ALL_POST_TYPES_FILTERS,
|
const filter = clone(state.filter)
|
||||||
TOGGLE_SET_UNSET_POST_TYPE_FILTER,
|
if (postType && !(filter.postType_in && filter.postType_in.includes(postType))) {
|
||||||
TOGGLE_EVENTS_ENDED,
|
filter.postType_in = [postType]
|
||||||
TOGGLE_ORDER,
|
if (postType === 'Event') {
|
||||||
|
filter.eventStart_gte = new Date()
|
||||||
|
state.order = 'eventStart_asc'
|
||||||
|
} else {
|
||||||
|
delete filter.eventStart_gte
|
||||||
|
state.order = 'createdAt_desc'
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
delete filter.eventStart_gte
|
||||||
|
delete filter.postType_in
|
||||||
|
state.order = 'createdAt_desc'
|
||||||
|
}
|
||||||
|
state.filter = filter
|
||||||
|
},
|
||||||
|
TOGGLE_EVENTS_ENDED(state) {
|
||||||
|
if (state.filter.eventStart_gte) {
|
||||||
|
delete state.filter.eventStart_gte
|
||||||
|
} else {
|
||||||
|
if (state.filter.postType_in && state.filter.postType_in.includes('Event')) {
|
||||||
|
state.filter.eventStart_gte = new Date()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
TOGGLE_ORDER(state, value) {
|
||||||
|
state.order = value
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getters = {
|
export const getters = {
|
||||||
@ -207,25 +124,22 @@ export const getters = {
|
|||||||
filteredCategoryIds(state) {
|
filteredCategoryIds(state) {
|
||||||
return get(state.filter, 'categories_some.id_in') || []
|
return get(state.filter, 'categories_some.id_in') || []
|
||||||
},
|
},
|
||||||
filteredPostTypes,
|
|
||||||
filteredLanguageCodes(state) {
|
filteredLanguageCodes(state) {
|
||||||
return get(state.filter, 'language_in') || []
|
return get(state.filter, 'language_in') || []
|
||||||
},
|
},
|
||||||
filteredByUsersFollowed(state) {
|
filteredByUsersFollowed(state) {
|
||||||
return !!get(state.filter, 'author.followedBy_some.id')
|
return !!get(state.filter, 'author.followedBy_some.id')
|
||||||
},
|
},
|
||||||
|
filteredPostTypes(state) {
|
||||||
|
return get(state.filter, 'postType_in') || []
|
||||||
|
},
|
||||||
filteredByPostsInMyGroups(state) {
|
filteredByPostsInMyGroups(state) {
|
||||||
return !!get(state.filter, 'postsInMyGroups')
|
return !!get(state.filter, 'postsInMyGroups')
|
||||||
},
|
},
|
||||||
filteredByEmotions(state) {
|
filteredByEmotions(state) {
|
||||||
return get(state.filter, 'emotions_some.emotion_in') || []
|
return get(state.filter, 'emotions_some.emotion_in') || []
|
||||||
},
|
},
|
||||||
noneSetInPostTypeFilter,
|
orderBy(state) {
|
||||||
articleSetInPostTypeFilter,
|
return state.order
|
||||||
eventSetInPostTypeFilter,
|
|
||||||
orderedByCreationDate,
|
|
||||||
eventsEnded(state) {
|
|
||||||
return state.eventsEnded
|
|
||||||
},
|
},
|
||||||
orderBy,
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user