From 35a11766d8d381daf7820ada7e0dc8b8c7c6cdb4 Mon Sep 17 00:00:00 2001 From: Kevin van der Werff Date: Thu, 7 Nov 2019 00:18:13 +0100 Subject: [PATCH] :construction: Avoid duplicated returns --- pages/search.vue | 10 ++-------- store/data.js | 12 +++++++++++- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/pages/search.vue b/pages/search.vue index 97d4a8e..6dbe317 100644 --- a/pages/search.vue +++ b/pages/search.vue @@ -25,7 +25,6 @@ export default { activeCard: '', resources: [], searchInput: {}, - tags: [], showTitle: false, showCards: false, } @@ -46,13 +45,8 @@ export default { this.searchInput = newSearchInput }, searchInput(searchInput) { - let resources = [] - if (searchInput.keywords) - resources = resources.concat(this.$store.getters['data/findByName'](searchInput.keywords)) - if (searchInput.tags) - resources = resources.concat(this.$store.getters['data/findByTags'](searchInput.tags)) - this.resources = resources - }, + this.resources = this.$store.getters['data/findBySearchInputs'](searchInput.keywords, searchInput.tags) + }, }, mounted() { this.showTitle = true diff --git a/store/data.js b/store/data.js index dd31fe5..cec45bd 100644 --- a/store/data.js +++ b/store/data.js @@ -52,6 +52,12 @@ export const getters = { return getDesiredResources(state.resources) }, + findBySearchInputs: (_, getters) => (keywords = [], tags = []) => { + const foundByKeywords = getters.findByName(keywords) + const foundByTags = getters.findByTags(tags) + const uniqueResources = foundByTags.filter(x => !foundByKeywords.some(y => equalResources(x, y))) + return uniqueResources.concat(foundByKeywords) + }, sortByTitle: (_, getters) => title => { const category = getters.findCategory(title) const clone = [...category.resources] @@ -70,4 +76,8 @@ const compareTitles = (x, y) => { } else { return 0 } -} \ No newline at end of file +} + +const equalResources = (a, b) => + a.title === b.title && + a.cleanTitle == b.cleanTitle \ No newline at end of file