diff --git a/webapp/components/FilterPosts/FilterPosts.vue b/webapp/components/FilterPosts/FilterPosts.vue
index 58f0794d2..1dd0fa737 100644
--- a/webapp/components/FilterPosts/FilterPosts.vue
+++ b/webapp/components/FilterPosts/FilterPosts.vue
@@ -14,6 +14,7 @@
+
@@ -24,12 +25,14 @@ import Dropdown from '~/components/Dropdown'
import { mapGetters } from 'vuex'
import CategoriesFilterMenuItems from './CategoriesFilterMenuItems'
import GeneralFilterMenuItems from './GeneralFilterMenuItems'
+import LanguageFilterMenuItems from './LanguageFilterMenuItems'
export default {
components: {
Dropdown,
CategoriesFilterMenuItems,
GeneralFilterMenuItems,
+ LanguageFilterMenuItems,
},
props: {
placement: { type: String },
diff --git a/webapp/components/FilterPosts/LanguageFilterMenuItems.vue b/webapp/components/FilterPosts/LanguageFilterMenuItems.vue
new file mode 100644
index 000000000..5bfb931cb
--- /dev/null
+++ b/webapp/components/FilterPosts/LanguageFilterMenuItems.vue
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/webapp/locales/de.json b/webapp/locales/de.json
index 67d3b5bbd..07b0fbc0e 100644
--- a/webapp/locales/de.json
+++ b/webapp/locales/de.json
@@ -86,7 +86,11 @@
},
"followers": {
"label": "Benutzern, denen ich folge"
- }
+ },
+ "language": {
+ "header": "Sprachen",
+ "all": "Alle"
+ }
},
"site": {
"thanks": "Danke!",
diff --git a/webapp/locales/en.json b/webapp/locales/en.json
index d9321b13b..094c88e60 100644
--- a/webapp/locales/en.json
+++ b/webapp/locales/en.json
@@ -87,7 +87,11 @@
},
"followers": {
"label": "Users I follow"
- }
+ },
+ "language": {
+ "header": "Languages",
+ "all": "All"
+ }
},
"site": {
"thanks": "Thanks!",
diff --git a/webapp/store/posts.js b/webapp/store/posts.js
index 97c0e1245..9437db956 100644
--- a/webapp/store/posts.js
+++ b/webapp/store/posts.js
@@ -48,12 +48,23 @@ export const mutations = {
delete filter.categories_some
state.filter = filter
},
+ RESET_LANGUAGES(state) {
+ const filter = clone(state.filter)
+ delete filter.language_in
+ state.filter = filter
+ },
TOGGLE_CATEGORY(state, categoryId) {
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_LANGUAGE(state, languageCode) {
+ const filter = clone(state.filter)
+ update(filter, 'language_in', languageCodes => xor(languageCodes, [languageCode]))
+ if (isEmpty(get(filter, 'language_in'))) delete filter.language_in
+ state.filter = filter
+ },
TOGGLE_EMOTION(state, emotion) {
const filter = clone(state.filter)
update(filter, 'emotions_some.emotion_in', emotions => xor(emotions, [emotion]))
@@ -75,6 +86,9 @@ export const getters = {
filteredCategoryIds(state) {
return get(state.filter, 'categories_some.id_in') || []
},
+ filteredLanguagesCodes(state) {
+ return get(state.filter, 'language_in') || []
+ },
filteredByUsersFollowed(state) {
return !!get(state.filter, 'author.followedBy_some.id')
},