From f252c766705eabf5dffe3114a902d8cc5635a6d2 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Fri, 2 Jun 2023 18:05:37 +0200 Subject: [PATCH] recover filteredPostTypes getter --- .../FilterMenu/FilterMenuComponent.vue | 4 +- .../components/FilterMenu/PostTypeFilter.vue | 2 +- webapp/pages/index.vue | 2 +- webapp/store/posts.js | 156 ++++-------------- 4 files changed, 39 insertions(+), 125 deletions(-) diff --git a/webapp/components/FilterMenu/FilterMenuComponent.vue b/webapp/components/FilterMenu/FilterMenuComponent.vue index 9a52a9b98..4ca067220 100644 --- a/webapp/components/FilterMenu/FilterMenuComponent.vue +++ b/webapp/components/FilterMenu/FilterMenuComponent.vue @@ -40,10 +40,10 @@ export default { }, computed: { ...mapGetters({ - filteredPostTypes: 'posts/filteredPostTypes', + postFilters: 'posts/filter', }), eventSetInPostTypeFilter() { - return this.filteredPostTypes.includes('Event') + return this.postTypes.postType_in && this.postTypes.postType_in.includes('Event') }, }, } diff --git a/webapp/components/FilterMenu/PostTypeFilter.vue b/webapp/components/FilterMenu/PostTypeFilter.vue index 67eaa4abe..515282782 100644 --- a/webapp/components/FilterMenu/PostTypeFilter.vue +++ b/webapp/components/FilterMenu/PostTypeFilter.vue @@ -9,7 +9,7 @@ diff --git a/webapp/pages/index.vue b/webapp/pages/index.vue index a7d6864a7..e2c92e868 100644 --- a/webapp/pages/index.vue +++ b/webapp/pages/index.vue @@ -188,8 +188,8 @@ export default { }, computed: { ...mapGetters({ - postsFilter: 'posts/filter', filteredPostTypes: 'posts/filteredPostTypes', + postsFilter: 'posts/filter', orderBy: 'posts/orderBy', }), filterButtonIcon() { diff --git a/webapp/store/posts.js b/webapp/store/posts.js index 1e4d21fe3..41b9d99ba 100644 --- a/webapp/store/posts.js +++ b/webapp/store/posts.js @@ -6,11 +6,6 @@ import isEqual from 'lodash/isEqual' import clone from 'lodash/clone' const defaultFilter = {} -const filterPostTypes = ['Article', 'Event'] -const orderByTypes = { - creationDate: ['createdAt_asc', 'createdAt_desc'], - startDate: ['eventStart_asc', 'eventStart_desc'], -} export const state = () => { 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 = { TOGGLE_FILTER_BY_FOLLOWED(state, currentUserId) { const filter = clone(state.filter) @@ -190,11 +82,36 @@ export const mutations = { if (isEmpty(get(filter, 'emotions_some.emotion_in'))) delete filter.emotions_some state.filter = filter }, - TOGGLE_POST_TYPE, - TOGGLE_UNSET_ALL_POST_TYPES_FILTERS, - TOGGLE_SET_UNSET_POST_TYPE_FILTER, - TOGGLE_EVENTS_ENDED, - TOGGLE_ORDER, + 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 + }, + 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 = { @@ -207,25 +124,22 @@ export const getters = { filteredCategoryIds(state) { return get(state.filter, 'categories_some.id_in') || [] }, - filteredPostTypes, filteredLanguageCodes(state) { return get(state.filter, 'language_in') || [] }, filteredByUsersFollowed(state) { return !!get(state.filter, 'author.followedBy_some.id') }, + filteredPostTypes(state) { + return get(state.filter, 'postType_in') || [] + }, filteredByPostsInMyGroups(state) { return !!get(state.filter, 'postsInMyGroups') }, filteredByEmotions(state) { return get(state.filter, 'emotions_some.emotion_in') || [] }, - noneSetInPostTypeFilter, - articleSetInPostTypeFilter, - eventSetInPostTypeFilter, - orderedByCreationDate, - eventsEnded(state) { - return state.eventsEnded + orderBy(state) { + return state.order }, - orderBy, }