From 2ac3a9f9e30f59fe9d040640b9bef36f91b4d1b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 25 Jul 2022 18:07:14 +0200 Subject: [PATCH 01/97] Update issue templates --- .github/ISSUE_TEMPLATE/bug_report.md | 6 ++++-- .github/ISSUE_TEMPLATE/devops_ticket.md | 6 ++++-- .github/ISSUE_TEMPLATE/epic.md | 7 +++++-- .github/ISSUE_TEMPLATE/feature_request.md | 6 ++++-- .github/ISSUE_TEMPLATE/question.md | 7 +++++-- .github/ISSUE_TEMPLATE/refactor_tickets.md | 7 ++++--- 6 files changed, 26 insertions(+), 13 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 595c9d584..1fe27f6c6 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -1,8 +1,10 @@ --- -name: πŸ› Bug Report +name: "\U0001F41B Bug Report" about: Create a report to help us to improve. +title: "\U0001F41B [Bug] XXX" labels: bug -title: πŸ› [Bug] +assignees: '' + --- ## :bug: Bug Report diff --git a/.github/ISSUE_TEMPLATE/devops_ticket.md b/.github/ISSUE_TEMPLATE/devops_ticket.md index 115664911..17533cd54 100644 --- a/.github/ISSUE_TEMPLATE/devops_ticket.md +++ b/.github/ISSUE_TEMPLATE/devops_ticket.md @@ -1,8 +1,10 @@ --- -name: πŸ’₯ DevOps Ticket +name: "\U0001F4A5 DevOps Ticket" about: Help us manage our deployed app. +title: "\U0001F4A5 [DevOps] XXX" labels: devops -title: πŸ’₯ [DevOps] +assignees: '' + --- ## πŸ’₯ DevOps Ticket diff --git a/.github/ISSUE_TEMPLATE/epic.md b/.github/ISSUE_TEMPLATE/epic.md index cf72cd673..57eca6dfe 100644 --- a/.github/ISSUE_TEMPLATE/epic.md +++ b/.github/ISSUE_TEMPLATE/epic.md @@ -1,9 +1,12 @@ --- -name: 🌟 Epic +name: "\U0001F31F Epic" about: Define a big development step. +title: "\U0001F31F [EPIC] XXX" labels: epic -title: 🌟 [EPIC] +assignees: '' + --- + diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index beae80901..22cd5045e 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -1,8 +1,10 @@ --- -name: πŸš€ Feature Request +name: "\U0001F680 Feature Request" about: Suggest an idea for this project. +title: "\U0001F680 [Feature] XXX" labels: feature -title: πŸš€ [Feature] +assignees: '' + --- ## :rocket: Feature Request diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md index 40e6e381b..f2328dcc7 100644 --- a/.github/ISSUE_TEMPLATE/question.md +++ b/.github/ISSUE_TEMPLATE/question.md @@ -1,9 +1,12 @@ --- -name: πŸ’¬ Question +name: "\U0001F4AC Question" about: If you need help understanding ocelot.social. +title: "\U0001F4AC [Question] XXX" labels: question -title: πŸ’¬ [Question] +assignees: '' + --- + diff --git a/.github/ISSUE_TEMPLATE/refactor_tickets.md b/.github/ISSUE_TEMPLATE/refactor_tickets.md index d1841e35e..867c809ae 100644 --- a/.github/ISSUE_TEMPLATE/refactor_tickets.md +++ b/.github/ISSUE_TEMPLATE/refactor_tickets.md @@ -1,10 +1,11 @@ --- -name: πŸ”§ Refactor +name: "\U0001F527 Refactor" about: Help us improve our code by refactoring it. +title: "\U0001F527 [Refactor] XXX" labels: refactor -title: πŸ”§ [Refactor] +assignees: '' + --- ## πŸ”§ Refactor - From e31f250ea5e1949f4f08e72fe82622d41ecd85f1 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 25 Jul 2022 18:41:39 +0200 Subject: [PATCH 02/97] env vatiable for CATEGORIES_ACTIVE and switch for categories in contribution form --- webapp/.env.template | 1 + .../ContributionForm/ContributionForm.vue | 32 +++++++++++++++++-- webapp/config/index.js | 1 + 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/webapp/.env.template b/webapp/.env.template index 7373255a9..0a4c3405f 100644 --- a/webapp/.env.template +++ b/webapp/.env.template @@ -4,3 +4,4 @@ PUBLIC_REGISTRATION=false INVITE_REGISTRATION=true WEBSOCKETS_URI=ws://localhost:3000/api/graphql GRAPHQL_URI=http://localhost:4000/ +CATEGORIES_ACTIVE=false \ No newline at end of file diff --git a/webapp/components/ContributionForm/ContributionForm.vue b/webapp/components/ContributionForm/ContributionForm.vue index a06679149..e25dd6b0f 100644 --- a/webapp/components/ContributionForm/ContributionForm.vue +++ b/webapp/components/ContributionForm/ContributionForm.vue @@ -51,6 +51,19 @@ {{ contentLength }} + + + {{ formData.categoryIds.length }} / 3 + +
{{ $t('actions.cancel') }} @@ -69,6 +82,7 @@ import gql from 'graphql-tag' import { mapGetters } from 'vuex' import HcEditor from '~/components/Editor/Editor' import PostMutations from '~/graphql/PostMutations.js' +import CategoriesSelect from '~/components/CategoriesSelect/CategoriesSelect' import ImageUploader from '~/components/ImageUploader/ImageUploader' import links from '~/constants/links.js' import PageParamsLink from '~/components/_new/features/PageParamsLink/PageParamsLink.vue' @@ -78,6 +92,7 @@ export default { HcEditor, ImageUploader, PageParamsLink, + CategoriesSelect, }, props: { contribution: { @@ -86,7 +101,7 @@ export default { }, }, data() { - const { title, content, image } = this.contribution + const { title, content, image, categories } = this.contribution const { sensitive: imageBlurred = false, aspectRatio: imageAspectRatio = null, @@ -94,6 +109,7 @@ export default { } = image || {} return { + categoriesActive: this.$env.CATEGORIES_ACTIVE, links, formData: { title: title || '', @@ -102,11 +118,22 @@ export default { imageAspectRatio, imageType, imageBlurred, + categoryIds: categories ? categories.map((category) => category.id) : [], }, formSchema: { title: { required: true, min: 3, max: 100 }, content: { required: true }, imageBlurred: { required: false }, + categoryIds: { + type: 'array', + required: true, + validator: (_, value = []) => { + if (value.length === 0 || value.length > 3) { + return [new Error(this.$t('common.validations.categories'))] + } + return [] + }, + }, }, loading: false, users: [], @@ -125,7 +152,7 @@ export default { methods: { submit() { let image = null - const { title, content } = this.formData + const { title, content, categoryIds } = this.formData if (this.formData.image) { image = { sensitive: this.formData.imageBlurred, @@ -143,6 +170,7 @@ export default { variables: { title, content, + categoryIds, id: this.contribution.id || null, image, }, diff --git a/webapp/config/index.js b/webapp/config/index.js index 00df85bac..db030e929 100644 --- a/webapp/config/index.js +++ b/webapp/config/index.js @@ -33,6 +33,7 @@ const options = { // Cookies COOKIE_EXPIRE_TIME: process.env.COOKIE_EXPIRE_TIME || 730, // Two years by default COOKIE_HTTPS_ONLY: process.env.COOKIE_HTTPS_ONLY || process.env.NODE_ENV === 'production', // ensure true in production if not set explicitly + CATEGORIES_ACTIVE: process.env.CATEGORIES_ACTIVE === 'true' || false, } const CONFIG = { From 28ddfde0e31d424ef0f48766e7d705bc525f0f28 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 25 Jul 2022 19:02:08 +0200 Subject: [PATCH 03/97] add categories active to .env, save categories on create --- backend/.env.template | 2 ++ backend/src/config/index.js | 1 + backend/src/schema/resolvers/posts.js | 15 +++++++++++++-- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/backend/.env.template b/backend/.env.template index 5858a5d1e..239046dd3 100644 --- a/backend/.env.template +++ b/backend/.env.template @@ -28,3 +28,5 @@ AWS_BUCKET= EMAIL_DEFAULT_SENDER="devops@ocelot.social" EMAIL_SUPPORT="devops@ocelot.social" + +CATEGORIES_ACTIVE=false \ No newline at end of file diff --git a/backend/src/config/index.js b/backend/src/config/index.js index 6ad8c578b..7df780cfc 100644 --- a/backend/src/config/index.js +++ b/backend/src/config/index.js @@ -86,6 +86,7 @@ const options = { ORGANIZATION_URL: emails.ORGANIZATION_LINK, PUBLIC_REGISTRATION: env.PUBLIC_REGISTRATION === 'true' || false, INVITE_REGISTRATION: env.INVITE_REGISTRATION !== 'false', // default = true + CATEGORIES_ACTIVE: process.env.CATEGORIES_ACTIVE === 'true' || false, } // Check if all required configs are present diff --git a/backend/src/schema/resolvers/posts.js b/backend/src/schema/resolvers/posts.js index d199b6f09..f4faaeb17 100644 --- a/backend/src/schema/resolvers/posts.js +++ b/backend/src/schema/resolvers/posts.js @@ -5,6 +5,7 @@ import { UserInputError } from 'apollo-server' import { mergeImage, deleteImage } from './images/images' import Resolver from './helpers/Resolver' import { filterForMutedUsers } from './helpers/filterForMutedUsers' +import CONFIG from '../../config' const maintainPinnedPosts = (params) => { const pinnedPostFilter = { pinned: true } @@ -76,12 +77,20 @@ export default { }, Mutation: { CreatePost: async (_parent, params, context, _resolveInfo) => { + const { categoryIds } = params const { image: imageInput } = params delete params.categoryIds delete params.image params.id = params.id || uuid() const session = context.driver.session() const writeTxResultPromise = session.writeTransaction(async (transaction) => { + const categoriesCypher = + CONFIG.CATEGORIES_ACTIVE && categoryIds + ? `WITH post + UNWIND $categoryIds AS categoryId + MATCH (category:Category {id: categoryId}) + MERGE (post)-[:CATEGORIZED]->(category)` + : '' const createPostTransactionResponse = await transaction.run( ` CREATE (post:Post) @@ -91,11 +100,13 @@ export default { SET post.clickedCount = 0 SET post.viewedTeaserCount = 0 WITH post + UNWIND $categoryIds AS categoryId MATCH (author:User {id: $userId}) MERGE (post)<-[:WROTE]-(author) + ${categoriesCypher} RETURN post {.*} `, - { userId: context.user.id, params }, + { userId: context.user.id, params, categoryIds }, ) const [post] = createPostTransactionResponse.records.map((record) => record.get('post')) if (imageInput) { @@ -127,7 +138,7 @@ export default { WITH post ` - if (categoryIds && categoryIds.length) { + if (CONFIG.CATEGORIES_ACTIVE && categoryIds && categoryIds.length) { const cypherDeletePreviousRelations = ` MATCH (post:Post { id: $params.id })-[previousRelations:CATEGORIZED]->(category:Category) DELETE previousRelations From 1b2509229c7f6aa0c37338584d592f44c17f7c3d Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 25 Jul 2022 19:22:17 +0200 Subject: [PATCH 04/97] remove bad line in cypher --- backend/src/schema/resolvers/posts.js | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/src/schema/resolvers/posts.js b/backend/src/schema/resolvers/posts.js index f4faaeb17..b09bb3edd 100644 --- a/backend/src/schema/resolvers/posts.js +++ b/backend/src/schema/resolvers/posts.js @@ -100,7 +100,6 @@ export default { SET post.clickedCount = 0 SET post.viewedTeaserCount = 0 WITH post - UNWIND $categoryIds AS categoryId MATCH (author:User {id: $userId}) MERGE (post)<-[:WROTE]-(author) ${categoriesCypher} From bc955003f7c33aabe592bee782aca973b4f00cba Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 25 Jul 2022 20:03:00 +0200 Subject: [PATCH 05/97] add optional categories to teaser and post --- webapp/components/PostTeaser/PostTeaser.vue | 21 +++++++++++++++++- webapp/graphql/Fragments.js | 6 ++++++ webapp/pages/post/_id/_slug/index.vue | 24 +++++++++++++++++---- 3 files changed, 46 insertions(+), 5 deletions(-) diff --git a/webapp/components/PostTeaser/PostTeaser.vue b/webapp/components/PostTeaser/PostTeaser.vue index 949c7032e..a973ca31f 100644 --- a/webapp/components/PostTeaser/PostTeaser.vue +++ b/webapp/components/PostTeaser/PostTeaser.vue @@ -26,7 +26,19 @@ class="footer" v-observe-visibility="(isVisible, entry) => visibilityChanged(isVisible, entry, post.id)" > -
+
+ +
+
{}, }, }, + data() { + return { + categoriesActive: this.$env.CATEGORIES_ACTIVE, + } + }, mounted() { const { image } = this.post if (!image) return diff --git a/webapp/graphql/Fragments.js b/webapp/graphql/Fragments.js index 7b05e2369..b67851873 100644 --- a/webapp/graphql/Fragments.js +++ b/webapp/graphql/Fragments.js @@ -78,6 +78,12 @@ export const tagsCategoriesAndPinnedFragment = gql` tags { id } + categories { + id + slug + name + icon + } pinnedBy { id name diff --git a/webapp/pages/post/_id/_slug/index.vue b/webapp/pages/post/_id/_slug/index.vue index b1ca870d7..d02a448da 100644 --- a/webapp/pages/post/_id/_slug/index.vue +++ b/webapp/pages/post/_id/_slug/index.vue @@ -44,6 +44,19 @@

{{ post.title }}

+ +
+ + + + +
+
@@ -91,6 +104,7 @@ \ No newline at end of file diff --git a/webapp/constants/headerMenu.js b/webapp/constants/headerMenu.js new file mode 100644 index 000000000..da7a72e85 --- /dev/null +++ b/webapp/constants/headerMenu.js @@ -0,0 +1,35 @@ +export default { + SHOW_HEADER_MENU: true, + MENU: [{ + name: 'Themen', + path: '/#' + }, + { + name: 'Gruppen', + path: '/#', + children: [ + { + name: 'Gruppe 1', + path: '/#' + }, + { + name: 'Gruppe 2', + path: '/#' + } + ] + }, + { + name: 'Über Yunite', + path: '/#', + children: [ + { + name: 'Impressum', + path: '/#' + }, + { + name: 'Yunite Team', + path: '/#' + } + ] + }] + } \ No newline at end of file diff --git a/webapp/layouts/default.vue b/webapp/layouts/default.vue index 0dfd752bf..503b22185 100644 --- a/webapp/layouts/default.vue +++ b/webapp/layouts/default.vue @@ -9,6 +9,7 @@ + import Logo from '~/components/Logo/Logo' +import HeaderMenu from '~/components/HeaderMenu/HeaderMenu.vue' +import headerMenu from '../constants/headerMenu.js' import { mapGetters } from 'vuex' import LocaleSwitch from '~/components/LocaleSwitch/LocaleSwitch' import SearchField from '~/components/features/SearchField/SearchField.vue' @@ -94,6 +97,7 @@ import InviteButton from '~/components/InviteButton/InviteButton' export default { components: { Logo, + HeaderMenu, LocaleSwitch, SearchField, Modal, @@ -106,6 +110,7 @@ export default { mixins: [seo], data() { return { + show: headerMenu.SHOW_HEADER_MENU, mobileSearchVisible: false, toggleMobileMenu: false, inviteRegistration: this.$env.INVITE_REGISTRATION === true, // for 'false' in .env INVITE_REGISTRATION is of type undefined and not(!) boolean false, because of internal handling, From 336e9469dbdd30c839667f24e4b148a727a5fe5e Mon Sep 17 00:00:00 2001 From: ogerly Date: Tue, 9 Aug 2022 11:55:00 +0200 Subject: [PATCH 12/97] add optional header menu --- webapp/components/HeaderMenu/HeaderMenu.vue | 24 ++++++++---------- webapp/constants/headerMenu.js | 28 +++++++++++---------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/webapp/components/HeaderMenu/HeaderMenu.vue b/webapp/components/HeaderMenu/HeaderMenu.vue index 1228d1e4a..31afe93b4 100644 --- a/webapp/components/HeaderMenu/HeaderMenu.vue +++ b/webapp/components/HeaderMenu/HeaderMenu.vue @@ -1,20 +1,18 @@ \ No newline at end of file + diff --git a/webapp/constants/headerMenu.js b/webapp/constants/headerMenu.js index da7a72e85..1dfed43d8 100644 --- a/webapp/constants/headerMenu.js +++ b/webapp/constants/headerMenu.js @@ -1,8 +1,9 @@ export default { - SHOW_HEADER_MENU: true, - MENU: [{ + SHOW_HEADER_MENU: true, + MENU: [ + { name: 'Themen', - path: '/#' + path: '/#', }, { name: 'Gruppen', @@ -10,13 +11,13 @@ export default { children: [ { name: 'Gruppe 1', - path: '/#' + path: '/#', }, { name: 'Gruppe 2', - path: '/#' - } - ] + path: '/#', + }, + ], }, { name: 'Über Yunite', @@ -24,12 +25,13 @@ export default { children: [ { name: 'Impressum', - path: '/#' + path: '/#', }, { name: 'Yunite Team', - path: '/#' - } - ] - }] - } \ No newline at end of file + path: '/#', + }, + ], + }, + ], +} From 968dcc72763a19c2b7777a077590b1fa45fd3d81 Mon Sep 17 00:00:00 2001 From: ogerly Date: Tue, 9 Aug 2022 13:24:31 +0200 Subject: [PATCH 13/97] add yunite logo and branding scss file --- webapp/assets/styles/imports/_branding.scss | 6 ++ webapp/assets/styles/main.scss | 1 + webapp/components/Logo/Logo.vue | 4 +- webapp/components/Logo/style.scss | 2 +- webapp/layouts/default.vue | 4 +- webapp/static/img/custom/logo-horizontal.svg | 69 ++++--------------- webapp/static/img/custom/logo-squared.svg | 71 ++++---------------- 7 files changed, 36 insertions(+), 121 deletions(-) create mode 100644 webapp/assets/styles/imports/_branding.scss diff --git a/webapp/assets/styles/imports/_branding.scss b/webapp/assets/styles/imports/_branding.scss new file mode 100644 index 000000000..fb4c80970 --- /dev/null +++ b/webapp/assets/styles/imports/_branding.scss @@ -0,0 +1,6 @@ +.header-menu { + background-color: #748885; +} +.ds-menu-item-link { + color: antiquewhite; +} \ No newline at end of file diff --git a/webapp/assets/styles/main.scss b/webapp/assets/styles/main.scss index d6821e013..dc745585d 100644 --- a/webapp/assets/styles/main.scss +++ b/webapp/assets/styles/main.scss @@ -1,3 +1,4 @@ +@import './imports/_branding.scss'; @import './imports/_tooltip.scss'; @import './imports/_toast.scss'; diff --git a/webapp/components/Logo/Logo.vue b/webapp/components/Logo/Logo.vue index ed5c147e8..6e4dd3cbc 100644 --- a/webapp/components/Logo/Logo.vue +++ b/webapp/components/Logo/Logo.vue @@ -59,7 +59,7 @@ export default { }, data() { const logosObject = { - header: { path: logos.LOGO_HEADER_PATH, alt: 'Header', widthDefault: '130px' }, + header: { path: logos.LOGO_HEADER_PATH, alt: 'Header', widthDefault: '47px' }, welcome: { path: logos.LOGO_WELCOME_PATH, alt: 'Welcome', widthDefault: '200px' }, signup: { path: logos.LOGO_SIGNUP_PATH, alt: 'Sign Up', widthDefault: '200px' }, logout: { path: logos.LOGO_LOGOUT_PATH, alt: 'Logging Out', widthDefault: '200px' }, @@ -107,7 +107,7 @@ export default { } .ds-logo-svg { - width: 130px; + width: 47px; height: auto; fill: #000000; } diff --git a/webapp/components/Logo/style.scss b/webapp/components/Logo/style.scss index 305e907c5..aa153c8f6 100644 --- a/webapp/components/Logo/style.scss +++ b/webapp/components/Logo/style.scss @@ -11,7 +11,7 @@ } .ds-logo-svg { - width: 130px; + width: 47px; height: auto; fill: currentColor; } \ No newline at end of file diff --git a/webapp/layouts/default.vue b/webapp/layouts/default.vue index 503b22185..8e9f09616 100644 --- a/webapp/layouts/default.vue +++ b/webapp/layouts/default.vue @@ -4,7 +4,7 @@
- + @@ -17,7 +17,7 @@ - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + diff --git a/webapp/static/img/custom/logo-squared.svg b/webapp/static/img/custom/logo-squared.svg index 2a926f0a9..6ed4a3f62 100644 --- a/webapp/static/img/custom/logo-squared.svg +++ b/webapp/static/img/custom/logo-squared.svg @@ -1,65 +1,18 @@ - - - - - - - - - - - - - - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + From 3c11d1f468dfcf8806284ec704cf53a3911733df Mon Sep 17 00:00:00 2001 From: ogerly Date: Tue, 9 Aug 2022 13:27:24 +0200 Subject: [PATCH 14/97] fix lint --- webapp/layouts/default.vue | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/webapp/layouts/default.vue b/webapp/layouts/default.vue index 8e9f09616..4c5d9d0de 100644 --- a/webapp/layouts/default.vue +++ b/webapp/layouts/default.vue @@ -17,7 +17,12 @@ Date: Wed, 10 Aug 2022 08:05:54 +0200 Subject: [PATCH 15/97] remove grey from sccs branding --- webapp/assets/styles/imports/_branding.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/assets/styles/imports/_branding.scss b/webapp/assets/styles/imports/_branding.scss index fb4c80970..9a0d5a4e1 100644 --- a/webapp/assets/styles/imports/_branding.scss +++ b/webapp/assets/styles/imports/_branding.scss @@ -1,5 +1,5 @@ .header-menu { - background-color: #748885; + // background-color: #748885; } .ds-menu-item-link { color: antiquewhite; From afb5c719dcf42d165f640a83edd3ba2d46b75c1a Mon Sep 17 00:00:00 2001 From: ogerly Date: Wed, 10 Aug 2022 09:52:59 +0200 Subject: [PATCH 16/97] add color from yunite in branding --- webapp/assets/styles/imports/_branding.scss | 19 +++++++++++++++++++ webapp/assets/styles/main.scss | 3 ++- .../components/LocaleSwitch/LocaleSwitch.vue | 1 - webapp/constants/headerMenu.js | 4 ++++ webapp/layouts/default.vue | 2 +- 5 files changed, 26 insertions(+), 3 deletions(-) diff --git a/webapp/assets/styles/imports/_branding.scss b/webapp/assets/styles/imports/_branding.scss index 9a0d5a4e1..103ae9243 100644 --- a/webapp/assets/styles/imports/_branding.scss +++ b/webapp/assets/styles/imports/_branding.scss @@ -1,3 +1,22 @@ +.main-navigation { + background-color: #748885; +} +.main-navigation .ds-menu-item-link { + color: #c8fc4f;; +} + +.main-navigation .ds-menu-item-link:hover { + color: #f2f2f1;; +} + +.main-navigation .locale-menu { + color: #c8fc4f;; +} + +.base-button { + color: #c8fc4f; +} + .header-menu { // background-color: #748885; } diff --git a/webapp/assets/styles/main.scss b/webapp/assets/styles/main.scss index dc745585d..d797bbf4e 100644 --- a/webapp/assets/styles/main.scss +++ b/webapp/assets/styles/main.scss @@ -1,4 +1,3 @@ -@import './imports/_branding.scss'; @import './imports/_tooltip.scss'; @import './imports/_toast.scss'; @@ -181,3 +180,5 @@ hr { .dropdown-arrow { font-size: $font-size-xx-small; } + +@import './imports/_branding.scss'; \ No newline at end of file diff --git a/webapp/components/LocaleSwitch/LocaleSwitch.vue b/webapp/components/LocaleSwitch/LocaleSwitch.vue index 47e53028b..b302afd76 100644 --- a/webapp/components/LocaleSwitch/LocaleSwitch.vue +++ b/webapp/components/LocaleSwitch/LocaleSwitch.vue @@ -117,7 +117,6 @@ export default { align-items: center; height: 100%; padding: $space-xx-small; - color: $text-color-soft; > .label { margin: 0 $space-xx-small; diff --git a/webapp/constants/headerMenu.js b/webapp/constants/headerMenu.js index 1dfed43d8..06eae4109 100644 --- a/webapp/constants/headerMenu.js +++ b/webapp/constants/headerMenu.js @@ -1,6 +1,10 @@ export default { SHOW_HEADER_MENU: true, MENU: [ + { + name: 'BeitrΓ€ge', + path: '/#', + }, { name: 'Themen', path: '/#', diff --git a/webapp/layouts/default.vue b/webapp/layouts/default.vue index 4c5d9d0de..b8a377aec 100644 --- a/webapp/layouts/default.vue +++ b/webapp/layouts/default.vue @@ -40,7 +40,7 @@
Date: Thu, 11 Aug 2022 04:25:39 +0000 Subject: [PATCH 17/97] Bump vue-sweetalert-icons from 4.3.0 to 4.3.1 in /webapp Bumps [vue-sweetalert-icons](https://github.com/JorgenVatle/vue-sweetalert-icons) from 4.3.0 to 4.3.1. - [Release notes](https://github.com/JorgenVatle/vue-sweetalert-icons/releases) - [Commits](https://github.com/JorgenVatle/vue-sweetalert-icons/compare/v4.3.0...v4.3.1) --- updated-dependencies: - dependency-name: vue-sweetalert-icons dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- webapp/package.json | 2 +- webapp/yarn.lock | 325 +++----------------------------------------- 2 files changed, 21 insertions(+), 306 deletions(-) diff --git a/webapp/package.json b/webapp/package.json index 234149521..5b6b381a0 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -99,7 +99,7 @@ "vue-izitoast": "^1.2.1", "vue-observe-visibility": "^1.0.0", "vue-scrollto": "^2.20.0", - "vue-sweetalert-icons": "~4.3.0", + "vue-sweetalert-icons": "~4.3.1", "vuex-i18n": "~1.13.1", "xregexp": "^4.3.0", "zxcvbn": "^4.4.2" diff --git a/webapp/yarn.lock b/webapp/yarn.lock index ef71a2a53..0b7dcf028 100644 --- a/webapp/yarn.lock +++ b/webapp/yarn.lock @@ -5538,11 +5538,6 @@ alphanum-sort@^1.0.0: resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM= -amdefine@>=0.0.4: - version "1.0.1" - resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" - integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= - ansi-align@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" @@ -6223,11 +6218,6 @@ array-filter@~0.0.0: resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw= -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= - array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -6392,11 +6382,6 @@ async-each@^1.0.1: resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== -async-foreach@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" - integrity sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI= - async-limiter@~1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" @@ -7016,13 +7001,6 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= - dependencies: - inherits "~2.0.0" - bluebird@^3.1.1, bluebird@^3.5.1: version "3.5.4" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.4.tgz#d6cc661595de30d5b3af5fcedd3c0b3ef6ec5714" @@ -7450,19 +7428,6 @@ camelcase-css@2.0.1: resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" @@ -7567,7 +7532,7 @@ chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.0, chalk@^2.3. escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: +chalk@^1.0.0, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= @@ -8568,14 +8533,6 @@ cross-spawn@7.0.3: shebang-command "^2.0.0" which "^2.0.1" -cross-spawn@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-3.0.1.tgz#1256037ecb9f0c5f79e3d6ef135e30770184b982" - integrity sha1-ElYDfsufDF9549bvE14wdwGEuYI= - dependencies: - lru-cache "^4.0.1" - which "^1.2.9" - cross-spawn@^5.0.1: version "5.1.0" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" @@ -8915,13 +8872,6 @@ cuint@^0.2.2: resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" integrity sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs= -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= - dependencies: - array-find-index "^1.0.1" - cyclist@~0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-0.2.2.tgz#1b33792e11e914a2fd6d6ed6447464444e5fa640" @@ -9000,7 +8950,7 @@ debug@^3.0.0, debug@^3.0.1, debug@^3.1.0, debug@^3.2.6: dependencies: ms "^2.1.1" -decamelize@^1.1.1, decamelize@^1.1.2, decamelize@^1.2.0: +decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -10805,16 +10755,6 @@ fsevents@~2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== -fstream@^1.0.0, fstream@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" - integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - function-bind@^1.0.2, function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -10859,7 +10799,7 @@ gauge@~2.7.3: strip-ansi "^3.0.1" wide-align "^1.1.0" -gaze@1.1.3, gaze@^1.0.0: +gaze@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/gaze/-/gaze-1.1.3.tgz#c441733e13b927ac8c0ff0b4c3b033f28812924a" integrity sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g== @@ -10911,11 +10851,6 @@ get-intrinsic@^1.0.2: has "^1.0.3" has-symbols "^1.0.1" -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= - get-stdin@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" @@ -11046,7 +10981,7 @@ glob@7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.1.1: +glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.1.1: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -11995,18 +11930,6 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -in-publish@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" - integrity sha1-4g/146KvwmkDILbcVSaCqcf631E= - -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= - dependencies: - repeating "^2.0.0" - indent-string@^3.0.0, indent-string@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" @@ -12035,7 +11958,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.0, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -12359,13 +12282,6 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= - dependencies: - number-is-nan "^1.0.0" - is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -13215,11 +13131,6 @@ jimp-compact@^0.8.0: resolved "https://registry.yarnpkg.com/jimp-compact/-/jimp-compact-0.8.4.tgz#0878a0c30f22d2d4f8b33e96722eb09d20770627" integrity sha512-9mvZ7/TJ28bWtdx0RxmfiOTzSom4zuRniFTLtJHfNL6HxQdnRtjmX8XIRjmofgVXj2TW/GgSuZKB3dSZ5hNhKg== -js-base64@^2.1.8: - version "2.5.1" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" - integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw== - js-beautify@^1.6.12: version "1.10.2" resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.10.2.tgz#88c9099cd6559402b124cfab18754936f8a7b178" @@ -13754,7 +13665,7 @@ loader-utils@^0.2.16: json5 "^0.5.0" object-assign "^4.0.1" -loader-utils@^1.0.1, loader-utils@^1.0.2, loader-utils@^1.0.4, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: +loader-utils@^1.0.2, loader-utils@^1.0.4, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== @@ -13913,7 +13824,7 @@ lodash.xorby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.xorby/-/lodash.xorby-4.7.0.tgz#9c19a6f9f063a6eb53dd03c1b6871799801463d7" integrity sha1-nBmm+fBjputT3QPBtocXmYAUY9c= -lodash@4.x, lodash@^4.0.0, lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@~4.17.10: +lodash@4.x, lodash@^4.15.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@~4.17.10: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -13958,14 +13869,6 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - lower-case-first@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-1.0.2.tgz#e5da7c26f29a7073be02d52bac9980e5922adfa1" @@ -14102,11 +14005,6 @@ map-cache@^0.2.2: resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= - map-or-similar@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/map-or-similar/-/map-or-similar-1.5.0.tgz#6de2653174adfb5d9edc33c69d3e92a1b76faf08" @@ -14229,22 +14127,6 @@ mensch@0.3.4: resolved "https://registry.yarnpkg.com/mensch/-/mensch-0.3.4.tgz#770f91b46cb16ea5b204ee735768c3f0c491fecd" integrity sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g== -meow@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -14420,7 +14302,7 @@ minimist@^0.1.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de" integrity sha1-md9lelJXTCHJBXSX33QnkLK0wN4= -minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: +minimist@^1.1.1, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= @@ -14512,7 +14394,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: +mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3, mkdirp@~0.5.1: version "0.5.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.4.tgz#fd01504a6797ec5c9be81ff43d204961ed64a512" integrity sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw== @@ -14566,7 +14448,7 @@ mute-stream@0.0.8: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nan@^2.12.1, nan@^2.13.2: +nan@^2.12.1: version "2.13.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7" integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw== @@ -14685,24 +14567,6 @@ node-fetch@^2.1.2, node-fetch@^2.2.0, node-fetch@^2.6.0, node-fetch@^2.6.1: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== -node-gyp@^3.8.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" - integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== - dependencies: - fstream "^1.0.0" - glob "^7.0.3" - graceful-fs "^4.1.2" - mkdirp "^0.5.0" - nopt "2 || 3" - npmlog "0 || 1 || 2 || 3 || 4" - osenv "0" - request "^2.87.0" - rimraf "2" - semver "~5.3.0" - tar "^2.0.0" - which "1" - node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -14816,29 +14680,6 @@ node-res@^5.0.1: on-finished "^2.3.0" vary "^1.1.2" -node-sass@^4.12.0: - version "4.13.1" - resolved "https://registry.yarnpkg.com/node-sass/-/node-sass-4.13.1.tgz#9db5689696bb2eec2c32b98bfea4c7a2e992d0a3" - integrity sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw== - dependencies: - async-foreach "^0.1.3" - chalk "^1.1.1" - cross-spawn "^3.0.0" - gaze "^1.0.0" - get-stdin "^4.0.1" - glob "^7.0.3" - in-publish "^2.0.0" - lodash "^4.17.15" - meow "^3.7.0" - mkdirp "^0.5.1" - nan "^2.13.2" - node-gyp "^3.8.0" - npmlog "^4.0.0" - request "^2.88.0" - sass-graph "^2.2.4" - stdout-stream "^1.4.0" - "true-case-path" "^1.0.2" - nodemon@^1.19.4: version "1.19.4" resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-1.19.4.tgz#56db5c607408e0fdf8920d2b444819af1aae0971" @@ -14855,13 +14696,6 @@ nodemon@^1.19.4: undefsafe "^2.0.2" update-notifier "^2.5.0" -"nopt@2 || 3": - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= - dependencies: - abbrev "1" - nopt@^4.0.1, nopt@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" @@ -14877,7 +14711,7 @@ nopt@~1.0.10: dependencies: abbrev "1" -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: +normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -14953,7 +14787,7 @@ npm-run-path@^4.0.0: dependencies: path-key "^3.0.0" -"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.0, npmlog@^4.0.2, npmlog@^4.1.2: +npmlog@^4.0.2, npmlog@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== @@ -15273,7 +15107,7 @@ os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@0, osenv@^0.1.4: +osenv@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== @@ -17627,14 +17461,6 @@ recursive-readdir@2.2.2: dependencies: minimatch "3.0.4" -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - redeyed@~2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-2.1.1.tgz#8984b5815d99cb220469c99eeeffe38913e6cc0b" @@ -17887,13 +17713,6 @@ repeat-string@^1.5.4, repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= - dependencies: - is-finite "^1.0.0" - request-promise-core@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" @@ -17910,7 +17729,7 @@ request-promise-native@^1.0.5, request-promise-native@^1.0.8: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -"request@>=2.76.0 <3.0.0", request@^2.87.0, request@^2.88.0, request@^2.88.2: +"request@>=2.76.0 <3.0.0", request@^2.87.0, request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -18062,7 +17881,7 @@ rgba-regex@^1.0.0: resolved "https://registry.yarnpkg.com/rgba-regex/-/rgba-regex-1.0.0.tgz#43374e2e2ca0968b0ef1523460b7d730ff22eeb3" integrity sha1-QzdOLiyglosO8VI0YLfXMP8i7rM= -rimraf@2, rimraf@2.6.3, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@~2.6.2: +rimraf@2.6.3, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3, rimraf@~2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -18183,27 +18002,6 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sass-graph@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" - integrity sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k= - dependencies: - glob "^7.0.0" - lodash "^4.0.0" - scss-tokenizer "^0.2.3" - yargs "^7.0.0" - -sass-loader@^7.1.0: - version "7.3.1" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-7.3.1.tgz#a5bf68a04bcea1c13ff842d747150f7ab7d0d23f" - integrity sha512-tuU7+zm0pTCynKYHpdqaPpe+MMTQ76I9TPZ7i4/5dZsigE350shQWe5EZNl5dBidM49TPET75tNqRbcsUZWeNA== - dependencies: - clone-deep "^4.0.1" - loader-utils "^1.0.1" - neo-async "^2.5.0" - pify "^4.0.1" - semver "^6.3.0" - sass-loader@~10.1.1: version "10.1.1" resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.1.1.tgz#4ddd5a3d7638e7949065dd6e9c7c04037f7e663d" @@ -18296,14 +18094,6 @@ schema-utils@^3.0.0: ajv "^6.12.5" ajv-keywords "^3.5.2" -scss-tokenizer@^0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz#8eb06db9a9723333824d3f5530641149847ce5d1" - integrity sha1-jrBtualyMzOCTT9VMGQRSYR85dE= - dependencies: - js-base64 "^2.1.8" - source-map "^0.4.2" - select@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d" @@ -18345,11 +18135,6 @@ semver@^7.3.4: dependencies: lru-cache "^6.0.0" -semver@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= - send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -18739,13 +18524,6 @@ source-map@0.5.6: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" integrity sha1-dc449SvwczxafwwRjYEzSiu19BI= -source-map@^0.4.2: - version "0.4.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" - integrity sha1-66T12pwNyZneaAMti092FzZSA2s= - dependencies: - amdefine ">=0.0.4" - source-map@^0.5.0, source-map@^0.5.3, source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -18905,13 +18683,6 @@ std-env@^2.2.1: dependencies: ci-info "^1.6.0" -stdout-stream@^1.4.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/stdout-stream/-/stdout-stream-1.4.1.tgz#5ac174cdd5cd726104aa0c0b2bd83815d8d535de" - integrity sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA== - dependencies: - readable-stream "^2.0.1" - stealthy-require@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" @@ -19212,13 +18983,6 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= - dependencies: - get-stdin "^4.0.1" - strip-json-comments@^2.0.0, strip-json-comments@~2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -19420,15 +19184,6 @@ tapable@^1.0.0, tapable@^1.0.0-beta.5, tapable@^1.1.3: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tar@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" - integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== - dependencies: - block-stream "*" - fstream "^1.0.12" - inherits "2" - tar@^4: version "4.4.8" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" @@ -19888,11 +19643,6 @@ treeify@^1.1.0: resolved "https://registry.yarnpkg.com/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8" integrity sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A== -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= - trim-trailing-lines@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz#bd4abbec7cc880462f10b2c8b5ce1d8d1ec7c2c0" @@ -19908,13 +19658,6 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== -"true-case-path@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-1.0.3.tgz#f813b5a8c86b40da59606722b144e3225799f47d" - integrity sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew== - dependencies: - glob "^7.1.2" - trunc-html@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/trunc-html/-/trunc-html-1.1.2.tgz#1e97d51f67d470b67662b1a670e6d0ea7a8edafe" @@ -20878,14 +20621,12 @@ vue-svg-loader@~0.16.0: loader-utils "^1.2.3" svg-to-vue "^0.7.0" -vue-sweetalert-icons@~4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/vue-sweetalert-icons/-/vue-sweetalert-icons-4.3.0.tgz#0808632cb6bfa67bf07afab1ae683352c038af7d" - integrity sha512-8SgzgyqppIj/gQt6Y5JLXPnqt1pEq50w6TeQ1B3aVd1mWm3gHTeWHWujiycjouo8too1fgtWkn3mi16vumKSJw== +vue-sweetalert-icons@~4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/vue-sweetalert-icons/-/vue-sweetalert-icons-4.3.1.tgz#dad763abb5084b015ba3e209dd28dcf1371b030c" + integrity sha512-FqKcMB8Ebgb32UyzvhIBzj23U0NRP91cTXovDYfYwNHpJ1TAFBEHoemgyu01h2Wp+UJhytvQ+13GL+GAs8QkWw== dependencies: color "^3.1.2" - node-sass "^4.12.0" - sass-loader "^7.1.0" validate-color "^2.1.0" vue-template-compiler@^2.6.11: @@ -21228,7 +20969,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@1, which@^1.2.9, which@^1.3.1: +which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -21515,13 +21256,6 @@ yargs-parser@^4.2.0: dependencies: camelcase "^3.0.0" -yargs-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" - integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= - dependencies: - camelcase "^3.0.0" - yargs@6.6.0: version "6.6.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.6.0.tgz#782ec21ef403345f830a808ca3d513af56065208" @@ -21558,25 +21292,6 @@ yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" - integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "^5.0.0" - yargs@~1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/yargs/-/yargs-1.2.6.tgz#9c7b4a82fd5d595b2bf17ab6dcc43135432fe34b" From 2d0ba9982bc1ce7db6d96af878aa2bd9e11a14ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 15 Aug 2022 12:17:16 +0200 Subject: [PATCH 18/97] Add '--logHeapUsage' to jest test call --- backend/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/package.json b/backend/package.json index 62188a650..e619874af 100644 --- a/backend/package.json +++ b/backend/package.json @@ -15,7 +15,7 @@ "dev": "nodemon --exec babel-node src/ -e js,gql", "dev:debug": "nodemon --exec babel-node --inspect=0.0.0.0:9229 src/ -e js,gql", "lint": "eslint src --config .eslintrc.js", - "test": "cross-env NODE_ENV=test jest --forceExit --detectOpenHandles --runInBand --coverage", + "test": "cross-env NODE_ENV=test jest --forceExit --detectOpenHandles --runInBand --coverage --logHeapUsage", "db:clean": "babel-node src/db/clean.js", "db:reset": "yarn run db:clean", "db:seed": "babel-node src/db/seed.js", From 73559242d6ec363419fd92bbf5871300f4ab8789 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Aug 2022 06:44:19 +0000 Subject: [PATCH 19/97] Bump cross-env from 7.0.2 to 7.0.3 in /webapp Bumps [cross-env](https://github.com/kentcdodds/cross-env) from 7.0.2 to 7.0.3. - [Release notes](https://github.com/kentcdodds/cross-env/releases) - [Changelog](https://github.com/kentcdodds/cross-env/blob/master/CHANGELOG.md) - [Commits](https://github.com/kentcdodds/cross-env/compare/v7.0.2...v7.0.3) --- updated-dependencies: - dependency-name: cross-env dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- webapp/package.json | 2 +- webapp/yarn.lock | 19 +++++-------------- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/webapp/package.json b/webapp/package.json index 234149521..deb8bfa79 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -75,7 +75,7 @@ "apollo-client": "~2.6.8", "cookie-universal-nuxt": "~2.1.5", "cropperjs": "^1.5.5", - "cross-env": "~7.0.2", + "cross-env": "~7.0.3", "date-fns": "2.22.1", "express": "~4.17.1", "graphql": "~14.7.0", diff --git a/webapp/yarn.lock b/webapp/yarn.lock index ef71a2a53..a39404fdc 100644 --- a/webapp/yarn.lock +++ b/webapp/yarn.lock @@ -8544,10 +8544,10 @@ cropperjs@^1.5.5: resolved "https://registry.yarnpkg.com/cropperjs/-/cropperjs-1.5.6.tgz#82faf432bec709d828f2f7a96d1179198edaf0e2" integrity sha512-eAgWf4j7sNJIG329qUHIFi17PSV0VtuWyAu9glZSgu/KlQSrfTQOC2zAz+jHGa5fAB+bJldEnQwvJEaJ8zRf5A== -cross-env@~7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.2.tgz#bd5ed31339a93a3418ac4f3ca9ca3403082ae5f9" - integrity sha512-KZP/bMEOJEDCkDQAyRhu3RL2ZO/SUVrxQVI0G3YEQ+OLbRA3c6zgixe8Mq8a/z7+HKlNEjo8oiLUs8iRijY2Rw== +cross-env@~7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" + integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== dependencies: cross-spawn "^7.0.1" @@ -8559,7 +8559,7 @@ cross-fetch@^3.0.4: node-fetch "2.6.0" whatwg-fetch "3.0.0" -cross-spawn@7.0.3: +cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -8596,15 +8596,6 @@ cross-spawn@^6.0.0, cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.1.tgz#0ab56286e0f7c24e153d04cc2aa027e43a9a5d14" - integrity sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - crypto-browserify@^3.11.0: version "3.12.0" resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" From 92f4b7b813db1a58acc24b2fb6043e438ad266dd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Aug 2022 04:17:15 +0000 Subject: [PATCH 20/97] Bump slug from 5.1.0 to 6.0.0 Bumps [slug](https://github.com/Trott/slug) from 5.1.0 to 6.0.0. - [Release notes](https://github.com/Trott/slug/releases) - [Changelog](https://github.com/Trott/slug/blob/main/CHANGELOG.md) - [Commits](https://github.com/Trott/slug/compare/v5.1.0...v6.0.0) --- updated-dependencies: - dependency-name: slug dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 7756ac8e6..a36063f04 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "neode": "^0.4.7", "npm-run-all": "^4.1.5", "rosie": "^2.1.0", - "slug": "^5.1.0" + "slug": "^6.0.0" }, "resolutions": { "set-value": "^2.0.1" diff --git a/yarn.lock b/yarn.lock index 4e2303801..7b1c5eb79 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5426,10 +5426,10 @@ slice-ansi@0.0.4: resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= -slug@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/slug/-/slug-5.1.0.tgz#8a7e30ca1c3a6dc40cf74e269750913a865edb0b" - integrity sha512-IS39jKR6m+puU8zWgH6ruwx1sfzFNJ6Ai5PKIlUqd0X8C3ca7PB49Cvm0uayqgEt1jgaojO2wWEsQJngnh7fDA== +slug@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/slug/-/slug-6.0.0.tgz#39637b32e5a873bc692812a630842880499ed6c9" + integrity sha512-0MpNLyCSUSf0G1nAZmp9gY1cvesPP35a1Live25vZ23gWQ5SAopF0N+0hk9KI4ytNuTebJrHGNrgTnxboofcSg== snapdragon-node@^2.0.1: version "2.1.1" From b7077d3b4b864734973792fb9df0d3fadd3c0cfe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Aug 2022 04:50:20 +0000 Subject: [PATCH 21/97] Bump slug from 4.0.2 to 6.0.0 in /backend Bumps [slug](https://github.com/Trott/slug) from 4.0.2 to 6.0.0. - [Release notes](https://github.com/Trott/slug/releases) - [Changelog](https://github.com/Trott/slug/blob/main/CHANGELOG.md) - [Commits](https://github.com/Trott/slug/compare/v4.0.2...v6.0.0) --- updated-dependencies: - dependency-name: slug dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- backend/package.json | 2 +- backend/yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/package.json b/backend/package.json index e619874af..9c576db94 100644 --- a/backend/package.json +++ b/backend/package.json @@ -110,7 +110,7 @@ "npm-run-all": "~4.1.5", "request": "~2.88.2", "sanitize-html": "~1.22.0", - "slug": "~4.0.2", + "slug": "~6.0.0", "subscriptions-transport-ws": "^0.9.19", "trunc-html": "~1.1.2", "uuid": "~8.3.2", diff --git a/backend/yarn.lock b/backend/yarn.lock index 24bd00b3a..32eeb6b24 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -9262,10 +9262,10 @@ slug@^0.9.2: dependencies: unicode ">= 0.3.1" -slug@~4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/slug/-/slug-4.0.2.tgz#35a62b4e71582778ac08bb30a1bf439fd0a43ea7" - integrity sha512-c5XbWkwxHU13gAdSvBHQgnGy2sxv/REMz0ugcM0SOSBCO/N4wfU0TDBC3pgdOwVGjZwGnLBTRljXzdVYE+KYNw== +slug@~6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/slug/-/slug-6.0.0.tgz#39637b32e5a873bc692812a630842880499ed6c9" + integrity sha512-0MpNLyCSUSf0G1nAZmp9gY1cvesPP35a1Live25vZ23gWQ5SAopF0N+0hk9KI4ytNuTebJrHGNrgTnxboofcSg== smart-buffer@^4.1.0: version "4.1.0" From 9312e66b154b60e41da6ad8cf867b0d3ae0c6cfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Mon, 22 Aug 2022 12:53:27 +0200 Subject: [PATCH 22/97] Add bigger JS heap size to backend tests --- backend/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/package.json b/backend/package.json index e619874af..c19019ca1 100644 --- a/backend/package.json +++ b/backend/package.json @@ -15,7 +15,7 @@ "dev": "nodemon --exec babel-node src/ -e js,gql", "dev:debug": "nodemon --exec babel-node --inspect=0.0.0.0:9229 src/ -e js,gql", "lint": "eslint src --config .eslintrc.js", - "test": "cross-env NODE_ENV=test jest --forceExit --detectOpenHandles --runInBand --coverage --logHeapUsage", + "test": "cross-env NODE_ENV=test NODE_OPTIONS=--max-old-space-size=8192 jest --forceExit --detectOpenHandles --runInBand --coverage --logHeapUsage", "db:clean": "babel-node src/db/clean.js", "db:reset": "yarn run db:clean", "db:seed": "babel-node src/db/seed.js", From a22023174d4b9c7afc24530331daf6c7c85fb3fc Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 22 Aug 2022 18:33:12 +0200 Subject: [PATCH 23/97] feat: Show Categories Filter when Categories are Active --- webapp/components/FilterMenu/FilterMenu.vue | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/webapp/components/FilterMenu/FilterMenu.vue b/webapp/components/FilterMenu/FilterMenu.vue index 9e211ccf9..84c7c1f67 100644 --- a/webapp/components/FilterMenu/FilterMenu.vue +++ b/webapp/components/FilterMenu/FilterMenu.vue @@ -14,6 +14,7 @@

{{ $t('filter-menu.filter-by') }}

+

{{ $t('filter-menu.order-by') }}

@@ -28,17 +29,24 @@ import Dropdown from '~/components/Dropdown' import { mapGetters } from 'vuex' import FollowingFilter from './FollowingFilter' import OrderByFilter from './OrderByFilter' +import CategoriesFilter from './CategoriesFilter' export default { components: { Dropdown, FollowingFilter, + CategoriesFilter, OrderByFilter, }, props: { placement: { type: String }, offset: { type: [String, Number] }, }, + data() { + return { + categoriesActive: this.$env.CATEGORIES_ACTIVE, + } + }, computed: { ...mapGetters({ filterActive: 'posts/isActive', From eddaa96d367e2be279eb5dfcbf3b0560b35357cb Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 22 Aug 2022 18:52:42 +0200 Subject: [PATCH 24/97] add movement icon --- webapp/assets/_new/icons/svgs/movement.svg | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 webapp/assets/_new/icons/svgs/movement.svg diff --git a/webapp/assets/_new/icons/svgs/movement.svg b/webapp/assets/_new/icons/svgs/movement.svg new file mode 100644 index 000000000..ac5cd9cc0 --- /dev/null +++ b/webapp/assets/_new/icons/svgs/movement.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + From c1f1408f6c7670f9305643b7440e5c9af0b17beb Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 22 Aug 2022 19:17:50 +0200 Subject: [PATCH 25/97] add yunite categories --- backend/src/constants/categories.js | 98 +++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 backend/src/constants/categories.js diff --git a/backend/src/constants/categories.js b/backend/src/constants/categories.js new file mode 100644 index 000000000..d38f64b1a --- /dev/null +++ b/backend/src/constants/categories.js @@ -0,0 +1,98 @@ +export const categories = [ + { + icon: 'users', + name: 'networking', + description: 'Kooperation, AktionsbΓΌndnisse, SolidaritΓ€t, Hilfe', + }, + { + icon: 'home', + name: 'home', + description: 'Bauen, Lebensgemeinschaften, Tiny Houses, GemΓΌsegarten', + }, + { + icon: 'lightbulb', + name: 'energy', + description: 'Γ–l, Gas, Kohle, Wind, Wasserkraft, Biogas, Atomenergie, ...', + }, + { + icon: 'smile', + name: 'psyche', + description: 'Seele, GefΓΌhle, GlΓΌck', + }, + { + icon: 'movement', + name: 'body-and-excercise', + description: 'Sport, Yoga, Massage, Tanzen, Entspannung', + }, + { + icon: 'balance-scale', + name: 'law', + description: 'Menschenrechte, Gesetze, Verordnungen', + }, + { + icon: 'money', + name: 'finance', + description: 'Geld, Finanzsystem, AlternativwΓ€hrungen, ...', + }, + { + icon: 'child', + name: 'children', + description: 'Familie, PΓ€dagogik, Schule, PrΓ€gung', + }, + { + icon: 'suitcase', + name: 'mobility', + description: 'Reise, Verkehr, ElektromobilitΓ€t', + }, + { + icon: 'shopping-cart', + name: 'economy', + description: 'Handel, Konsum, Marketing, Lebensmittel, Lieferketten, ...', + }, + { + icon: 'angellist', + name: 'peace', + description: 'Krieg, MilitΓ€r, soziale Verteidigung, Waffen, Cyberattacken', + }, + { + icon: 'university', + name: 'politics', + description: 'Demokratie, Mitbestimmung, Wahlen, Korruption, Parteien', + }, + { + icon: 'tree', + name: 'nature', + description: 'Tiere, Pflanzen, Landwirtschaft, Γ–kologie, Artenvielfalt', + }, + { + icon: 'graduation-cap', + name: 'science', + description: 'Bildung, Hochschule, Publikationen, ...', + }, + { + icon: 'medkit', + name: 'health', + description: 'Medizin, ErnΓ€hrung, WHO, Impfungen, Schadstoffe, ...', + }, + { + icon: 'desktop', + name: 'IT-and-media', + description: + 'Nachrichten, Manipulation, Datenschutz, Überwachung, Datenkraken, AI, Software, Apps', + }, + { + icon: 'heart-o', + name: 'spirituality', + description: 'Religion, Werte, Ethik', + }, + { + icon: 'music', + name: 'culture', + description: 'Kunst, Theater, Musik, Fotografie, Film', + }, + { + icon: 'ellipsis-h', + name: 'miscellaneous', + description: '', + }, +] From 6425e5d172fa06020f46d1c3a9d1fcf5266c9cf2 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 22 Aug 2022 19:44:20 +0200 Subject: [PATCH 26/97] seed categories on db:migrate init --- backend/src/db/migrate/store.js | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/backend/src/db/migrate/store.js b/backend/src/db/migrate/store.js index 377caf0b0..0361e874b 100644 --- a/backend/src/db/migrate/store.js +++ b/backend/src/db/migrate/store.js @@ -1,6 +1,8 @@ import { getDriver, getNeode } from '../../db/neo4j' import { hashSync } from 'bcryptjs' import { v4 as uuid } from 'uuid' +import { categories } from '../../constants/categories' +import CONFIG from '../../config' const defaultAdmin = { email: 'admin@example.org', @@ -10,6 +12,27 @@ const defaultAdmin = { slug: 'admin', } +const createCategories = async (session) => { + const createCategoriesTxResultPromise = session.writeTransaction(async (txc) => { + categories.forEach(({ icon, name }, index) => { + const id = `cat${index + 1}` + txc.run( + `MERGE (c:Category { + icon: "${icon}", + slug: "${name}", + id: "${id}", + createdAt: toString(datetime()) + })`, + ) + }) + }) + try { + await createCategoriesTxResultPromise + } catch (error) { + console.log(`Error creating categories: ${error}`) // eslint-disable-line no-console + } +} + const createDefaultAdminUser = async (session) => { const readTxResultPromise = session.readTransaction(async (txc) => { const result = await txc.run('MATCH (user:User) RETURN count(user) AS userCount') @@ -58,6 +81,7 @@ class Store { const { driver } = neode const session = driver.session() await createDefaultAdminUser(session) + if (CONFIG.CATEGORIES_ACTIVE) await createCategories(session) const writeTxResultPromise = session.writeTransaction(async (txc) => { await txc.run('CALL apoc.schema.assert({},{},true)') // drop all indices return Promise.all( From 5b7bdc02913e7b3aad12dced5725441010e34045 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 22 Aug 2022 19:56:35 +0200 Subject: [PATCH 27/97] seed Yunite categories --- backend/src/db/factories.js | 1 - backend/src/db/seed.js | 106 +++------------------------------ backend/src/models/Category.js | 4 +- 3 files changed, 10 insertions(+), 101 deletions(-) diff --git a/backend/src/db/factories.js b/backend/src/db/factories.js index 3e164d51b..f46ac10ee 100644 --- a/backend/src/db/factories.js +++ b/backend/src/db/factories.js @@ -35,7 +35,6 @@ export const cleanDatabase = async (options = {}) => { Factory.define('category') .attr('id', uuid) .attr('icon', 'globe') - .attr('name', 'Global Peace & Nonviolence') .after((buildObject, options) => { return neode.create('Category', buildObject) }) diff --git a/backend/src/db/seed.js b/backend/src/db/seed.js index 46c5870e0..eb79d5aa2 100644 --- a/backend/src/db/seed.js +++ b/backend/src/db/seed.js @@ -6,6 +6,7 @@ import faker from '@faker-js/faker' import Factory from '../db/factories' import { getNeode, getDriver } from '../db/neo4j' import { gql } from '../helpers/jest' +import { categories } from '../constants/categories' if (CONFIG.PRODUCTION && !CONFIG.PRODUCTION_DB_CLEAN_ALLOW) { throw new Error(`You cannot seed the database in a non-staging and real production environment!`) @@ -267,104 +268,15 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl'] dagobert.relateTo(louie, 'blocked'), ]) - await Promise.all([ - Factory.build('category', { - id: 'cat1', - name: 'Just For Fun', - slug: 'just-for-fun', - icon: 'smile', + await Promise.all( + categories.map(({ icon, name }, index) => { + Factory.build('category', { + id: `cat${index + 1}`, + slug: name, + icon, + }) }), - Factory.build('category', { - id: 'cat2', - name: 'Happiness & Values', - slug: 'happiness-values', - icon: 'heart-o', - }), - Factory.build('category', { - id: 'cat3', - name: 'Health & Wellbeing', - slug: 'health-wellbeing', - icon: 'medkit', - }), - Factory.build('category', { - id: 'cat4', - name: 'Environment & Nature', - slug: 'environment-nature', - icon: 'tree', - }), - Factory.build('category', { - id: 'cat5', - name: 'Animal Protection', - slug: 'animal-protection', - icon: 'paw', - }), - Factory.build('category', { - id: 'cat6', - name: 'Human Rights & Justice', - slug: 'human-rights-justice', - icon: 'balance-scale', - }), - Factory.build('category', { - id: 'cat7', - name: 'Education & Sciences', - slug: 'education-sciences', - icon: 'graduation-cap', - }), - Factory.build('category', { - id: 'cat8', - name: 'Cooperation & Development', - slug: 'cooperation-development', - icon: 'users', - }), - Factory.build('category', { - id: 'cat9', - name: 'Democracy & Politics', - slug: 'democracy-politics', - icon: 'university', - }), - Factory.build('category', { - id: 'cat10', - name: 'Economy & Finances', - slug: 'economy-finances', - icon: 'money', - }), - Factory.build('category', { - id: 'cat11', - name: 'Energy & Technology', - slug: 'energy-technology', - icon: 'flash', - }), - Factory.build('category', { - id: 'cat12', - name: 'IT, Internet & Data Privacy', - slug: 'it-internet-data-privacy', - icon: 'mouse-pointer', - }), - Factory.build('category', { - id: 'cat13', - name: 'Art, Culture & Sport', - slug: 'art-culture-sport', - icon: 'paint-brush', - }), - Factory.build('category', { - id: 'cat14', - name: 'Freedom of Speech', - slug: 'freedom-of-speech', - icon: 'bullhorn', - }), - Factory.build('category', { - id: 'cat15', - name: 'Consumption & Sustainability', - slug: 'consumption-sustainability', - icon: 'shopping-cart', - }), - Factory.build('category', { - id: 'cat16', - name: 'Global Peace & Nonviolence', - slug: 'global-peace-nonviolence', - icon: 'angellist', - }), - ]) + ) const [environment, nature, democracy, freedom] = await Promise.all([ Factory.build('tag', { diff --git a/backend/src/models/Category.js b/backend/src/models/Category.js index ea617adc8..8d87ac0e2 100644 --- a/backend/src/models/Category.js +++ b/backend/src/models/Category.js @@ -2,15 +2,13 @@ import { v4 as uuid } from 'uuid' export default { id: { type: 'string', primary: true, default: uuid }, - name: { type: 'string', required: true, default: false }, slug: { type: 'string', unique: 'true' }, icon: { type: 'string', required: true, default: false }, createdAt: { type: 'string', isoDate: true, default: () => new Date().toISOString() }, updatedAt: { type: 'string', isoDate: true, - required: true, - default: () => new Date().toISOString(), + required: false, }, post: { type: 'relationship', From 25c8fe275f61c886f7634e68565fd7aa87875343 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 22 Aug 2022 20:11:21 +0200 Subject: [PATCH 28/97] add locales for yunite categories --- backend/src/constants/categories.js | 2 +- webapp/locales/de.json | 35 ++++++++++++++++------------- webapp/locales/en.json | 35 ++++++++++++++++------------- 3 files changed, 39 insertions(+), 33 deletions(-) diff --git a/backend/src/constants/categories.js b/backend/src/constants/categories.js index d38f64b1a..146131453 100644 --- a/backend/src/constants/categories.js +++ b/backend/src/constants/categories.js @@ -76,7 +76,7 @@ export const categories = [ }, { icon: 'desktop', - name: 'IT-and-media', + name: 'it-and-media', description: 'Nachrichten, Manipulation, Datenschutz, Überwachung, Datenkraken, AI, Software, Apps', }, diff --git a/webapp/locales/de.json b/webapp/locales/de.json index 297daa511..dee8d086a 100644 --- a/webapp/locales/de.json +++ b/webapp/locales/de.json @@ -218,22 +218,25 @@ }, "category": { "name": { - "animal-protection": "Schutz der Tiere", - "art-culture-sport": "Kunst, Kultur & Sport", - "consumption-sustainability": "Verbrauch & Nachhaltigkeit", - "cooperation-development": "Zusammenarbeit & Entwicklung", - "democracy-politics": "Demokratie & Politik", - "economy-finances": "Wirtschaft & Finanzen", - "education-sciences": "Bildung & Wissenschaft", - "energy-technology": "Energie & Technologie", - "environment-nature": "Umwelt & Natur", - "freedom-of-speech": "Redefreiheit", - "global-peace-nonviolence": "Globaler Frieden & Gewaltlosigkeit", - "happiness-values": "GlΓΌck & Werte", - "health-wellbeing": "Gesundheit & Wohlbefinden", - "human-rights-justice": "Menschenrechte & Gerechtigkeit", - "it-internet-data-privacy": "IT, Internet & Datenschutz", - "just-for-fun": "Nur zum Spaß" + "body-and-excercise": "KΓΆrper & Bewegung", + "children": "Kinder", + "culture": "Kultur", + "economy": "Wirtschaft", + "energy": "Energie", + "finance": "Finanzen", + "health": "Gesundheit", + "home": "Wohnen", + "it-and-media": "IT & Medien", + "law": "Recht", + "miscellaneous": "Sonstiges", + "mobility": "MobilitΓ€t", + "nature": "Natur", + "networking": "Vernetzung", + "peace": "Frieden", + "politics": "Politik", + "psyche": "Psyche", + "science": "Wissenschaft", + "spirituality": "SpiritualitΓ€t" } }, "emotions-label": { diff --git a/webapp/locales/en.json b/webapp/locales/en.json index 8499b0290..d6172c257 100644 --- a/webapp/locales/en.json +++ b/webapp/locales/en.json @@ -218,22 +218,25 @@ }, "category": { "name": { - "animal-protection": "Animal Protection", - "art-culture-sport": "Art, Culture, & Sport", - "consumption-sustainability": "Consumption & Sustainability", - "cooperation-development": "Cooperation & Development", - "democracy-politics": "Democracy & Politics", - "economy-finances": "Economy & Finances", - "education-sciences": "Education & Sciences", - "energy-technology": "Energy & Technology", - "environment-nature": "Environment & Nature", - "freedom-of-speech": "Freedom of Speech", - "global-peace-nonviolence": "Global Peace & Nonviolence", - "happiness-values": "Happiness & Values", - "health-wellbeing": "Health & Wellbeing", - "human-rights-justice": "Human Rights & Justice", - "it-internet-data-privacy": "IT, Internet & Data Privacy", - "just-for-fun": "Just for Fun" + "body-and-excercise": "Body & Excercise", + "children": "Children", + "culture": "Culture", + "economy": "Economy", + "energy": "Energy", + "finance": "Finance", + "health": "Health", + "home": "Home", + "it-and-media": "IT & Media", + "law": "Law", + "miscellaneous": "Miscellaneous", + "mobility": "Mobility", + "nature": "Nature", + "networking": "Networking", + "peace": "Peace", + "politics": "Politics", + "psyche": "Psyche", + "science": "Science", + "spirituality": "Spirituality" } }, "emotions-label": { From ad4497786ce9b26171846a9fa9881dc67aa9f371 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 22 Aug 2022 20:29:04 +0200 Subject: [PATCH 29/97] add missing items for categories --- webapp/assets/_new/icons/svgs/child.svg | 5 +++++ webapp/assets/_new/icons/svgs/desktop.svg | 5 +++++ webapp/assets/_new/icons/svgs/ellipsis-h.svg | 5 +++++ webapp/assets/_new/icons/svgs/home.svg | 5 +++++ webapp/assets/_new/icons/svgs/lightbulb.svg | 5 +++++ webapp/assets/_new/icons/svgs/music.svg | 5 +++++ webapp/assets/_new/icons/svgs/suitcase.svg | 5 +++++ 7 files changed, 35 insertions(+) create mode 100644 webapp/assets/_new/icons/svgs/child.svg create mode 100644 webapp/assets/_new/icons/svgs/desktop.svg create mode 100644 webapp/assets/_new/icons/svgs/ellipsis-h.svg create mode 100644 webapp/assets/_new/icons/svgs/home.svg create mode 100644 webapp/assets/_new/icons/svgs/lightbulb.svg create mode 100644 webapp/assets/_new/icons/svgs/music.svg create mode 100644 webapp/assets/_new/icons/svgs/suitcase.svg diff --git a/webapp/assets/_new/icons/svgs/child.svg b/webapp/assets/_new/icons/svgs/child.svg new file mode 100644 index 000000000..fcb5651f0 --- /dev/null +++ b/webapp/assets/_new/icons/svgs/child.svg @@ -0,0 +1,5 @@ + + +child + + diff --git a/webapp/assets/_new/icons/svgs/desktop.svg b/webapp/assets/_new/icons/svgs/desktop.svg new file mode 100644 index 000000000..ba1ef8431 --- /dev/null +++ b/webapp/assets/_new/icons/svgs/desktop.svg @@ -0,0 +1,5 @@ + + +desktop + + diff --git a/webapp/assets/_new/icons/svgs/ellipsis-h.svg b/webapp/assets/_new/icons/svgs/ellipsis-h.svg new file mode 100644 index 000000000..eb7deeab0 --- /dev/null +++ b/webapp/assets/_new/icons/svgs/ellipsis-h.svg @@ -0,0 +1,5 @@ + + +ellipsis-h + + diff --git a/webapp/assets/_new/icons/svgs/home.svg b/webapp/assets/_new/icons/svgs/home.svg new file mode 100644 index 000000000..b1a13b06f --- /dev/null +++ b/webapp/assets/_new/icons/svgs/home.svg @@ -0,0 +1,5 @@ + + +home + + diff --git a/webapp/assets/_new/icons/svgs/lightbulb.svg b/webapp/assets/_new/icons/svgs/lightbulb.svg new file mode 100644 index 000000000..1c19c81b1 --- /dev/null +++ b/webapp/assets/_new/icons/svgs/lightbulb.svg @@ -0,0 +1,5 @@ + + +lightbulb-o + + diff --git a/webapp/assets/_new/icons/svgs/music.svg b/webapp/assets/_new/icons/svgs/music.svg new file mode 100644 index 000000000..b84b87800 --- /dev/null +++ b/webapp/assets/_new/icons/svgs/music.svg @@ -0,0 +1,5 @@ + + +music + + diff --git a/webapp/assets/_new/icons/svgs/suitcase.svg b/webapp/assets/_new/icons/svgs/suitcase.svg new file mode 100644 index 000000000..ceca5cbad --- /dev/null +++ b/webapp/assets/_new/icons/svgs/suitcase.svg @@ -0,0 +1,5 @@ + + +suitcase + + From d948067f44a1d6caf492dde222d97564d824940c Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 22 Aug 2022 20:47:37 +0200 Subject: [PATCH 30/97] add category name again to seed and init to avoid conflicts with graphql model --- backend/src/db/factories.js | 1 + backend/src/db/migrate/store.js | 1 + backend/src/db/seed.js | 1 + backend/src/models/Category.js | 1 + backend/src/schema/resolvers/posts.js | 2 +- 5 files changed, 5 insertions(+), 1 deletion(-) diff --git a/backend/src/db/factories.js b/backend/src/db/factories.js index f46ac10ee..3e164d51b 100644 --- a/backend/src/db/factories.js +++ b/backend/src/db/factories.js @@ -35,6 +35,7 @@ export const cleanDatabase = async (options = {}) => { Factory.define('category') .attr('id', uuid) .attr('icon', 'globe') + .attr('name', 'Global Peace & Nonviolence') .after((buildObject, options) => { return neode.create('Category', buildObject) }) diff --git a/backend/src/db/migrate/store.js b/backend/src/db/migrate/store.js index 0361e874b..61d591cb7 100644 --- a/backend/src/db/migrate/store.js +++ b/backend/src/db/migrate/store.js @@ -20,6 +20,7 @@ const createCategories = async (session) => { `MERGE (c:Category { icon: "${icon}", slug: "${name}", + name: "${name}", id: "${id}", createdAt: toString(datetime()) })`, diff --git a/backend/src/db/seed.js b/backend/src/db/seed.js index eb79d5aa2..482517e69 100644 --- a/backend/src/db/seed.js +++ b/backend/src/db/seed.js @@ -273,6 +273,7 @@ const languages = ['de', 'en', 'es', 'fr', 'it', 'pt', 'pl'] Factory.build('category', { id: `cat${index + 1}`, slug: name, + name, icon, }) }), diff --git a/backend/src/models/Category.js b/backend/src/models/Category.js index 8d87ac0e2..9a3f47fd0 100644 --- a/backend/src/models/Category.js +++ b/backend/src/models/Category.js @@ -2,6 +2,7 @@ import { v4 as uuid } from 'uuid' export default { id: { type: 'string', primary: true, default: uuid }, + name: { type: 'string', required: true, default: false }, slug: { type: 'string', unique: 'true' }, icon: { type: 'string', required: true, default: false }, createdAt: { type: 'string', isoDate: true, default: () => new Date().toISOString() }, diff --git a/backend/src/schema/resolvers/posts.js b/backend/src/schema/resolvers/posts.js index b09bb3edd..d9a04732c 100644 --- a/backend/src/schema/resolvers/posts.js +++ b/backend/src/schema/resolvers/posts.js @@ -358,7 +358,7 @@ export default { undefinedToNull: ['activityId', 'objectId', 'language', 'pinnedAt', 'pinned'], hasMany: { tags: '-[:TAGGED]->(related:Tag)', - // categories: '-[:CATEGORIZED]->(related:Category)', + categories: '-[:CATEGORIZED]->(related:Category)', comments: '<-[:COMMENTS]-(related:Comment)', shoutedBy: '<-[:SHOUTED]-(related:User)', emotions: '<-[related:EMOTED]', From 15ce0702886d1fdc00b0e9ba5f70a74af03f9055 Mon Sep 17 00:00:00 2001 From: Tima Gixe Date: Thu, 25 Aug 2022 09:08:14 +0300 Subject: [PATCH 31/97] Update tests to expect `Not Authorized!` --- .../middleware/permissionsMiddleware.spec.js | 10 +++---- backend/src/schema/resolvers/comments.spec.js | 14 +++++----- .../src/schema/resolvers/donations.spec.js | 8 +++--- backend/src/schema/resolvers/emails.spec.js | 4 +-- backend/src/schema/resolvers/follow.spec.js | 4 +-- .../src/schema/resolvers/moderation.spec.js | 12 ++++----- .../schema/resolvers/notifications.spec.js | 4 +-- backend/src/schema/resolvers/posts.spec.js | 26 +++++++++---------- .../src/schema/resolvers/registration.spec.js | 2 +- backend/src/schema/resolvers/reports.spec.js | 6 ++--- backend/src/schema/resolvers/rewards.spec.js | 8 +++--- backend/src/schema/resolvers/shout.spec.js | 4 +-- .../src/schema/resolvers/socialMedia.spec.js | 12 ++++----- .../schema/resolvers/user_management.spec.js | 4 +-- backend/src/schema/resolvers/users.spec.js | 6 ++--- .../schema/resolvers/users/mutedUsers.spec.js | 6 ++--- .../ContributionForm/ContributionForm.spec.js | 4 +-- .../components/DeleteData/DeleteData.spec.js | 4 +-- webapp/components/Modal/DisableModal.spec.js | 4 +-- .../ReleaseModal/ReleaseModal.spec.js | 4 +-- 20 files changed, 73 insertions(+), 73 deletions(-) diff --git a/backend/src/middleware/permissionsMiddleware.spec.js b/backend/src/middleware/permissionsMiddleware.spec.js index e29e0a4af..9d71314bb 100644 --- a/backend/src/middleware/permissionsMiddleware.spec.js +++ b/backend/src/middleware/permissionsMiddleware.spec.js @@ -102,7 +102,7 @@ describe('authorization', () => { await expect( query({ query: userQuery, variables: { name: 'Owner' } }), ).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], data: { User: [null] }, }) }) @@ -132,7 +132,7 @@ describe('authorization', () => { await expect( query({ query: userQuery, variables: { name: 'Owner' } }), ).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], data: { User: [null] }, }) }) @@ -147,7 +147,7 @@ describe('authorization', () => { await expect( query({ query: userQuery, variables: { name: 'Owner' } }), ).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], data: { User: [null] }, }) }) @@ -198,7 +198,7 @@ describe('authorization', () => { it('denies permission', async () => { await expect(mutate({ mutation: signupMutation, variables })).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], data: { Signup: null }, }) }) @@ -288,7 +288,7 @@ describe('authorization', () => { it('denies permission', async () => { await expect(mutate({ mutation: signupMutation, variables })).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], data: { Signup: null }, }) }) diff --git a/backend/src/schema/resolvers/comments.spec.js b/backend/src/schema/resolvers/comments.spec.js index cbd2b98fc..f0081b726 100644 --- a/backend/src/schema/resolvers/comments.spec.js +++ b/backend/src/schema/resolvers/comments.spec.js @@ -88,10 +88,10 @@ describe('CreateComment', () => { variables = { ...variables, postId: 'p1', - content: "I'm not authorised to comment", + content: "I'm Not Authorized to comment", } const { errors } = await mutate({ mutation: createCommentMutation, variables }) - expect(errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(errors[0]).toHaveProperty('message', 'Not Authorized!') }) }) @@ -150,7 +150,7 @@ describe('UpdateComment', () => { describe('unauthenticated', () => { it('throws authorization error', async () => { const { errors } = await mutate({ mutation: updateCommentMutation, variables }) - expect(errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(errors[0]).toHaveProperty('message', 'Not Authorized!') }) }) @@ -162,7 +162,7 @@ describe('UpdateComment', () => { it('throws authorization error', async () => { const { errors } = await mutate({ mutation: updateCommentMutation, variables }) - expect(errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(errors[0]).toHaveProperty('message', 'Not Authorized!') }) }) @@ -217,7 +217,7 @@ describe('UpdateComment', () => { it('returns null', async () => { const { data, errors } = await mutate({ mutation: updateCommentMutation, variables }) expect(data).toMatchObject({ UpdateComment: null }) - expect(errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(errors[0]).toHaveProperty('message', 'Not Authorized!') }) }) }) @@ -242,7 +242,7 @@ describe('DeleteComment', () => { describe('unauthenticated', () => { it('throws authorization error', async () => { const result = await mutate({ mutation: deleteCommentMutation, variables }) - expect(result.errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(result.errors[0]).toHaveProperty('message', 'Not Authorized!') }) }) @@ -254,7 +254,7 @@ describe('DeleteComment', () => { it('throws authorization error', async () => { const { errors } = await mutate({ mutation: deleteCommentMutation, variables }) - expect(errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(errors[0]).toHaveProperty('message', 'Not Authorized!') }) }) diff --git a/backend/src/schema/resolvers/donations.spec.js b/backend/src/schema/resolvers/donations.spec.js index a9210f6a5..11df0c67b 100644 --- a/backend/src/schema/resolvers/donations.spec.js +++ b/backend/src/schema/resolvers/donations.spec.js @@ -72,7 +72,7 @@ describe('donations', () => { it('throws authorization error', async () => { authenticatedUser = undefined await expect(query({ query: donationsQuery, variables })).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) }) @@ -106,7 +106,7 @@ describe('donations', () => { await expect( mutate({ mutation: updateDonationsMutation, variables }), ).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) }) @@ -126,7 +126,7 @@ describe('donations', () => { mutate({ mutation: updateDonationsMutation, variables }), ).resolves.toMatchObject({ data: { UpdateDonations: null }, - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) }) @@ -145,7 +145,7 @@ describe('donations', () => { mutate({ mutation: updateDonationsMutation, variables }), ).resolves.toMatchObject({ data: { UpdateDonations: null }, - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) }) diff --git a/backend/src/schema/resolvers/emails.spec.js b/backend/src/schema/resolvers/emails.spec.js index 39b70ac0b..b527ca3b0 100644 --- a/backend/src/schema/resolvers/emails.spec.js +++ b/backend/src/schema/resolvers/emails.spec.js @@ -63,7 +63,7 @@ describe('AddEmailAddress', () => { it('throws AuthorizationError', async () => { await expect(mutate({ mutation, variables })).resolves.toMatchObject({ data: { AddEmailAddress: null }, - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) }) @@ -169,7 +169,7 @@ describe('VerifyEmailAddress', () => { it('throws AuthorizationError', async () => { await expect(mutate({ mutation, variables })).resolves.toMatchObject({ data: { VerifyEmailAddress: null }, - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) }) diff --git a/backend/src/schema/resolvers/follow.spec.js b/backend/src/schema/resolvers/follow.spec.js index 9cc8403e5..e0b2a277a 100644 --- a/backend/src/schema/resolvers/follow.spec.js +++ b/backend/src/schema/resolvers/follow.spec.js @@ -117,7 +117,7 @@ describe('follow', () => { variables, }), ).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], data: { followUser: null }, }) }) @@ -191,7 +191,7 @@ describe('follow', () => { authenticatedUser = null await expect(mutate({ mutation: mutationUnfollowUser, variables })).resolves.toMatchObject({ data: { unfollowUser: null }, - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) }) diff --git a/backend/src/schema/resolvers/moderation.spec.js b/backend/src/schema/resolvers/moderation.spec.js index 662be41bd..3c2926c14 100644 --- a/backend/src/schema/resolvers/moderation.spec.js +++ b/backend/src/schema/resolvers/moderation.spec.js @@ -120,7 +120,7 @@ describe('moderate resources', () => { await expect( mutate({ mutation: reviewMutation, variables: disableVariables }), ).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) }) @@ -134,7 +134,7 @@ describe('moderate resources', () => { await expect( mutate({ mutation: reviewMutation, variables: disableVariables }), ).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) }) @@ -218,7 +218,7 @@ describe('moderate resources', () => { await expect( mutate({ mutation: reviewMutation, variables: disableVariables }), ).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) }) @@ -232,7 +232,7 @@ describe('moderate resources', () => { await expect( mutate({ mutation: reviewMutation, variables: disableVariables }), ).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) }) @@ -488,7 +488,7 @@ describe('moderate resources', () => { await expect( mutate({ mutation: reviewMutation, variables: enableVariables }), ).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) }) @@ -507,7 +507,7 @@ describe('moderate resources', () => { await expect( mutate({ mutation: reviewMutation, variables: enableVariables }), ).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) }) diff --git a/backend/src/schema/resolvers/notifications.spec.js b/backend/src/schema/resolvers/notifications.spec.js index 2ea468914..924154488 100644 --- a/backend/src/schema/resolvers/notifications.spec.js +++ b/backend/src/schema/resolvers/notifications.spec.js @@ -165,7 +165,7 @@ describe('given some notifications', () => { describe('unauthenticated', () => { it('throws authorization error', async () => { const { errors } = await query({ query: notificationQuery }) - expect(errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(errors[0]).toHaveProperty('message', 'Not Authorized!') }) }) @@ -313,7 +313,7 @@ describe('given some notifications', () => { mutation: markAsReadMutation, variables: { ...variables, id: 'p1' }, }) - expect(result.errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(result.errors[0]).toHaveProperty('message', 'Not Authorized!') }) }) diff --git a/backend/src/schema/resolvers/posts.spec.js b/backend/src/schema/resolvers/posts.spec.js index 2c8b7e90b..52bd8fcd0 100644 --- a/backend/src/schema/resolvers/posts.spec.js +++ b/backend/src/schema/resolvers/posts.spec.js @@ -281,7 +281,7 @@ describe('CreatePost', () => { describe('unauthenticated', () => { it('throws authorization error', async () => { const { errors } = await mutate({ mutation: createPostMutation, variables }) - expect(errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(errors[0]).toHaveProperty('message', 'Not Authorized!') }) }) @@ -369,7 +369,7 @@ describe('UpdatePost', () => { it('throws authorization error', async () => { authenticatedUser = null expect(mutate({ mutation: updatePostMutation, variables })).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], data: { UpdatePost: null }, }) }) @@ -382,7 +382,7 @@ describe('UpdatePost', () => { it('throws authorization error', async () => { const { errors } = await mutate({ mutation: updatePostMutation, variables }) - expect(errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(errors[0]).toHaveProperty('message', 'Not Authorized!') }) }) @@ -547,7 +547,7 @@ describe('pin posts', () => { it('throws authorization error', async () => { authenticatedUser = null await expect(mutate({ mutation: pinPostMutation, variables })).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], data: { pinPost: null }, }) }) @@ -556,7 +556,7 @@ describe('pin posts', () => { describe('ordinary users', () => { it('throws authorization error', async () => { await expect(mutate({ mutation: pinPostMutation, variables })).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], data: { pinPost: null }, }) }) @@ -571,7 +571,7 @@ describe('pin posts', () => { it('throws authorization error', async () => { await expect(mutate({ mutation: pinPostMutation, variables })).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], data: { pinPost: null }, }) }) @@ -854,7 +854,7 @@ describe('unpin posts', () => { it('throws authorization error', async () => { authenticatedUser = null await expect(mutate({ mutation: unpinPostMutation, variables })).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], data: { unpinPost: null }, }) }) @@ -863,7 +863,7 @@ describe('unpin posts', () => { describe('users cannot unpin posts', () => { it('throws authorization error', async () => { await expect(mutate({ mutation: unpinPostMutation, variables })).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], data: { unpinPost: null }, }) }) @@ -878,7 +878,7 @@ describe('unpin posts', () => { it('throws authorization error', async () => { await expect(mutate({ mutation: unpinPostMutation, variables })).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], data: { unpinPost: null }, }) }) @@ -975,7 +975,7 @@ describe('DeletePost', () => { describe('unauthenticated', () => { it('throws authorization error', async () => { const { errors } = await mutate({ mutation: deletePostMutation, variables }) - expect(errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(errors[0]).toHaveProperty('message', 'Not Authorized!') }) }) @@ -986,7 +986,7 @@ describe('DeletePost', () => { it('throws authorization error', async () => { const { errors } = await mutate({ mutation: deletePostMutation, variables }) - expect(errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(errors[0]).toHaveProperty('message', 'Not Authorized!') }) }) @@ -1128,7 +1128,7 @@ describe('emotions', () => { variables, }) - expect(addPostEmotions.errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(addPostEmotions.errors[0]).toHaveProperty('message', 'Not Authorized!') }) }) @@ -1249,7 +1249,7 @@ describe('emotions', () => { mutation: removePostEmotionsMutation, variables: removePostEmotionsVariables, }) - expect(removePostEmotions.errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(removePostEmotions.errors[0]).toHaveProperty('message', 'Not Authorized!') }) }) diff --git a/backend/src/schema/resolvers/registration.spec.js b/backend/src/schema/resolvers/registration.spec.js index 573af1d35..ebe36456b 100644 --- a/backend/src/schema/resolvers/registration.spec.js +++ b/backend/src/schema/resolvers/registration.spec.js @@ -61,7 +61,7 @@ describe('Signup', () => { CONFIG.INVITE_REGISTRATION = false CONFIG.PUBLIC_REGISTRATION = false await expect(mutate({ mutation, variables })).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) diff --git a/backend/src/schema/resolvers/reports.spec.js b/backend/src/schema/resolvers/reports.spec.js index 09d0869fc..7cf4d9a34 100644 --- a/backend/src/schema/resolvers/reports.spec.js +++ b/backend/src/schema/resolvers/reports.spec.js @@ -130,7 +130,7 @@ describe('file a report on a resource', () => { authenticatedUser = null await expect(mutate({ mutation: fileReportMutation, variables })).resolves.toMatchObject({ data: { fileReport: null }, - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) }) @@ -729,7 +729,7 @@ describe('file a report on a resource', () => { authenticatedUser = null expect(query({ query: reportsQuery })).resolves.toMatchObject({ data: { reports: null }, - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) }) @@ -739,7 +739,7 @@ describe('file a report on a resource', () => { authenticatedUser = await currentUser.toJson() expect(query({ query: reportsQuery })).resolves.toMatchObject({ data: { reports: null }, - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) diff --git a/backend/src/schema/resolvers/rewards.spec.js b/backend/src/schema/resolvers/rewards.spec.js index 718378699..f44cf51f6 100644 --- a/backend/src/schema/resolvers/rewards.spec.js +++ b/backend/src/schema/resolvers/rewards.spec.js @@ -97,7 +97,7 @@ describe('rewards', () => { authenticatedUser = null await expect(mutate({ mutation: rewardMutation, variables })).resolves.toMatchObject({ data: { reward: null }, - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) }) @@ -255,7 +255,7 @@ describe('rewards', () => { it('throws authorization error', async () => { await expect(mutate({ mutation: rewardMutation, variables })).resolves.toMatchObject({ data: { reward: null }, - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) }) @@ -308,7 +308,7 @@ describe('rewards', () => { authenticatedUser = null await expect(mutate({ mutation: unrewardMutation, variables })).resolves.toMatchObject({ data: { unreward: null }, - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) }) @@ -341,7 +341,7 @@ describe('rewards', () => { it('throws authorization error', async () => { await expect(mutate({ mutation: unrewardMutation, variables })).resolves.toMatchObject({ data: { unreward: null }, - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) }) diff --git a/backend/src/schema/resolvers/shout.spec.js b/backend/src/schema/resolvers/shout.spec.js index a4e9890d5..087c452da 100644 --- a/backend/src/schema/resolvers/shout.spec.js +++ b/backend/src/schema/resolvers/shout.spec.js @@ -90,7 +90,7 @@ describe('shout and unshout posts', () => { variables = { id: 'post-to-shout-id' } authenticatedUser = undefined await expect(mutate({ mutation: mutationShoutPost, variables })).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) }) @@ -165,7 +165,7 @@ describe('shout and unshout posts', () => { authenticatedUser = undefined variables = { id: 'post-to-shout-id' } await expect(mutate({ mutation: mutationUnshoutPost, variables })).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) }) diff --git a/backend/src/schema/resolvers/socialMedia.spec.js b/backend/src/schema/resolvers/socialMedia.spec.js index bb7886c3f..fc9ee8f70 100644 --- a/backend/src/schema/resolvers/socialMedia.spec.js +++ b/backend/src/schema/resolvers/socialMedia.spec.js @@ -94,7 +94,7 @@ describe('SocialMedia', () => { const user = null const result = await socialMediaAction(user, mutation, variables) - expect(result.errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(result.errors[0]).toHaveProperty('message', 'Not Authorized!') }) }) @@ -186,7 +186,7 @@ describe('SocialMedia', () => { const user = null const result = await socialMediaAction(user, mutation, variables) - expect(result.errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(result.errors[0]).toHaveProperty('message', 'Not Authorized!') }) }) @@ -195,7 +195,7 @@ describe('SocialMedia', () => { const user = someUser const result = await socialMediaAction(user, mutation, variables) - expect(result.errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(result.errors[0]).toHaveProperty('message', 'Not Authorized!') }) }) @@ -222,7 +222,7 @@ describe('SocialMedia', () => { variables.id = 'some-id' const result = await socialMediaAction(user, mutation, variables) - expect(result.errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(result.errors[0]).toHaveProperty('message', 'Not Authorized!') }) }) }) @@ -249,7 +249,7 @@ describe('SocialMedia', () => { const user = null const result = await socialMediaAction(user, mutation, variables) - expect(result.errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(result.errors[0]).toHaveProperty('message', 'Not Authorized!') }) }) @@ -258,7 +258,7 @@ describe('SocialMedia', () => { const user = someUser const result = await socialMediaAction(user, mutation, variables) - expect(result.errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(result.errors[0]).toHaveProperty('message', 'Not Authorized!') }) }) diff --git a/backend/src/schema/resolvers/user_management.spec.js b/backend/src/schema/resolvers/user_management.spec.js index 2dcb14855..264cf2752 100644 --- a/backend/src/schema/resolvers/user_management.spec.js +++ b/backend/src/schema/resolvers/user_management.spec.js @@ -310,8 +310,8 @@ describe('change password', () => { }) describe('unauthenticated', () => { - it('throws "Not Authorised!"', async () => { - await respondsWith({ errors: [{ message: 'Not Authorised!' }] }) + it('throws "Not Authorized!"', async () => { + await respondsWith({ errors: [{ message: 'Not Authorized!' }] }) }) }) diff --git a/backend/src/schema/resolvers/users.spec.js b/backend/src/schema/resolvers/users.spec.js index 9a88dc945..920ef52ea 100644 --- a/backend/src/schema/resolvers/users.spec.js +++ b/backend/src/schema/resolvers/users.spec.js @@ -101,7 +101,7 @@ describe('User', () => { it('is forbidden', async () => { await expect(query({ query: userQuery, variables })).resolves.toMatchObject({ - errors: [{ message: 'Not Authorised!' }], + errors: [{ message: 'Not Authorized!' }], }) }) @@ -207,7 +207,7 @@ describe('UpdateUser', () => { it('is not allowed to change other user accounts', async () => { const { errors } = await mutate({ mutation: updateUserMutation, variables }) - expect(errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(errors[0]).toHaveProperty('message', 'Not Authorized!') }) }) @@ -500,7 +500,7 @@ describe('switch user role', () => { expect.objectContaining({ errors: [ expect.objectContaining({ - message: 'Not Authorised!', + message: 'Not Authorized!', }), ], }), diff --git a/backend/src/schema/resolvers/users/mutedUsers.spec.js b/backend/src/schema/resolvers/users/mutedUsers.spec.js index 36b526268..d8efacfae 100644 --- a/backend/src/schema/resolvers/users/mutedUsers.spec.js +++ b/backend/src/schema/resolvers/users/mutedUsers.spec.js @@ -58,7 +58,7 @@ describe('mutedUsers', () => { it('throws permission error', async () => { const { query } = createTestClient(server) const result = await query({ query: mutedUserQuery }) - expect(result.errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(result.errors[0]).toHaveProperty('message', 'Not Authorized!') }) describe('authenticated and given a muted user', () => { @@ -116,7 +116,7 @@ describe('muteUser', () => { it('throws permission error', async () => { const result = await muteAction({ id: 'u2' }) - expect(result.errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(result.errors[0]).toHaveProperty('message', 'Not Authorized!') }) describe('authenticated', () => { @@ -333,7 +333,7 @@ describe('unmuteUser', () => { it('throws permission error', async () => { const result = await unmuteAction({ id: 'u2' }) - expect(result.errors[0]).toHaveProperty('message', 'Not Authorised!') + expect(result.errors[0]).toHaveProperty('message', 'Not Authorized!') }) describe('authenticated', () => { diff --git a/webapp/components/ContributionForm/ContributionForm.spec.js b/webapp/components/ContributionForm/ContributionForm.spec.js index ce432fc42..f5083a8a0 100644 --- a/webapp/components/ContributionForm/ContributionForm.spec.js +++ b/webapp/components/ContributionForm/ContributionForm.spec.js @@ -202,7 +202,7 @@ describe('ContributionForm.vue', () => { beforeEach(async () => { jest.useFakeTimers() mocks.$apollo.mutate = jest.fn().mockRejectedValueOnce({ - message: 'Not Authorised!', + message: 'Not Authorized!', }) wrapper = Wrapper() postTitleInput = wrapper.find('.ds-input') @@ -213,7 +213,7 @@ describe('ContributionForm.vue', () => { it('shows an error toaster when apollo mutation rejects', async () => { await wrapper.find('form').trigger('submit') await mocks.$apollo.mutate - await expect(mocks.$toast.error).toHaveBeenCalledWith('Not Authorised!') + await expect(mocks.$toast.error).toHaveBeenCalledWith('Not Authorized!') }) }) }) diff --git a/webapp/components/DeleteData/DeleteData.spec.js b/webapp/components/DeleteData/DeleteData.spec.js index 70f98424a..c540c9832 100644 --- a/webapp/components/DeleteData/DeleteData.spec.js +++ b/webapp/components/DeleteData/DeleteData.spec.js @@ -29,7 +29,7 @@ describe('DeleteData.vue', () => { }, }, }) - .mockRejectedValue({ message: 'Not authorised!' }), + .mockRejectedValue({ message: 'Not Authorized!' }), }, $toast: { error: jest.fn(), @@ -180,7 +180,7 @@ describe('DeleteData.vue', () => { // second submission causes mutation to reject await deleteAccountBtn.trigger('click') await mocks.$apollo.mutate - expect(mocks.$toast.error).toHaveBeenCalledWith('Not authorised!') + expect(mocks.$toast.error).toHaveBeenCalledWith('Not Authorized!') }) }) }) diff --git a/webapp/components/Modal/DisableModal.spec.js b/webapp/components/Modal/DisableModal.spec.js index ed306a6cc..b7e52b5a0 100644 --- a/webapp/components/Modal/DisableModal.spec.js +++ b/webapp/components/Modal/DisableModal.spec.js @@ -25,7 +25,7 @@ describe('DisableModal.vue', () => { $t: jest.fn(), $apollo: { mutate: jest.fn().mockResolvedValueOnce().mockRejectedValue({ - message: 'Not Authorised!', + message: 'Not Authorized!', }), }, location: { @@ -184,7 +184,7 @@ describe('DisableModal.vue', () => { }) it('shows an error toaster when mutation rejects', async () => { - await expect(mocks.$toast.error).toHaveBeenCalledWith('Not Authorised!') + await expect(mocks.$toast.error).toHaveBeenCalledWith('Not Authorized!') }) }) }) diff --git a/webapp/components/ReleaseModal/ReleaseModal.spec.js b/webapp/components/ReleaseModal/ReleaseModal.spec.js index d1dafa5c9..9cded646f 100644 --- a/webapp/components/ReleaseModal/ReleaseModal.spec.js +++ b/webapp/components/ReleaseModal/ReleaseModal.spec.js @@ -25,7 +25,7 @@ describe('ReleaseModal.vue', () => { }, $t: jest.fn(), $apollo: { - mutate: jest.fn().mockResolvedValueOnce().mockRejectedValue({ message: 'Not Authorised!' }), + mutate: jest.fn().mockResolvedValueOnce().mockRejectedValue({ message: 'Not Authorized!' }), }, location: { reload: jest.fn(), @@ -181,7 +181,7 @@ describe('ReleaseModal.vue', () => { }) it('shows an error toaster when mutation rejects', async () => { - await expect(mocks.$toast.error).toHaveBeenCalledWith('Not Authorised!') + await expect(mocks.$toast.error).toHaveBeenCalledWith('Not Authorized!') }) }) }) From c83096fe3967ac6667416b107f0e4d1643927780 Mon Sep 17 00:00:00 2001 From: Tima Gixe Date: Thu, 25 Aug 2022 09:10:59 +0300 Subject: [PATCH 32/97] Adjust comments test to expect `authorized` --- backend/src/schema/resolvers/comments.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/src/schema/resolvers/comments.spec.js b/backend/src/schema/resolvers/comments.spec.js index f0081b726..addcf9591 100644 --- a/backend/src/schema/resolvers/comments.spec.js +++ b/backend/src/schema/resolvers/comments.spec.js @@ -107,14 +107,14 @@ describe('CreateComment', () => { variables = { ...variables, postId: 'p1', - content: "I'm authorised to comment", + content: "I'm authorized to comment", } }) it('creates a comment', async () => { await expect(mutate({ mutation: createCommentMutation, variables })).resolves.toMatchObject( { - data: { CreateComment: { content: "I'm authorised to comment" } }, + data: { CreateComment: { content: "I'm authorized to comment" } }, errors: undefined, }, ) From f0157442b9357c0a64ad5b38e0fce5f5bf435c95 Mon Sep 17 00:00:00 2001 From: Tima Gixe Date: Thu, 25 Aug 2022 09:11:23 +0300 Subject: [PATCH 33/97] Provide custom fallbackError to graphql-shield --- backend/src/middleware/permissionsMiddleware.js | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/src/middleware/permissionsMiddleware.js b/backend/src/middleware/permissionsMiddleware.js index b10389f50..b5ce4fe07 100644 --- a/backend/src/middleware/permissionsMiddleware.js +++ b/backend/src/middleware/permissionsMiddleware.js @@ -188,5 +188,6 @@ export default shield( debug, allowExternalErrors, fallbackRule: allow, + fallbackError: Error('Not Authorized!'), }, ) From c40179ebaf50dc754747408eb9bf121faa94a71c Mon Sep 17 00:00:00 2001 From: Tima Gixe <60817786+timagixe@users.noreply.github.com> Date: Thu, 25 Aug 2022 11:17:34 +0300 Subject: [PATCH 34/97] Update PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 6cfe4c30c..8117660d2 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,4 +1,4 @@ -## 🍰 Pullrequest +## 🍰 Pull Request ### Issues From 4031605467fad8c52d072d97f30d6d1bd1aca90e Mon Sep 17 00:00:00 2001 From: Tima Gixe Date: Thu, 25 Aug 2022 12:43:55 +0300 Subject: [PATCH 35/97] Revert comment's content --- backend/src/schema/resolvers/comments.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/schema/resolvers/comments.spec.js b/backend/src/schema/resolvers/comments.spec.js index addcf9591..33b33ed3e 100644 --- a/backend/src/schema/resolvers/comments.spec.js +++ b/backend/src/schema/resolvers/comments.spec.js @@ -88,7 +88,7 @@ describe('CreateComment', () => { variables = { ...variables, postId: 'p1', - content: "I'm Not Authorized to comment", + content: "I'm not authorized to comment", } const { errors } = await mutate({ mutation: createCommentMutation, variables }) expect(errors[0]).toHaveProperty('message', 'Not Authorized!') From 966d515bafba2d522c45d1775a78f8d52a9e42d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 25 Aug 2022 12:16:32 +0200 Subject: [PATCH 36/97] Update PULL_REQUEST_TEMPLATE.md --- .github/PULL_REQUEST_TEMPLATE.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 8117660d2..655c5cc93 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,13 +1,15 @@ ## 🍰 Pull Request +XXX + ### Issues - + - fixes #XXX - relates #XXX ---> -- None ### Todo -- [X] None + +- [ ] XXX list here … From 407f4f8d2d27605c41fb529c0f514e9fea5e7bd8 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 25 Aug 2022 13:29:08 +0200 Subject: [PATCH 37/97] fix test (mock .CATEGORIES_ACTIVE) --- webapp/components/FilterMenu/FilterMenu.spec.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/webapp/components/FilterMenu/FilterMenu.spec.js b/webapp/components/FilterMenu/FilterMenu.spec.js index 9e7ebfec0..6e9741e79 100644 --- a/webapp/components/FilterMenu/FilterMenu.spec.js +++ b/webapp/components/FilterMenu/FilterMenu.spec.js @@ -8,6 +8,9 @@ let wrapper describe('FilterMenu.vue', () => { const mocks = { $t: jest.fn((string) => string), + $env: { + CATEGORIES_ACTIVE: true, + }, } const getters = { From eef8d60046481d9cf96c37582fe1198534d9ae57 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Aug 2022 15:37:22 +0000 Subject: [PATCH 38/97] Bump eslint-plugin-prettier from 3.1.2 to 3.4.1 in /backend Bumps [eslint-plugin-prettier](https://github.com/prettier/eslint-plugin-prettier) from 3.1.2 to 3.4.1. - [Release notes](https://github.com/prettier/eslint-plugin-prettier/releases) - [Changelog](https://github.com/prettier/eslint-plugin-prettier/blob/master/CHANGELOG.md) - [Commits](https://github.com/prettier/eslint-plugin-prettier/commits) --- updated-dependencies: - dependency-name: eslint-plugin-prettier dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- backend/package.json | 4 ++-- backend/yarn.lock | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/backend/package.json b/backend/package.json index c19019ca1..62db1cf0f 100644 --- a/backend/package.json +++ b/backend/package.json @@ -110,7 +110,7 @@ "npm-run-all": "~4.1.5", "request": "~2.88.2", "sanitize-html": "~1.22.0", - "slug": "~4.0.2", + "slug": "~6.0.0", "subscriptions-transport-ws": "^0.9.19", "trunc-html": "~1.1.2", "uuid": "~8.3.2", @@ -129,7 +129,7 @@ "eslint-plugin-import": "~2.20.2", "eslint-plugin-jest": "~23.8.2", "eslint-plugin-node": "~11.1.0", - "eslint-plugin-prettier": "~3.1.2", + "eslint-plugin-prettier": "~3.4.1", "eslint-plugin-promise": "~4.3.1", "eslint-plugin-standard": "~4.0.1", "jest": "~25.3.0", diff --git a/backend/yarn.lock b/backend/yarn.lock index 24bd00b3a..18f65abee 100644 --- a/backend/yarn.lock +++ b/backend/yarn.lock @@ -4253,10 +4253,10 @@ eslint-plugin-node@~11.1.0: resolve "^1.10.1" semver "^6.1.0" -eslint-plugin-prettier@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz#432e5a667666ab84ce72f945c72f77d996a5c9ba" - integrity sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA== +eslint-plugin-prettier@~3.4.1: + version "3.4.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz#e9ddb200efb6f3d05ffe83b1665a716af4a387e5" + integrity sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g== dependencies: prettier-linter-helpers "^1.0.0" @@ -9262,10 +9262,10 @@ slug@^0.9.2: dependencies: unicode ">= 0.3.1" -slug@~4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/slug/-/slug-4.0.2.tgz#35a62b4e71582778ac08bb30a1bf439fd0a43ea7" - integrity sha512-c5XbWkwxHU13gAdSvBHQgnGy2sxv/REMz0ugcM0SOSBCO/N4wfU0TDBC3pgdOwVGjZwGnLBTRljXzdVYE+KYNw== +slug@~6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/slug/-/slug-6.0.0.tgz#39637b32e5a873bc692812a630842880499ed6c9" + integrity sha512-0MpNLyCSUSf0G1nAZmp9gY1cvesPP35a1Live25vZ23gWQ5SAopF0N+0hk9KI4ytNuTebJrHGNrgTnxboofcSg== smart-buffer@^4.1.0: version "4.1.0" From f2aba3e12e284e8a0bc78ac0afe52aed01420711 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 25 Aug 2022 18:03:21 +0200 Subject: [PATCH 39/97] Put exclamation mark behind console log text of successfully created default admin user for consistency --- backend/src/db/migrate/store.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/db/migrate/store.js b/backend/src/db/migrate/store.js index 61d591cb7..3a1b321e4 100644 --- a/backend/src/db/migrate/store.js +++ b/backend/src/db/migrate/store.js @@ -69,7 +69,7 @@ const createDefaultAdminUser = async (session) => { }) try { await createAdminTxResultPromise - console.log('Successfully created default admin user') // eslint-disable-line no-console + console.log('Successfully created default admin user!') // eslint-disable-line no-console } catch (error) { console.log(error) // eslint-disable-line no-console } From 0a02e1e402751a0cf90d9564730708df681bf233 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Aug 2022 18:15:25 +0000 Subject: [PATCH 40/97] Bump prettier from 2.2.1 to 2.7.1 in /webapp Bumps [prettier](https://github.com/prettier/prettier) from 2.2.1 to 2.7.1. - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/prettier/compare/2.2.1...2.7.1) --- updated-dependencies: - dependency-name: prettier dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- webapp/package.json | 2 +- webapp/yarn.lock | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/webapp/package.json b/webapp/package.json index ea425d49f..1231ecace 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -141,7 +141,7 @@ "identity-obj-proxy": "^3.0.0", "jest": "~26.6.3", "mutation-observer": "^1.0.3", - "prettier": "~2.2.1", + "prettier": "~2.7.1", "sass-loader": "~10.1.1", "storybook-design-token": "^0.8.1", "storybook-vue-router": "^1.0.7", diff --git a/webapp/yarn.lock b/webapp/yarn.lock index 596fe5700..c42c1b73b 100644 --- a/webapp/yarn.lock +++ b/webapp/yarn.lock @@ -16422,6 +16422,11 @@ prettier@~2.2.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== +prettier@~2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== + pretty-bytes@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2" From e82d35c824774a8dca2b8e76cf421d9600c81e97 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 25 Aug 2022 23:17:50 +0200 Subject: [PATCH 41/97] Fix linting --- .../components/CommentCard/CommentCard.story.js | 3 +-- webapp/components/DeleteData/DeleteData.vue | 2 +- webapp/components/Editor/Editor.story.js | 3 +-- webapp/components/Editor/nodes/Embed.spec.js | 3 +-- webapp/components/Embed/EmbedComponent.spec.js | 3 +-- webapp/components/Emotions/Emotions.vue | 2 +- webapp/components/LocaleSwitch/LocaleSwitch.vue | 2 +- webapp/components/Modal/DeleteUserModal.vue | 2 +- webapp/components/Modal/DisableModal.vue | 2 +- webapp/components/Password/Change.vue | 2 +- .../components/PasswordReset/ChangePassword.vue | 2 +- webapp/components/PasswordReset/Request.vue | 2 +- webapp/components/PostTeaser/PostTeaser.story.js | 3 +-- .../Registration/RegistrationSlideEmail.vue | 7 +++---- .../Registration/RegistrationSlideInvite.vue | 2 +- .../Registration/RegistrationSlideNonce.vue | 2 +- webapp/components/Registration/Signup.vue | 2 +- webapp/components/ReleaseModal/ReleaseModal.vue | 2 +- .../SearchableInput/SearchableInput.story.js | 12 ++++-------- webapp/graphql/CommentMutations.js | 4 ++-- webapp/graphql/Donations.js | 2 +- webapp/graphql/EmailAddress.js | 4 ++-- webapp/graphql/EmbedQuery.js | 2 +- webapp/graphql/Moderation.js | 6 +++--- webapp/graphql/PostMutations.js | 16 ++++++++-------- webapp/graphql/Registration.js | 2 +- webapp/graphql/Search.js | 8 ++++---- webapp/graphql/User.js | 14 +++++++------- webapp/graphql/admin/Roles.js | 2 +- webapp/graphql/location.js | 2 +- webapp/graphql/settings/BlockedUsers.js | 4 ++-- webapp/graphql/settings/MutedUsers.js | 4 ++-- webapp/pages/admin/users.vue | 2 +- webapp/pages/post/_id.vue | 4 ++-- webapp/pages/profile/_id.vue | 4 ++-- webapp/pages/settings/my-social-media.vue | 6 +++--- 36 files changed, 67 insertions(+), 77 deletions(-) diff --git a/webapp/components/CommentCard/CommentCard.story.js b/webapp/components/CommentCard/CommentCard.story.js index 467a125d5..75078657e 100644 --- a/webapp/components/CommentCard/CommentCard.story.js +++ b/webapp/components/CommentCard/CommentCard.story.js @@ -18,8 +18,7 @@ const comment = { author: { id: '1', avatar: { - url: - 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/db/dbc9e03ebcc384b920c31542af2d27dd8eea9dc2_full.jpg', + url: 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/db/dbc9e03ebcc384b920c31542af2d27dd8eea9dc2_full.jpg', }, slug: 'jenny-rostock', name: 'Rainer Unsinn', diff --git a/webapp/components/DeleteData/DeleteData.vue b/webapp/components/DeleteData/DeleteData.vue index 21b842fe6..a0cdcf29b 100644 --- a/webapp/components/DeleteData/DeleteData.vue +++ b/webapp/components/DeleteData/DeleteData.vue @@ -103,7 +103,7 @@ export default { this.$apollo .mutate({ mutation: gql` - mutation($id: ID!, $resource: [Deletable]) { + mutation ($id: ID!, $resource: [Deletable]) { DeleteUser(id: $id, resource: $resource) { id } diff --git a/webapp/components/Editor/Editor.story.js b/webapp/components/Editor/Editor.story.js index dfcc3cdf4..6e38eab7f 100644 --- a/webapp/components/Editor/Editor.story.js +++ b/webapp/components/Editor/Editor.story.js @@ -9,8 +9,7 @@ const embed = { title: 'Video Titel', // html: null, description: 'Video Description', - html: - '', + html: '', } const plugins = [ diff --git a/webapp/components/Editor/nodes/Embed.spec.js b/webapp/components/Editor/nodes/Embed.spec.js index e87ee1570..372b189f9 100644 --- a/webapp/components/Editor/nodes/Embed.spec.js +++ b/webapp/components/Editor/nodes/Embed.spec.js @@ -33,8 +33,7 @@ describe('Embed.vue', () => { video: null, lang: 'de', sources: ['resource', 'oembed'], - html: - '', + html: '', }), } }) diff --git a/webapp/components/Embed/EmbedComponent.spec.js b/webapp/components/Embed/EmbedComponent.spec.js index fd7452c01..cd3526368 100644 --- a/webapp/components/Embed/EmbedComponent.spec.js +++ b/webapp/components/Embed/EmbedComponent.spec.js @@ -114,8 +114,7 @@ describe('EmbedComponent.vue', () => { video: null, lang: 'de', sources: ['resource', 'oembed'], - html: - '', + html: '', } wrapper = Wrapper() }) diff --git a/webapp/components/Emotions/Emotions.vue b/webapp/components/Emotions/Emotions.vue index e75c8848d..b4dc14a61 100644 --- a/webapp/components/Emotions/Emotions.vue +++ b/webapp/components/Emotions/Emotions.vue @@ -83,7 +83,7 @@ export default { this.$apollo .query({ query: gql` - query($postId: ID!, $data: _EMOTEDInput!) { + query ($postId: ID!, $data: _EMOTEDInput!) { PostsEmotionsCountByEmotion(postId: $postId, data: $data) } `, diff --git a/webapp/components/LocaleSwitch/LocaleSwitch.vue b/webapp/components/LocaleSwitch/LocaleSwitch.vue index 47e53028b..353fc406a 100644 --- a/webapp/components/LocaleSwitch/LocaleSwitch.vue +++ b/webapp/components/LocaleSwitch/LocaleSwitch.vue @@ -82,7 +82,7 @@ export default { try { await this.$apollo.mutate({ mutation: gql` - mutation($id: ID!, $locale: String) { + mutation ($id: ID!, $locale: String) { UpdateUser(id: $id, locale: $locale) { id locale diff --git a/webapp/components/Modal/DeleteUserModal.vue b/webapp/components/Modal/DeleteUserModal.vue index 87aa557d8..8618582ee 100644 --- a/webapp/components/Modal/DeleteUserModal.vue +++ b/webapp/components/Modal/DeleteUserModal.vue @@ -127,7 +127,7 @@ export default { this.$apollo .mutate({ mutation: gql` - mutation($id: ID!, $resource: [Deletable]) { + mutation ($id: ID!, $resource: [Deletable]) { DeleteUser(id: $id, resource: $resource) { id } diff --git a/webapp/components/Modal/DisableModal.vue b/webapp/components/Modal/DisableModal.vue index 19ef64332..d28033ff8 100644 --- a/webapp/components/Modal/DisableModal.vue +++ b/webapp/components/Modal/DisableModal.vue @@ -53,7 +53,7 @@ export default { // await this.modalData.buttons.confirm.callback() await this.$apollo.mutate({ mutation: gql` - mutation($resourceId: ID!, $disable: Boolean, $closed: Boolean) { + mutation ($resourceId: ID!, $disable: Boolean, $closed: Boolean) { review(resourceId: $resourceId, disable: $disable, closed: $closed) { disable } diff --git a/webapp/components/Password/Change.vue b/webapp/components/Password/Change.vue index cd955973f..94b69a8f6 100644 --- a/webapp/components/Password/Change.vue +++ b/webapp/components/Password/Change.vue @@ -65,7 +65,7 @@ export default { async handleSubmit(data) { this.loading = true const mutation = gql` - mutation($oldPassword: String!, $password: String!) { + mutation ($oldPassword: String!, $password: String!) { changePassword(oldPassword: $oldPassword, newPassword: $password) } ` diff --git a/webapp/components/PasswordReset/ChangePassword.vue b/webapp/components/PasswordReset/ChangePassword.vue index e65a7a04f..c53afcc01 100644 --- a/webapp/components/PasswordReset/ChangePassword.vue +++ b/webapp/components/PasswordReset/ChangePassword.vue @@ -93,7 +93,7 @@ export default { methods: { async handleSubmitPassword() { const mutation = gql` - mutation($nonce: String!, $email: String!, $password: String!) { + mutation ($nonce: String!, $email: String!, $password: String!) { resetPassword(nonce: $nonce, email: $email, newPassword: $password) } ` diff --git a/webapp/components/PasswordReset/Request.vue b/webapp/components/PasswordReset/Request.vue index 5f4baf357..5398c13ed 100644 --- a/webapp/components/PasswordReset/Request.vue +++ b/webapp/components/PasswordReset/Request.vue @@ -85,7 +85,7 @@ export default { }, async handleSubmit() { const mutation = gql` - mutation($email: String!) { + mutation ($email: String!) { requestPasswordReset(email: $email) } ` diff --git a/webapp/components/PostTeaser/PostTeaser.story.js b/webapp/components/PostTeaser/PostTeaser.story.js index c82396101..e77e85585 100644 --- a/webapp/components/PostTeaser/PostTeaser.story.js +++ b/webapp/components/PostTeaser/PostTeaser.story.js @@ -17,8 +17,7 @@ export const post = { author: { id: 'u3', avatar: { - url: - 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/db/dbc9e03ebcc384b920c31542af2d27dd8eea9dc2_full.jpg', + url: 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/db/dbc9e03ebcc384b920c31542af2d27dd8eea9dc2_full.jpg', }, slug: 'jenny-rostock', name: 'Rainer Unsinn', diff --git a/webapp/components/Registration/RegistrationSlideEmail.vue b/webapp/components/Registration/RegistrationSlideEmail.vue index 045269f00..6ba443996 100644 --- a/webapp/components/Registration/RegistrationSlideEmail.vue +++ b/webapp/components/Registration/RegistrationSlideEmail.vue @@ -35,7 +35,7 @@ import normalizeEmail from '~/components/utils/NormalizeEmail' import translateErrorMessage from '~/components/utils/TranslateErrorMessage' export const SignupMutation = gql` - mutation($email: String!, $inviteCode: String) { + mutation ($email: String!, $inviteCode: String) { Signup(email: $email, inviteCode: $inviteCode) { email } @@ -165,9 +165,8 @@ export default { }) this.setButtonValues() - const { email: responseEmail } = this.sliderData.sliders[ - this.sliderIndex - ].data.response.Signup + const { email: responseEmail } = + this.sliderData.sliders[this.sliderIndex].data.response.Signup this.$toast.success( this.$t('components.registration.email.form.success', { email: responseEmail }), ) diff --git a/webapp/components/Registration/RegistrationSlideInvite.vue b/webapp/components/Registration/RegistrationSlideInvite.vue index f9ce15ee9..48c62d412 100644 --- a/webapp/components/Registration/RegistrationSlideInvite.vue +++ b/webapp/components/Registration/RegistrationSlideInvite.vue @@ -25,7 +25,7 @@ import gql from 'graphql-tag' import CONSTANTS_REGISTRATION from './../../constants/registration' export const isValidInviteCodeQuery = gql` - query($code: ID!) { + query ($code: ID!) { isValidInviteCode(code: $code) } ` diff --git a/webapp/components/Registration/RegistrationSlideNonce.vue b/webapp/components/Registration/RegistrationSlideNonce.vue index 147e84336..b9de7afd1 100644 --- a/webapp/components/Registration/RegistrationSlideNonce.vue +++ b/webapp/components/Registration/RegistrationSlideNonce.vue @@ -30,7 +30,7 @@ import CONSTANTS_REGISTRATION from './../../constants/registration' import EmailDisplayAndVerify from './EmailDisplayAndVerify' export const verifyNonceQuery = gql` - query($email: String!, $nonce: String!) { + query ($email: String!, $nonce: String!) { VerifyNonce(email: $email, nonce: $nonce) } ` diff --git a/webapp/components/Registration/Signup.vue b/webapp/components/Registration/Signup.vue index 86142c338..91b9ecd61 100644 --- a/webapp/components/Registration/Signup.vue +++ b/webapp/components/Registration/Signup.vue @@ -70,7 +70,7 @@ import { SweetalertIcon } from 'vue-sweetalert-icons' import translateErrorMessage from '~/components/utils/TranslateErrorMessage' export const SignupMutation = gql` - mutation($email: String!, $inviteCode: String) { + mutation ($email: String!, $inviteCode: String) { Signup(email: $email, inviteCode: $inviteCode) { email } diff --git a/webapp/components/ReleaseModal/ReleaseModal.vue b/webapp/components/ReleaseModal/ReleaseModal.vue index fef0d79d0..fceb4b7a1 100644 --- a/webapp/components/ReleaseModal/ReleaseModal.vue +++ b/webapp/components/ReleaseModal/ReleaseModal.vue @@ -52,7 +52,7 @@ export default { // await this.modalData.buttons.confirm.callback() await this.$apollo.mutate({ mutation: gql` - mutation($resourceId: ID!, $disable: Boolean, $closed: Boolean) { + mutation ($resourceId: ID!, $disable: Boolean, $closed: Boolean) { review(resourceId: $resourceId, disable: $disable, closed: $closed) { disable } diff --git a/webapp/components/generic/SearchableInput/SearchableInput.story.js b/webapp/components/generic/SearchableInput/SearchableInput.story.js index 62e422a67..f483129eb 100644 --- a/webapp/components/generic/SearchableInput/SearchableInput.story.js +++ b/webapp/components/generic/SearchableInput/SearchableInput.story.js @@ -78,8 +78,7 @@ export const searchResults = [ id: 'u1', __typename: 'User', avatar: { - url: - 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/db/dbc9e03ebcc384b920c31542af2d27dd8eea9dc2_full.jpg', + url: 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/db/dbc9e03ebcc384b920c31542af2d27dd8eea9dc2_full.jpg', }, name: 'Peter Lustig', slug: 'peter-lustig', @@ -88,8 +87,7 @@ export const searchResults = [ id: 'cdbca762-0632-4564-b646-415a0c42d8b8', __typename: 'User', avatar: { - url: - 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/db/dbc9e03ebcc384b920c31542af2d27dd8eea9dc2_full.jpg', + url: 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/db/dbc9e03ebcc384b920c31542af2d27dd8eea9dc2_full.jpg', }, name: 'Herbert Schultz', slug: 'herbert-schultz', @@ -98,8 +96,7 @@ export const searchResults = [ id: 'u2', __typename: 'User', avatar: { - url: - 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/db/dbc9e03ebcc384b920c31542af2d27dd8eea9dc2_full.jpg', + url: 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/db/dbc9e03ebcc384b920c31542af2d27dd8eea9dc2_full.jpg', }, name: 'Bob der Baumeister', slug: 'bob-der-baumeister', @@ -108,8 +105,7 @@ export const searchResults = [ id: '7b654f72-f4da-4315-8bed-39de0859754b', __typename: 'User', avatar: { - url: - 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/db/dbc9e03ebcc384b920c31542af2d27dd8eea9dc2_full.jpg', + url: 'https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/db/dbc9e03ebcc384b920c31542af2d27dd8eea9dc2_full.jpg', }, name: 'Tonya Mohr', slug: 'tonya-mohr', diff --git a/webapp/graphql/CommentMutations.js b/webapp/graphql/CommentMutations.js index a73ebb00c..191edf217 100644 --- a/webapp/graphql/CommentMutations.js +++ b/webapp/graphql/CommentMutations.js @@ -4,7 +4,7 @@ export default (i18n) => { const lang = i18n.locale().toUpperCase() return { CreateComment: gql` - mutation($postId: ID!, $content: String!) { + mutation ($postId: ID!, $content: String!) { CreateComment(postId: $postId, content: $content) { id contentExcerpt @@ -36,7 +36,7 @@ export default (i18n) => { } `, UpdateComment: gql` - mutation($content: String!, $id: ID!) { + mutation ($content: String!, $id: ID!) { UpdateComment(content: $content, id: $id) { id contentExcerpt diff --git a/webapp/graphql/Donations.js b/webapp/graphql/Donations.js index e412ee4fa..573158cbf 100644 --- a/webapp/graphql/Donations.js +++ b/webapp/graphql/Donations.js @@ -13,7 +13,7 @@ export const DonationsQuery = () => gql` export const UpdateDonations = () => { return gql` - mutation($showDonations: Boolean, $goal: Int, $progress: Int) { + mutation ($showDonations: Boolean, $goal: Int, $progress: Int) { UpdateDonations(showDonations: $showDonations, goal: $goal, progress: $progress) { id showDonations diff --git a/webapp/graphql/EmailAddress.js b/webapp/graphql/EmailAddress.js index 675ec6bed..b3b4df695 100644 --- a/webapp/graphql/EmailAddress.js +++ b/webapp/graphql/EmailAddress.js @@ -1,7 +1,7 @@ import gql from 'graphql-tag' export const AddEmailAddressMutation = gql` - mutation($email: String!) { + mutation ($email: String!) { AddEmailAddress(email: $email) { email createdAt @@ -10,7 +10,7 @@ export const AddEmailAddressMutation = gql` ` export const VerifyEmailAddressMutation = gql` - mutation($email: String!, $nonce: String!) { + mutation ($email: String!, $nonce: String!) { VerifyEmailAddress(email: $email, nonce: $nonce) { email verifiedAt diff --git a/webapp/graphql/EmbedQuery.js b/webapp/graphql/EmbedQuery.js index 685095d34..70450722d 100644 --- a/webapp/graphql/EmbedQuery.js +++ b/webapp/graphql/EmbedQuery.js @@ -2,7 +2,7 @@ import gql from 'graphql-tag' export default function () { return gql` - query($url: String!) { + query ($url: String!) { embed(url: $url) { type title diff --git a/webapp/graphql/Moderation.js b/webapp/graphql/Moderation.js index f4796d080..8dc20f987 100644 --- a/webapp/graphql/Moderation.js +++ b/webapp/graphql/Moderation.js @@ -3,7 +3,7 @@ import gql from 'graphql-tag' export const reportsListQuery = () => { // no limit for the moment like before: "reports(first: 20, orderBy: createdAt_desc)" return gql` - query( + query ( $orderBy: ReportOrdering $first: Int $offset: Int @@ -94,7 +94,7 @@ export const reportsListQuery = () => { export const reportMutation = () => { return gql` - mutation($resourceId: ID!, $reasonCategory: ReasonCategory!, $reasonDescription: String!) { + mutation ($resourceId: ID!, $reasonCategory: ReasonCategory!, $reasonDescription: String!) { fileReport( resourceId: $resourceId reasonCategory: $reasonCategory @@ -108,7 +108,7 @@ export const reportMutation = () => { export const reviewMutation = () => { return gql` - mutation($resourceId: ID!, $disable: Boolean, $closed: Boolean) { + mutation ($resourceId: ID!, $disable: Boolean, $closed: Boolean) { review(resourceId: $resourceId, disable: $disable, closed: $closed) { disable } diff --git a/webapp/graphql/PostMutations.js b/webapp/graphql/PostMutations.js index af91d245e..ee61efc3b 100644 --- a/webapp/graphql/PostMutations.js +++ b/webapp/graphql/PostMutations.js @@ -3,7 +3,7 @@ import gql from 'graphql-tag' export default () => { return { CreatePost: gql` - mutation($title: String!, $content: String!, $categoryIds: [ID], $image: ImageInput) { + mutation ($title: String!, $content: String!, $categoryIds: [ID], $image: ImageInput) { CreatePost(title: $title, content: $content, categoryIds: $categoryIds, image: $image) { title slug @@ -18,7 +18,7 @@ export default () => { } `, UpdatePost: gql` - mutation( + mutation ( $id: ID! $title: String! $content: String! @@ -52,14 +52,14 @@ export default () => { } `, DeletePost: gql` - mutation($id: ID!) { + mutation ($id: ID!) { DeletePost(id: $id) { id } } `, AddPostEmotionsMutation: gql` - mutation($to: _PostInput!, $data: _EMOTEDInput!) { + mutation ($to: _PostInput!, $data: _EMOTEDInput!) { AddPostEmotions(to: $to, data: $data) { emotion from { @@ -72,7 +72,7 @@ export default () => { } `, RemovePostEmotionsMutation: gql` - mutation($to: _PostInput!, $data: _EMOTEDInput!) { + mutation ($to: _PostInput!, $data: _EMOTEDInput!) { RemovePostEmotions(to: $to, data: $data) { emotion from { @@ -85,7 +85,7 @@ export default () => { } `, pinPost: gql` - mutation($id: ID!) { + mutation ($id: ID!) { pinPost(id: $id) { id title @@ -102,7 +102,7 @@ export default () => { } `, unpinPost: gql` - mutation($id: ID!) { + mutation ($id: ID!) { unpinPost(id: $id) { id title @@ -119,7 +119,7 @@ export default () => { } `, markTeaserAsViewed: gql` - mutation($id: ID!) { + mutation ($id: ID!) { markTeaserAsViewed(id: $id) { id } diff --git a/webapp/graphql/Registration.js b/webapp/graphql/Registration.js index fcf9c52a7..b6cc610d9 100644 --- a/webapp/graphql/Registration.js +++ b/webapp/graphql/Registration.js @@ -1,6 +1,6 @@ import gql from 'graphql-tag' export const SignupVerificationMutation = gql` - mutation( + mutation ( $nonce: String! $name: String! $email: String! diff --git a/webapp/graphql/Search.js b/webapp/graphql/Search.js index 96e507b2d..56f5d7c4c 100644 --- a/webapp/graphql/Search.js +++ b/webapp/graphql/Search.js @@ -5,7 +5,7 @@ export const searchQuery = gql` ${userFragment} ${postFragment} - query($query: String!) { + query ($query: String!) { searchResults(query: $query, limit: 5) { __typename ... on Post { @@ -33,7 +33,7 @@ export const searchPosts = gql` ${postFragment} ${tagsCategoriesAndPinnedFragment} - query($query: String!, $firstPosts: Int, $postsOffset: Int) { + query ($query: String!, $firstPosts: Int, $postsOffset: Int) { searchPosts(query: $query, firstPosts: $firstPosts, postsOffset: $postsOffset) { postCount posts { @@ -55,7 +55,7 @@ export const searchPosts = gql` export const searchUsers = gql` ${userFragment} - query($query: String!, $firstUsers: Int, $usersOffset: Int) { + query ($query: String!, $firstUsers: Int, $usersOffset: Int) { searchUsers(query: $query, firstUsers: $firstUsers, usersOffset: $usersOffset) { userCount users { @@ -67,7 +67,7 @@ export const searchUsers = gql` ` export const searchHashtags = gql` - query($query: String!, $firstHashtags: Int, $hashtagsOffset: Int) { + query ($query: String!, $firstHashtags: Int, $hashtagsOffset: Int) { searchHashtags(query: $query, firstHashtags: $firstHashtags, hashtagsOffset: $hashtagsOffset) { hashtagCount hashtags { diff --git a/webapp/graphql/User.js b/webapp/graphql/User.js index b3f131238..f16323073 100644 --- a/webapp/graphql/User.js +++ b/webapp/graphql/User.js @@ -68,7 +68,7 @@ export const notificationQuery = (i18n) => { ${commentFragment} ${postFragment} - query($read: Boolean, $orderBy: NotificationOrdering, $first: Int, $offset: Int) { + query ($read: Boolean, $orderBy: NotificationOrdering, $first: Int, $offset: Int) { notifications(read: $read, orderBy: $orderBy, first: $first, offset: $offset) { id read @@ -107,7 +107,7 @@ export const markAsReadMutation = (i18n) => { ${commentFragment} ${postFragment} - mutation($id: ID!) { + mutation ($id: ID!) { markAsRead(id: $id) { id read @@ -180,7 +180,7 @@ export const followUserMutation = (i18n) => { ${userFragment} ${userCountsFragment} - mutation($id: ID!) { + mutation ($id: ID!) { followUser(id: $id) { ...user ...userCounts @@ -200,7 +200,7 @@ export const unfollowUserMutation = (i18n) => { ${userFragment} ${userCountsFragment} - mutation($id: ID!) { + mutation ($id: ID!) { unfollowUser(id: $id) { ...user ...userCounts @@ -217,7 +217,7 @@ export const unfollowUserMutation = (i18n) => { export const updateUserMutation = () => { return gql` - mutation( + mutation ( $id: ID! $slug: String $name: String @@ -260,7 +260,7 @@ export const updateUserMutation = () => { } export const checkSlugAvailableQuery = gql` - query($slug: String!) { + query ($slug: String!) { User(slug: $slug) { slug } @@ -303,7 +303,7 @@ export const userDataQuery = (i18n) => { ${userFragment} ${postFragment} ${commentFragment} - query($id: ID!) { + query ($id: ID!) { userData(id: $id) { user { ...user diff --git a/webapp/graphql/admin/Roles.js b/webapp/graphql/admin/Roles.js index 4365cb533..4015ad06c 100644 --- a/webapp/graphql/admin/Roles.js +++ b/webapp/graphql/admin/Roles.js @@ -10,7 +10,7 @@ export const FetchAllRoles = () => { export const updateUserRole = (role, id) => { return gql` - mutation($role: UserRole!, $id: ID!) { + mutation ($role: UserRole!, $id: ID!) { switchUserRole(role: $role, id: $id) { name role diff --git a/webapp/graphql/location.js b/webapp/graphql/location.js index 0fa2c2a2d..1fff64782 100644 --- a/webapp/graphql/location.js +++ b/webapp/graphql/location.js @@ -1,7 +1,7 @@ import gql from 'graphql-tag' export const queryLocations = () => gql` - query($place: String!, $lang: String!) { + query ($place: String!, $lang: String!) { queryLocations(place: $place, lang: $lang) { place_name id diff --git a/webapp/graphql/settings/BlockedUsers.js b/webapp/graphql/settings/BlockedUsers.js index be1765138..0c642b352 100644 --- a/webapp/graphql/settings/BlockedUsers.js +++ b/webapp/graphql/settings/BlockedUsers.js @@ -20,7 +20,7 @@ export const blockedUsers = () => { export const blockUser = () => { return gql` - mutation($id: ID!) { + mutation ($id: ID!) { blockUser(id: $id) { id name @@ -33,7 +33,7 @@ export const blockUser = () => { export const unblockUser = () => { return gql` - mutation($id: ID!) { + mutation ($id: ID!) { unblockUser(id: $id) { id name diff --git a/webapp/graphql/settings/MutedUsers.js b/webapp/graphql/settings/MutedUsers.js index f498534e3..10db085af 100644 --- a/webapp/graphql/settings/MutedUsers.js +++ b/webapp/graphql/settings/MutedUsers.js @@ -20,7 +20,7 @@ export const mutedUsers = () => { export const muteUser = () => { return gql` - mutation($id: ID!) { + mutation ($id: ID!) { muteUser(id: $id) { id name @@ -33,7 +33,7 @@ export const muteUser = () => { export const unmuteUser = () => { return gql` - mutation($id: ID!) { + mutation ($id: ID!) { unmuteUser(id: $id) { id name diff --git a/webapp/pages/admin/users.vue b/webapp/pages/admin/users.vue index 6c324fd97..cbd7433ad 100644 --- a/webapp/pages/admin/users.vue +++ b/webapp/pages/admin/users.vue @@ -139,7 +139,7 @@ export default { User: { query() { return gql` - query($filter: _UserFilter, $first: Int, $offset: Int, $email: String) { + query ($filter: _UserFilter, $first: Int, $offset: Int, $email: String) { User( email: $email filter: $filter diff --git a/webapp/pages/post/_id.vue b/webapp/pages/post/_id.vue index 8d425eab7..14cc65a4e 100644 --- a/webapp/pages/post/_id.vue +++ b/webapp/pages/post/_id.vue @@ -19,7 +19,7 @@ import PersistentLinks from '~/mixins/persistentLinks.js' const options = { queryId: gql` - query($idOrSlug: ID) { + query ($idOrSlug: ID) { Post(id: $idOrSlug) { id slug @@ -27,7 +27,7 @@ const options = { } `, querySlug: gql` - query($idOrSlug: String) { + query ($idOrSlug: String) { Post(slug: $idOrSlug) { id slug diff --git a/webapp/pages/profile/_id.vue b/webapp/pages/profile/_id.vue index b9bbef83e..7a771425d 100644 --- a/webapp/pages/profile/_id.vue +++ b/webapp/pages/profile/_id.vue @@ -8,7 +8,7 @@ import PersistentLinks from '~/mixins/persistentLinks.js' const options = { queryId: gql` - query($idOrSlug: ID) { + query ($idOrSlug: ID) { User(id: $idOrSlug) { id slug @@ -16,7 +16,7 @@ const options = { } `, querySlug: gql` - query($idOrSlug: String) { + query ($idOrSlug: String) { User(slug: $idOrSlug) { id slug diff --git a/webapp/pages/settings/my-social-media.vue b/webapp/pages/settings/my-social-media.vue index a985371d6..d392032bb 100644 --- a/webapp/pages/settings/my-social-media.vue +++ b/webapp/pages/settings/my-social-media.vue @@ -112,7 +112,7 @@ export default { let mutation, variables, successMessage if (isCreation) { mutation = gql` - mutation($url: String!) { + mutation ($url: String!) { CreateSocialMedia(url: $url) { id url @@ -123,7 +123,7 @@ export default { successMessage = thisList.$t('settings.social-media.successAdd') } else { mutation = gql` - mutation($id: ID!, $url: String!) { + mutation ($id: ID!, $url: String!) { UpdateSocialMedia(id: $id, url: $url) { id url @@ -160,7 +160,7 @@ export default { try { await thisList.$apollo.mutate({ mutation: gql` - mutation($id: ID!) { + mutation ($id: ID!) { DeleteSocialMedia(id: $id) { id url From 1252e79be2c37bafd1630e878f932924af57e5c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Sat, 27 Aug 2022 16:42:11 +0200 Subject: [PATCH 42/97] Fix test description from 'enter-nonce' to 'change-password' --- webapp/pages/password-reset/change-password.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webapp/pages/password-reset/change-password.spec.js b/webapp/pages/password-reset/change-password.spec.js index cad031c95..103004d67 100644 --- a/webapp/pages/password-reset/change-password.spec.js +++ b/webapp/pages/password-reset/change-password.spec.js @@ -1,9 +1,9 @@ import { mount } from '@vue/test-utils' -import changePassword from './change-password.vue' +import changePassword from './change-password' const localVue = global.localVue -describe('enter-nonce.vue', () => { +describe('change-password', () => { let wrapper let mocks From 3607ed4b68f6a713239dd1949f65ef13cd89d424 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 27 Aug 2022 14:53:33 +0000 Subject: [PATCH 43/97] Bump cookie-universal-nuxt from 2.1.5 to 2.2.2 in /webapp Bumps [cookie-universal-nuxt](https://github.com/microcipcip/cookie-universal) from 2.1.5 to 2.2.2. - [Release notes](https://github.com/microcipcip/cookie-universal/releases) - [Commits](https://github.com/microcipcip/cookie-universal/compare/v2.1.5...v2.2.2) --- updated-dependencies: - dependency-name: cookie-universal-nuxt dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- webapp/package.json | 4 ++-- webapp/yarn.lock | 23 ++++++++++++++--------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/webapp/package.json b/webapp/package.json index ea425d49f..e4f9eb81c 100644 --- a/webapp/package.json +++ b/webapp/package.json @@ -73,7 +73,7 @@ "accounting": "~0.4.1", "apollo-cache-inmemory": "~1.6.6", "apollo-client": "~2.6.8", - "cookie-universal-nuxt": "~2.1.5", + "cookie-universal-nuxt": "~2.2.2", "cropperjs": "^1.5.5", "cross-env": "~7.0.3", "date-fns": "2.22.1", @@ -141,7 +141,7 @@ "identity-obj-proxy": "^3.0.0", "jest": "~26.6.3", "mutation-observer": "^1.0.3", - "prettier": "~2.2.1", + "prettier": "~2.7.1", "sass-loader": "~10.1.1", "storybook-design-token": "^0.8.1", "storybook-vue-router": "^1.0.7", diff --git a/webapp/yarn.lock b/webapp/yarn.lock index 596fe5700..b5ba692fa 100644 --- a/webapp/yarn.lock +++ b/webapp/yarn.lock @@ -8254,18 +8254,18 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie-universal-nuxt@~2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/cookie-universal-nuxt/-/cookie-universal-nuxt-2.1.5.tgz#669f2ff95b1bc1962c86edd69c954f60729e71e5" - integrity sha512-P0WCTKIyemWNtHi9lxrS5cxZmieOIEjt28B7Alu6cdSB9RqtUtpkqYyV9PRK6oJrT5eIPDYjHsJQlh6SUrFJOg== +cookie-universal-nuxt@~2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/cookie-universal-nuxt/-/cookie-universal-nuxt-2.2.2.tgz#107815f03f5b769de7018670d6370368205387bb" + integrity sha512-Pr6P5UCzl1EAvPh7z7jFkknBw0KTdykm6gFmPHrH4LV9s3flVmAH0ZP/ZqUXcp6b0SKZfizkn+XR1cO+QinGhQ== dependencies: "@types/cookie" "^0.3.3" - cookie-universal "^2.1.5" + cookie-universal "^2.2.2" -cookie-universal@^2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/cookie-universal/-/cookie-universal-2.1.5.tgz#9a6cefbfb61c750a1b8ee2610bf71566bd719544" - integrity sha512-nqOOmEkovCQxNYGIyzhcwsmh4c7xnxe7RWdiYFOoml9MP4L32IlU3LdPC7r7nQEnnM+9Uxlk/UhtvBl5is6M/w== +cookie-universal@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/cookie-universal/-/cookie-universal-2.2.2.tgz#415a4d67b6f7f0819c4914cd69b8c2f496111d30" + integrity sha512-nUXF6HH2YKbn8vGcdSzWJhjRkDHbnbekuVu2nsRu00zYsX7o/H3xGJRlPVoM4wX/8cpJYpyi9nDt+boER0Wjug== dependencies: "@types/cookie" "^0.3.3" cookie "^0.4.0" @@ -16422,6 +16422,11 @@ prettier@~2.2.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== +prettier@~2.7.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== + pretty-bytes@^5.3.0: version "5.3.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.3.0.tgz#f2849e27db79fb4d6cfe24764fc4134f165989f2" From 3e6cabaa1c4e8e7cccf11634d4c893f822767ca1 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 30 Aug 2022 10:13:56 +0200 Subject: [PATCH 44/97] Update backend/src/db/migrate/store.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Wolfgang Huß --- backend/src/db/migrate/store.js | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/src/db/migrate/store.js b/backend/src/db/migrate/store.js index 3a1b321e4..d6fd25bd8 100644 --- a/backend/src/db/migrate/store.js +++ b/backend/src/db/migrate/store.js @@ -29,6 +29,7 @@ const createCategories = async (session) => { }) try { await createCategoriesTxResultPromise + console.log('Successfully created categories!') // eslint-disable-line no-console } catch (error) { console.log(`Error creating categories: ${error}`) // eslint-disable-line no-console } From 0d1da0d83d2bb5b183c203e2db69f58978e1cd1d Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 30 Aug 2022 10:14:39 +0200 Subject: [PATCH 45/97] Update backend/src/db/migrate/store.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Wolfgang Huß --- backend/src/db/migrate/store.js | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/src/db/migrate/store.js b/backend/src/db/migrate/store.js index d6fd25bd8..98014f05c 100644 --- a/backend/src/db/migrate/store.js +++ b/backend/src/db/migrate/store.js @@ -30,6 +30,7 @@ const createCategories = async (session) => { try { await createCategoriesTxResultPromise console.log('Successfully created categories!') // eslint-disable-line no-console + console.log('Successfully created categories!') // eslint-disable-line no-console } catch (error) { console.log(`Error creating categories: ${error}`) // eslint-disable-line no-console } From c61e983102042b7a6fd568767ee81bf555425f70 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 30 Aug 2022 10:21:15 +0200 Subject: [PATCH 46/97] remove double console log --- backend/src/db/migrate/store.js | 1 - 1 file changed, 1 deletion(-) diff --git a/backend/src/db/migrate/store.js b/backend/src/db/migrate/store.js index 98014f05c..d6fd25bd8 100644 --- a/backend/src/db/migrate/store.js +++ b/backend/src/db/migrate/store.js @@ -30,7 +30,6 @@ const createCategories = async (session) => { try { await createCategoriesTxResultPromise console.log('Successfully created categories!') // eslint-disable-line no-console - console.log('Successfully created categories!') // eslint-disable-line no-console } catch (error) { console.log(`Error creating categories: ${error}`) // eslint-disable-line no-console } From d6f8b0dc773e527ebdef1381fb4a41ca87147006 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 31 Aug 2022 14:28:25 +0200 Subject: [PATCH 47/97] change category to topic in german and english locales --- webapp/locales/de.json | 18 +++++++++--------- webapp/locales/en.json | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/webapp/locales/de.json b/webapp/locales/de.json index dee8d086a..b17e47d08 100644 --- a/webapp/locales/de.json +++ b/webapp/locales/de.json @@ -11,7 +11,7 @@ "admin": { "categories": { "categoryName": "Name", - "name": "Kategorien", + "name": "Themen", "postCount": "BeitrΓ€ge" }, "dashboard": { @@ -98,7 +98,7 @@ } }, "common": { - "category": "Kategorie ::: Kategorien", + "category": "Thema ::: Themen", "comment": "Kommentar ::: Kommentare", "letsTalk": "Miteinander reden", "loading": "wird geladen", @@ -113,7 +113,7 @@ "takeAction": "Aktiv werden", "user": "Benutzer ::: Benutzer", "validations": { - "categories": "es mΓΌssen eine bis drei Kategorien ausgewΓ€hlt werden", + "categories": "es mΓΌssen eine bis drei Themen ausgewΓ€hlt werden", "email": "muss eine gΓΌltige E-Mail-Adresse sein", "url": "muss eine gΓΌltige URL sein" }, @@ -214,7 +214,7 @@ "amount-shouts": "{amount} recommendations", "amount-views": "{amount} views", "categories": { - "infoSelectedNoOfMaxCategories": "{chosen} von {max} Kategorien ausgewΓ€hlt" + "infoSelectedNoOfMaxCategories": "{chosen} von {max} Themen ausgewΓ€hlt" }, "category": { "name": { @@ -348,7 +348,7 @@ }, "filter-menu": { "all": "Alle", - "categories": "Themenkategorien", + "categories": "Themen", "emotions": "Emotionen", "filter-by": "Filtern nach ...", "following": "Benutzern, denen ich folge", @@ -470,7 +470,7 @@ "noDecision": "Keine Entscheidung!", "numberOfUsers": "{count} Nutzern", "previousDecision": "Vorherige Entscheidung:", - "reasonCategory": "Kategorie", + "reasonCategory": "Thema", "reasonDescription": "Beschreibung", "reportedOn": "Datum", "status": "Aktueller Status", @@ -587,8 +587,8 @@ }, "reason": { "category": { - "invalid": "Bitte wΓ€hle eine gΓΌltige Kategorie aus", - "label": "WΓ€hle eine Kategorie:", + "invalid": "Bitte wΓ€hle ein gΓΌltiges Thema aus", + "label": "WΓ€hle ein Thema:", "options": { "advert_products_services_commercial": "Bewerben von Produkten und Dienstleistungen mit kommerzieller Absicht.", "criminal_behavior_violation_german_law": "Strafbares Verhalten bzw. Verstoß gegen deutsches Recht.", @@ -599,7 +599,7 @@ "other": "Andere …", "pornographic_content_links": "Das Senden oder Verlinken eindeutig pornografischen Materials." }, - "placeholder": "Kategorie …" + "placeholder": "Thema …" }, "description": { "label": "Bitte erklΓ€re: Warum mΓΆchtest Du dies melden?", diff --git a/webapp/locales/en.json b/webapp/locales/en.json index d6172c257..8587d9da5 100644 --- a/webapp/locales/en.json +++ b/webapp/locales/en.json @@ -11,7 +11,7 @@ "admin": { "categories": { "categoryName": "Name", - "name": "Categories", + "name": "Topics", "postCount": "Posts" }, "dashboard": { @@ -98,7 +98,7 @@ } }, "common": { - "category": "Category ::: Categories", + "category": "Topic ::: Topics", "comment": "Comment ::: Comments", "letsTalk": "Let`s Talk", "loading": "loading", @@ -113,7 +113,7 @@ "takeAction": "Take Action", "user": "User ::: Users", "validations": { - "categories": "at least one and at most three categories must be selected", + "categories": "at least one and at most three topics must be selected", "email": "must be a valid e-mail address", "url": "must be a valid URL" }, @@ -214,7 +214,7 @@ "amount-shouts": "{amount} recommendations", "amount-views": "{amount} views", "categories": { - "infoSelectedNoOfMaxCategories": "{chosen} of {max} categories selected" + "infoSelectedNoOfMaxCategories": "{chosen} of {max} topics selected" }, "category": { "name": { @@ -348,7 +348,7 @@ }, "filter-menu": { "all": "All", - "categories": "Categories of Content", + "categories": "Topics", "emotions": "Emotions", "filter-by": "Filter by ...", "following": "Users I follow", @@ -470,7 +470,7 @@ "noDecision": "No decision!", "numberOfUsers": "{count} users", "previousDecision": "Previous decision:", - "reasonCategory": "Category", + "reasonCategory": "Topic", "reasonDescription": "Description", "reportedOn": "Date", "status": "Current status", @@ -587,8 +587,8 @@ }, "reason": { "category": { - "invalid": "Please select a valid category", - "label": "Select a category:", + "invalid": "Please select a valid topic", + "label": "Select a topic:", "options": { "advert_products_services_commercial": "Advertising products and services with commercial intent.", "criminal_behavior_violation_german_law": "Criminal behavior or violation of German law.", @@ -599,7 +599,7 @@ "other": "Other …", "pornographic_content_links": "Posting or linking of clearly pornographic material." }, - "placeholder": "Category …" + "placeholder": "Topic …" }, "description": { "label": "Please explain: Why you like to report this?", From 87aa47d68345bf851cdc3b3e00ca1e434196ce6f Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Wed, 31 Aug 2022 14:32:46 +0200 Subject: [PATCH 48/97] add optional topica menu when categories are active --- .../components/FilterMenu/CategoriesMenu.vue | 58 +++++++++++++++++++ webapp/components/FilterMenu/FilterMenu.vue | 8 --- webapp/layouts/default.vue | 10 ++++ 3 files changed, 68 insertions(+), 8 deletions(-) create mode 100644 webapp/components/FilterMenu/CategoriesMenu.vue diff --git a/webapp/components/FilterMenu/CategoriesMenu.vue b/webapp/components/FilterMenu/CategoriesMenu.vue new file mode 100644 index 000000000..f8a224003 --- /dev/null +++ b/webapp/components/FilterMenu/CategoriesMenu.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/webapp/components/FilterMenu/FilterMenu.vue b/webapp/components/FilterMenu/FilterMenu.vue index 84c7c1f67..9e211ccf9 100644 --- a/webapp/components/FilterMenu/FilterMenu.vue +++ b/webapp/components/FilterMenu/FilterMenu.vue @@ -14,7 +14,6 @@

{{ $t('filter-menu.filter-by') }}

-

{{ $t('filter-menu.order-by') }}

@@ -29,24 +28,17 @@ import Dropdown from '~/components/Dropdown' import { mapGetters } from 'vuex' import FollowingFilter from './FollowingFilter' import OrderByFilter from './OrderByFilter' -import CategoriesFilter from './CategoriesFilter' export default { components: { Dropdown, FollowingFilter, - CategoriesFilter, OrderByFilter, }, props: { placement: { type: String }, offset: { type: [String, Number] }, }, - data() { - return { - categoriesActive: this.$env.CATEGORIES_ACTIVE, - } - }, computed: { ...mapGetters({ filterActive: 'posts/isActive', diff --git a/webapp/layouts/default.vue b/webapp/layouts/default.vue index 0dfd752bf..97b070d11 100644 --- a/webapp/layouts/default.vue +++ b/webapp/layouts/default.vue @@ -15,6 +15,13 @@ > + + + Date: Thu, 1 Sep 2022 10:31:53 +0200 Subject: [PATCH 49/97] Create GraphQL-Playground.md --- backend/src/graphql/GraphQL-Playground.md | 28 +++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 backend/src/graphql/GraphQL-Playground.md diff --git a/backend/src/graphql/GraphQL-Playground.md b/backend/src/graphql/GraphQL-Playground.md new file mode 100644 index 000000000..3381f4e9e --- /dev/null +++ b/backend/src/graphql/GraphQL-Playground.md @@ -0,0 +1,28 @@ +# GraphQL Playground + +To use the GraphQL Playground we have to know some basics: + +## How To Login? + +At first we have to have a user of ocelot.social as whom we can login. +The user can be created by seeding the Neo4j database from the backend or by several GraphQL mutations. + +### Seed The Neo4j Database + +In your browser you reach the GraphQL Playground under `http://localhost:4000/` +if the database and the backend is running, see [backend](../../backend/README.md). +You can find how to seed there as well. + +### Use GraphQL Mutations To Create A User + +TODO: Describe how to create a user by GraphQL mutations! + +### Login Via GraphQL + +You can login by sending the query: + +```gql +mutation ($email: String!, $password: String!) { + login(email: $email, password: $password) +} +``` From 1f6beffa6f23edde1241eda1758f9fef224285f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 1 Sep 2022 10:32:36 +0200 Subject: [PATCH 50/97] Create GraphQL-Playground.md --- backend/src/GraphQL-Playground.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 backend/src/GraphQL-Playground.md diff --git a/backend/src/GraphQL-Playground.md b/backend/src/GraphQL-Playground.md new file mode 100644 index 000000000..3381f4e9e --- /dev/null +++ b/backend/src/GraphQL-Playground.md @@ -0,0 +1,28 @@ +# GraphQL Playground + +To use the GraphQL Playground we have to know some basics: + +## How To Login? + +At first we have to have a user of ocelot.social as whom we can login. +The user can be created by seeding the Neo4j database from the backend or by several GraphQL mutations. + +### Seed The Neo4j Database + +In your browser you reach the GraphQL Playground under `http://localhost:4000/` +if the database and the backend is running, see [backend](../../backend/README.md). +You can find how to seed there as well. + +### Use GraphQL Mutations To Create A User + +TODO: Describe how to create a user by GraphQL mutations! + +### Login Via GraphQL + +You can login by sending the query: + +```gql +mutation ($email: String!, $password: String!) { + login(email: $email, password: $password) +} +``` From 9ac943d11d48b613ab565c8267017182ebd7d426 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 1 Sep 2022 10:57:16 +0200 Subject: [PATCH 51/97] Delete GraphQL-Playground.md --- backend/src/GraphQL-Playground.md | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 backend/src/GraphQL-Playground.md diff --git a/backend/src/GraphQL-Playground.md b/backend/src/GraphQL-Playground.md deleted file mode 100644 index 3381f4e9e..000000000 --- a/backend/src/GraphQL-Playground.md +++ /dev/null @@ -1,28 +0,0 @@ -# GraphQL Playground - -To use the GraphQL Playground we have to know some basics: - -## How To Login? - -At first we have to have a user of ocelot.social as whom we can login. -The user can be created by seeding the Neo4j database from the backend or by several GraphQL mutations. - -### Seed The Neo4j Database - -In your browser you reach the GraphQL Playground under `http://localhost:4000/` -if the database and the backend is running, see [backend](../../backend/README.md). -You can find how to seed there as well. - -### Use GraphQL Mutations To Create A User - -TODO: Describe how to create a user by GraphQL mutations! - -### Login Via GraphQL - -You can login by sending the query: - -```gql -mutation ($email: String!, $password: String!) { - login(email: $email, password: $password) -} -``` From 13cd81fcf5a8e6493e79bce6f63aa03cb9d97b3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 1 Sep 2022 12:06:28 +0200 Subject: [PATCH 52/97] Update GraphQL-Playground.md --- backend/src/graphql/GraphQL-Playground.md | 100 +++++++++++++++++++--- 1 file changed, 90 insertions(+), 10 deletions(-) diff --git a/backend/src/graphql/GraphQL-Playground.md b/backend/src/graphql/GraphQL-Playground.md index 3381f4e9e..af248f112 100644 --- a/backend/src/graphql/GraphQL-Playground.md +++ b/backend/src/graphql/GraphQL-Playground.md @@ -1,28 +1,108 @@ # GraphQL Playground -To use the GraphQL Playground we have to know some basics: +To use GraphQL Playground, we need to know some basics: ## How To Login? -At first we have to have a user of ocelot.social as whom we can login. -The user can be created by seeding the Neo4j database from the backend or by several GraphQL mutations. +First, we need to have a user from ocelot.social to log in as. +The user can be created by seeding the Neo4j database from the backend or by multiple GraphQL mutations. ### Seed The Neo4j Database -In your browser you reach the GraphQL Playground under `http://localhost:4000/` -if the database and the backend is running, see [backend](../../backend/README.md). -You can find how to seed there as well. +In your browser you can reach the GraphQL Playground under `http://localhost:4000/`, if the database and the backend are running, see [backend](../../README.md). +There you will also find instructions on how to seed the database. ### Use GraphQL Mutations To Create A User -TODO: Describe how to create a user by GraphQL mutations! +TODO: Describe how to create a user using GraphQL mutations! ### Login Via GraphQL -You can login by sending the query: +You can register a user by sending the query: ```gql -mutation ($email: String!, $password: String!) { - login(email: $email, password: $password) +mutation { + login(email: "user@example.org", password: "1234") } ``` + +Or use `"moderator@example.org"` or `"admin@example.org"` for the roll you need. + +If all goes well, you will receive a QGL response like: + +```json +{ + "data": { + "login": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6InUzIiwibmFtZSI6Ikplbm55IFJvc3RvY2siLCJzbHVnIjoiamVubnktcm9zdG9jayIsImlhdCI6MTY2MjAyMzMwNSwiZXhwIjoxNzI1MTM4NTA1LCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjMwMDAiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQwMDAiLCJzdWIiOiJ1MyJ9.atBS-SOeS784HPeFl_5s8sRWehEAU1BkgcOZFD8d4bU" + } +} +``` + +You can use this response to set an HTTP header when you click `HTTP HEADERS` in the footer. +Just set it with the login token you received in response: + +```json +{ + "Authorization": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6InUzIiwibmFtZSI6Ikplbm55IFJvc3RvY2siLCJzbHVnIjoiamVubnktcm9zdG9jayIsImlhdCI6MTY2MjAyMzMwNSwiZXhwIjoxNzI1MTM4NTA1LCJhdWQiOiJodHRwOi8vbG9jYWxob3N0OjMwMDAiLCJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjQwMDAiLCJzdWIiOiJ1MyJ9.atBS-SOeS784HPeFl_5s8sRWehEAU1BkgcOZFD8d4bU" +} +``` + +This token is used for all other queries and mutations you send to the backend. + +## Query And Mutate + +When you are logged in and open a new playground tab by clicking "+", you can create a new group by sending the following mutation: + +```gql +mutation { + CreateGroup( + # id: "" + name: "My Group" + # slug: "" + about: "We will save the world" + description: "

English:

This group is hidden.

What is our group for?

This group was created to allow investigative journalists to share and collaborate.

How does it work?

Here you can internally share posts and comments about them.


Deutsch:

Diese Gruppe ist verborgen.

WofΓΌr ist unsere Gruppe?

Diese Gruppe wurde geschaffen, um investigativen Journalisten den Austausch und die Zusammenarbeit zu ermΓΆglichen.

Wie funktioniert das?

Hier kΓΆnnt ihr euch intern ΓΌber BeitrΓ€ge und Kommentare zu ihnen austauschen.

" + groupType: hidden + actionRadius: interplanetary + categoryIds: ["cat12"] + ) { + id + name + slug + createdAt + updatedAt + disabled + deleted + about + description + groupType + actionRadius + myRole + } +} +``` + +You will receive the answer: + +```json +{ + "data": { + "CreateGroup": { + "id": "2e3bbadb-804b-4ebc-a673-2d7c7f05e827", + "name": "My Group", + "slug": "my-group", + "createdAt": "2022-09-01T09:44:47.969Z", + "updatedAt": "2022-09-01T09:44:47.969Z", + "disabled": false, + "deleted": false, + "about": "We will save the world", + "description": "

English:

This group is hidden.

What is our group for?

This group was created to allow investigative journalists to share and collaborate.

How does it work?

Here you can internally share posts and comments about them.


Deutsch:

Diese Gruppe ist verborgen.

WofΓΌr ist unsere Gruppe?

Diese Gruppe wurde geschaffen, um investigativen Journalisten den Austausch und die Zusammenarbeit zu ermΓΆglichen.

Wie funktioniert das?

Hier kΓΆnnt ihr euch intern ΓΌber BeitrΓ€ge und Kommentare zu ihnen austauschen.

", + "groupType": "hidden", + "actionRadius": "interplanetary", + "myRole": "owner" + } + } +} +``` + +If you look into the Neo4j database with your browser and search the groups, you will now also find your new group. +For more details about our Neo4j database read [here](../../../neo4j/README.md). From 28a742574c889f4b850f0d3fcfdd4eee21b8f7d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Thu, 1 Sep 2022 12:15:30 +0200 Subject: [PATCH 53/97] Update README.md --- backend/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/backend/README.md b/backend/README.md index 6d837856c..083606b09 100644 --- a/backend/README.md +++ b/backend/README.md @@ -60,6 +60,7 @@ your `.env` configuration file. Your backend is up and running at [http://localhost:4000/](http://localhost:4000/) This will start the GraphQL service \(by default on localhost:4000\) where you can issue GraphQL requests or access GraphQL Playground in the browser. +More details about our GraphQL playground and how to use it with ocelot.social can be found [here](./src/graphql/GraphQL-Playground.md). ![GraphQL Playground](../.gitbook/assets/graphql-playground.png) From b8ac4cc3ca33653fd529ae7b637418d4e06d76ef Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 5 Sep 2022 17:41:21 +0200 Subject: [PATCH 54/97] add saveCategoruSettings mutation to schema --- backend/src/middleware/permissionsMiddleware.js | 1 + backend/src/schema/types/type/User.gql | 2 ++ 2 files changed, 3 insertions(+) diff --git a/backend/src/middleware/permissionsMiddleware.js b/backend/src/middleware/permissionsMiddleware.js index b5ce4fe07..71a44f225 100644 --- a/backend/src/middleware/permissionsMiddleware.js +++ b/backend/src/middleware/permissionsMiddleware.js @@ -178,6 +178,7 @@ export default shield( GenerateInviteCode: isAuthenticated, switchUserRole: isAdmin, markTeaserAsViewed: allow, + saveCategorySettings: isAuthenticated, }, User: { email: or(isMyOwn, isAdmin), diff --git a/backend/src/schema/types/type/User.gql b/backend/src/schema/types/type/User.gql index 871e73ad8..b84606ff7 100644 --- a/backend/src/schema/types/type/User.gql +++ b/backend/src/schema/types/type/User.gql @@ -220,4 +220,6 @@ type Mutation { unblockUser(id: ID!): User switchUserRole(role: UserRole!, id: ID!): User + + saveCategorySettings(activeCategories: [String]): Boolean } From 572377acfde8e6a07f3fb32b598b4cf9b15b6969 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 5 Sep 2022 20:06:10 +0200 Subject: [PATCH 55/97] add active categories to user --- backend/src/schema/types/type/User.gql | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/backend/src/schema/types/type/User.gql b/backend/src/schema/types/type/User.gql index b84606ff7..d2ac79037 100644 --- a/backend/src/schema/types/type/User.gql +++ b/backend/src/schema/types/type/User.gql @@ -114,6 +114,14 @@ type User { badgesCount: Int! @cypher(statement: "MATCH (this)<-[:REWARDED]-(r:Badge) RETURN COUNT(r)") emotions: [EMOTED] + + activeCategories: [Category] @cypher( + statement: """ + MATCH (category:Category) + WHERE NOT ((this)-[:NOT_INTERESTED_IN]->(category)) + RETURN category + """ + ) } From fc6d544ea7399c711ba7ce5c6134cf0de94714ab Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 5 Sep 2022 20:07:14 +0200 Subject: [PATCH 56/97] add resolver for save active categories --- backend/src/schema/resolvers/users.js | 40 +++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/backend/src/schema/resolvers/users.js b/backend/src/schema/resolvers/users.js index 5dc78c5e1..4ab721b06 100644 --- a/backend/src/schema/resolvers/users.js +++ b/backend/src/schema/resolvers/users.js @@ -269,6 +269,46 @@ export default { session.close() } }, + saveCategorySettings: async (object, args, context, resolveInfo) => { + const { activeCategories } = args + const { + user: { id }, + } = context + + const session = context.driver.session() + await session.writeTransaction((transaction) => { + return transaction.run( + ` + MATCH (user:User { id: $id })-[previousCategories:NOT_INTERESTED_IN]->(category:Category) + DELETE previousCategories + RETURN user, category + `, + { id }, + ) + }) + + const writeTxResultPromise = session.writeTransaction(async (transaction) => { + const saveCategorySettingsResponse = await transaction.run( + ` + MATCH (category:Category) WHERE NOT category.id IN $activeCategories + MATCH (user:User { id: $id }) + MERGE (user)-[r:NOT_INTERESTED_IN]->(category) + RETURN user, r, category + `, + { id, activeCategories }, + ) + const [user] = await saveCategorySettingsResponse.records.map((record) => + record.get('user'), + ) + return user + }) + try { + await writeTxResultPromise + return true + } finally { + session.close() + } + }, }, User: { email: async (parent, params, context, resolveInfo) => { From 4e5d4cb8734a8f5c581e78cd7b4717d82fc27a8d Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Mon, 5 Sep 2022 20:51:48 +0200 Subject: [PATCH 57/97] basic tests for save category settings --- backend/src/schema/resolvers/users.js | 1 - backend/src/schema/resolvers/users.spec.js | 102 +++++++++++++++++++++ 2 files changed, 102 insertions(+), 1 deletion(-) diff --git a/backend/src/schema/resolvers/users.js b/backend/src/schema/resolvers/users.js index 4ab721b06..23a39a2a1 100644 --- a/backend/src/schema/resolvers/users.js +++ b/backend/src/schema/resolvers/users.js @@ -286,7 +286,6 @@ export default { { id }, ) }) - const writeTxResultPromise = session.writeTransaction(async (transaction) => { const saveCategorySettingsResponse = await transaction.run( ` diff --git a/backend/src/schema/resolvers/users.spec.js b/backend/src/schema/resolvers/users.spec.js index 920ef52ea..e655bdf28 100644 --- a/backend/src/schema/resolvers/users.spec.js +++ b/backend/src/schema/resolvers/users.spec.js @@ -3,6 +3,7 @@ import { gql } from '../../helpers/jest' import { getNeode, getDriver } from '../../db/neo4j' import createServer from '../../server' import { createTestClient } from 'apollo-server-testing' +import { categories } from '../../constants/categories' const categoryIds = ['cat9'] let user @@ -56,6 +57,12 @@ const switchUserRoleMutation = gql` } ` +const saveCategorySettings = gql` + mutation ($activeCategories: [String]) { + saveCategorySettings(activeCategories: $activeCategories) + } +` + beforeAll(async () => { await cleanDatabase() @@ -544,3 +551,98 @@ describe('switch user role', () => { }) }) }) + +describe('save category settings', () => { + beforeAll(async () => { + await Promise.all( + categories.map(({ icon, name }, index) => { + Factory.build('category', { + id: `cat${index + 1}`, + slug: name, + name, + icon, + }) + }), + ) + }) + + beforeEach(async () => { + user = await Factory.build('user', { + id: 'user', + role: 'user', + }) + variables = { + activeCategories: ['cat1', 'cat3', 'cat5'], + } + }) + + describe('not authenticated', () => { + beforeEach(async () => { + authenticatedUser = undefined + }) + + it('throws an error', async () => { + await expect(mutate({ mutation: saveCategorySettings, variables })).resolves.toEqual( + expect.objectContaining({ + errors: [ + expect.objectContaining({ + message: 'Not Authorized!', + }), + ], + }), + ) + }) + }) + + describe('authenticated', () => { + beforeEach(async () => { + authenticatedUser = await user.toJson() + }) + + describe('no categories saved', () => { + it('returns true for active categories mutation', async () => { + await expect(mutate({ mutation: saveCategorySettings, variables })).resolves.toEqual( + expect.objectContaining({ + data: { saveCategorySettings: true }, + }), + ) + }) + + describe('query for user', () => { + beforeEach(async () => { + await mutate({ mutation: saveCategorySettings, variables }) + }) + + it.skip('returns the active categories when user is queried', async () => { + const userQuery = gql` + query ($id: ID) { + User(id: $id) { + activeCategories { + id + } + } + } + ` + + await expect( + query({ query: userQuery, variables: { id: authenticatedUser.id } }), + ).resolves.toEqual( + expect.objectContaining({ + data: { + User: [ + { + activeCategories: expect.arrayContaining([ + { id: 'cat1' }, + { id: 'cat3' }, + { id: 'cat5' }, + ]), + }, + ], + }, + }), + ) + }) + }) + }) + }) +}) From 8a688ca78be0663527336f9b2502a3d796749308 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 6 Sep 2022 15:14:31 +0200 Subject: [PATCH 58/97] improve tests --- backend/src/schema/resolvers/users.spec.js | 72 ++++++++++++++++++---- 1 file changed, 60 insertions(+), 12 deletions(-) diff --git a/backend/src/schema/resolvers/users.spec.js b/backend/src/schema/resolvers/users.spec.js index e655bdf28..7116d2201 100644 --- a/backend/src/schema/resolvers/users.spec.js +++ b/backend/src/schema/resolvers/users.spec.js @@ -553,7 +553,7 @@ describe('switch user role', () => { }) describe('save category settings', () => { - beforeAll(async () => { + beforeEach(async () => { await Promise.all( categories.map(({ icon, name }, index) => { Factory.build('category', { @@ -599,6 +599,16 @@ describe('save category settings', () => { authenticatedUser = await user.toJson() }) + const userQuery = gql` + query ($id: ID) { + User(id: $id) { + activeCategories { + id + } + } + } + ` + describe('no categories saved', () => { it('returns true for active categories mutation', async () => { await expect(mutate({ mutation: saveCategorySettings, variables })).resolves.toEqual( @@ -613,17 +623,7 @@ describe('save category settings', () => { await mutate({ mutation: saveCategorySettings, variables }) }) - it.skip('returns the active categories when user is queried', async () => { - const userQuery = gql` - query ($id: ID) { - User(id: $id) { - activeCategories { - id - } - } - } - ` - + it('returns the active categories when user is queried', async () => { await expect( query({ query: userQuery, variables: { id: authenticatedUser.id } }), ).resolves.toEqual( @@ -644,5 +644,53 @@ describe('save category settings', () => { }) }) }) + + describe('categories already saved', () => { + beforeEach(async () => { + variables = { + activeCategories: ['cat1', 'cat3', 'cat5'], + } + await mutate({ mutation: saveCategorySettings, variables }) + variables = { + activeCategories: ['cat10', 'cat11', 'cat12', 'cat8', 'cat9'], + } + }) + + it('returns true', async () => { + await expect(mutate({ mutation: saveCategorySettings, variables })).resolves.toEqual( + expect.objectContaining({ + data: { saveCategorySettings: true }, + }), + ) + }) + + describe('query for user', () => { + beforeEach(async () => { + await mutate({ mutation: saveCategorySettings, variables }) + }) + + it('returns the new active categories when user is queried', async () => { + await expect( + query({ query: userQuery, variables: { id: authenticatedUser.id } }), + ).resolves.toEqual( + expect.objectContaining({ + data: { + User: [ + { + activeCategories: expect.arrayContaining([ + { id: 'cat10' }, + { id: 'cat11' }, + { id: 'cat12' }, + { id: 'cat8' }, + { id: 'cat9' }, + ]), + }, + ], + }, + }), + ) + }) + }) + }) }) }) From ab662db0e4e29acd1496856c16989053415f7ca1 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 6 Sep 2022 18:46:47 +0200 Subject: [PATCH 59/97] empty array as input only clears all saved categories --- backend/src/schema/resolvers/users.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/backend/src/schema/resolvers/users.js b/backend/src/schema/resolvers/users.js index 23a39a2a1..12f00ffb6 100644 --- a/backend/src/schema/resolvers/users.js +++ b/backend/src/schema/resolvers/users.js @@ -286,6 +286,10 @@ export default { { id }, ) }) + + // frontend gives [] when all categories are selected (default) + if (activeCategories.length === 0) return true + const writeTxResultPromise = session.writeTransaction(async (transaction) => { const saveCategorySettingsResponse = await transaction.run( ` From 523d290ff8d63186d8f4368bea7224d83637a789 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 6 Sep 2022 18:50:05 +0200 Subject: [PATCH 60/97] add save icon --- webapp/assets/_new/icons/svgs/save.svg | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 webapp/assets/_new/icons/svgs/save.svg diff --git a/webapp/assets/_new/icons/svgs/save.svg b/webapp/assets/_new/icons/svgs/save.svg new file mode 100644 index 000000000..31c1d8459 --- /dev/null +++ b/webapp/assets/_new/icons/svgs/save.svg @@ -0,0 +1,5 @@ + + +save + + From d4c338e04efbd1d62a166371bf74cef557bdfd43 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 6 Sep 2022 18:50:33 +0200 Subject: [PATCH 61/97] add save categories mutation --- webapp/graphql/SaveCategories.js | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 webapp/graphql/SaveCategories.js diff --git a/webapp/graphql/SaveCategories.js b/webapp/graphql/SaveCategories.js new file mode 100644 index 000000000..6154dacbc --- /dev/null +++ b/webapp/graphql/SaveCategories.js @@ -0,0 +1,9 @@ +import gql from 'graphql-tag' + +export default () => { + return gql` + mutation($activeCategories: [String]) { + saveCategorySettings(activeCategories: $activeCategories) + } + ` +} From d45ad17b4324907ef02a4330f496f28e0ea35834 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 6 Sep 2022 18:51:20 +0200 Subject: [PATCH 62/97] add save button to category filters --- .../components/FilterMenu/CategoriesFilter.vue | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/webapp/components/FilterMenu/CategoriesFilter.vue b/webapp/components/FilterMenu/CategoriesFilter.vue index 47e4bcc10..6ed37d4b3 100644 --- a/webapp/components/FilterMenu/CategoriesFilter.vue +++ b/webapp/components/FilterMenu/CategoriesFilter.vue @@ -7,6 +7,8 @@ icon="check" @click="resetCategories" /> +
+ diff --git a/webapp/locales/de.json b/webapp/locales/de.json index bc0b720c8..654376b4d 100644 --- a/webapp/locales/de.json +++ b/webapp/locales/de.json @@ -217,6 +217,27 @@ "infoSelectedNoOfMaxCategories": "{chosen} von {max} Themen ausgewΓ€hlt" }, "category": { + "description": { + "body-and-excercise": "Sport, Yoga, Massage, Tanzen, Entspannung", + "children": "Familie, PΓ€dagogik, Schule, PrΓ€gung", + "culture": "Kunst, Theater, Musik, Fotografie, Film", + "economy": "Handel, Konsum, Marketing, Lieferketten", + "energy": "Γ–l, Gas, Kohle, Wind, Wasserkraft, Biogas, Atomenergie", + "finance": "Geld, Finanzsystem, AlternativwΓ€hrungen", + "health": "Medizin, ErnΓ€hrung, WHO, Impfungen, Schadstoffe", + "home": "Bauen, Lebensgemeinschaften, Tiny Houses, GemΓΌsegarten", + "it-and-media": "Nachrichten, Manipulation, Datenschutz, Überwachung, Datenkraken, KI, Software, Apps", + "law": "Menschenrechte, Gesetze, Verordnungen", + "miscellaneous": "Miscellaneous", + "mobility": "Reise, Verkehr, ElektromobilitΓ€t", + "nature": "Tiere, Pflanzen, Landwirtschaft, Γ–kologie, Artenvielfalt", + "networking": "Kooperation, AktionsbΓΌndnisse, SolidaritΓ€t, Hilfe", + "peace": "Krieg, MilitΓ€r, soziale Verteidigung, Waffen, Cyberattacken", + "politics": "Demokratie, Mitbestimmung, Wahlen, Korruption, Parteien", + "psyche": "Seele, GefΓΌhle, GlΓΌck", + "science": "Bildung, Hochschule, Publikationen", + "spirituality": "Religion, Werte, Ethik" + }, "name": { "body-and-excercise": "KΓΆrper & Bewegung", "children": "Kinder", diff --git a/webapp/locales/en.json b/webapp/locales/en.json index b3555378f..f2a6c3fc2 100644 --- a/webapp/locales/en.json +++ b/webapp/locales/en.json @@ -217,6 +217,27 @@ "infoSelectedNoOfMaxCategories": "{chosen} of {max} topics selected" }, "category": { + "description": { + "body-and-excercise": "Sports, yoga, massage, relaxation", + "children": "Family, education, school, imprinting", + "culture": "Art, theatre, music, photography, film", + "economy": "Trade, consumption, marketing, supply chains", + "energy": "Oil, gas, coal, wind, hydrodynamic power, biogas, atomic energy", + "finance": "Money, financial system, alternative currencies", + "health": "Medicine, nutrition, WHO, vaccination, harmful substances", + "home": "Construction, communities, tiny houses, kitchen garden", + "it-and-media": "News, manipulation, privacy, control, data leeches, AI, software, apps", + "law": "Human rights, laws, decrees", + "miscellaneous": "Miscellaneous", + "mobility": "Travel, traffic, electric mobility", + "nature": "Animals, plants, agriculture, ecologu, biodiversity", + "networking": "Cooperation, action alliances, solidarity, help", + "peace": "War, military, social defence, arms, cyber attacks", + "politics": "Democracy, participation, elections, corruption, parties", + "psyche": "Soul, feelings, happiness", + "science": "Education, university, publications", + "spirituality": "Religion, values, ethics" + }, "name": { "body-and-excercise": "Body & Excercise", "children": "Children", diff --git a/webapp/pages/post/_id/_slug/index.vue b/webapp/pages/post/_id/_slug/index.vue index d02a448da..30268778d 100644 --- a/webapp/pages/post/_id/_slug/index.vue +++ b/webapp/pages/post/_id/_slug/index.vue @@ -54,6 +54,11 @@ :key="category.id" :icon="category.icon" :name="$t(`contribution.category.name.${category.slug}`)" + v-tooltip="{ + content: $t(`contribution.category.description.${category.slug}`), + placement: 'bottom-start', + delay: { show: 500 }, + }" />
From ba9a6fd750d273b01c7ef188b343d2579a517ac8 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 15 Sep 2022 09:25:46 +0200 Subject: [PATCH 83/97] Update webapp/locales/de.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Wolfgang Huß --- webapp/locales/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/locales/de.json b/webapp/locales/de.json index 654376b4d..753b2e9d1 100644 --- a/webapp/locales/de.json +++ b/webapp/locales/de.json @@ -228,7 +228,7 @@ "home": "Bauen, Lebensgemeinschaften, Tiny Houses, GemΓΌsegarten", "it-and-media": "Nachrichten, Manipulation, Datenschutz, Überwachung, Datenkraken, KI, Software, Apps", "law": "Menschenrechte, Gesetze, Verordnungen", - "miscellaneous": "Miscellaneous", + "miscellaneous": "Sonstiges", "mobility": "Reise, Verkehr, ElektromobilitΓ€t", "nature": "Tiere, Pflanzen, Landwirtschaft, Γ–kologie, Artenvielfalt", "networking": "Kooperation, AktionsbΓΌndnisse, SolidaritΓ€t, Hilfe", From 64153ea9e3fe0fd6a1a1dee2c2ed4c9df7914679 Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Thu, 15 Sep 2022 10:04:26 +0200 Subject: [PATCH 84/97] change delay of category tooltip to 1500 --- webapp/components/CategoriesSelect/CategoriesSelect.vue | 2 +- webapp/components/FilterMenu/CategoriesFilter.vue | 2 +- webapp/components/PostTeaser/PostTeaser.vue | 2 +- webapp/pages/post/_id/_slug/index.vue | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/webapp/components/CategoriesSelect/CategoriesSelect.vue b/webapp/components/CategoriesSelect/CategoriesSelect.vue index 24df0c179..92779444f 100644 --- a/webapp/components/CategoriesSelect/CategoriesSelect.vue +++ b/webapp/components/CategoriesSelect/CategoriesSelect.vue @@ -12,7 +12,7 @@ v-tooltip="{ content: $t(`contribution.category.description.${category.slug}`), placement: 'bottom-start', - delay: { show: 500 }, + delay: { show: 1500 }, }" > {{ $t(`contribution.category.name.${category.slug}`) }} diff --git a/webapp/components/FilterMenu/CategoriesFilter.vue b/webapp/components/FilterMenu/CategoriesFilter.vue index 23213929b..552aa26a0 100644 --- a/webapp/components/FilterMenu/CategoriesFilter.vue +++ b/webapp/components/FilterMenu/CategoriesFilter.vue @@ -20,7 +20,7 @@ v-tooltip="{ content: $t(`contribution.category.description.${category.slug}`), placement: 'bottom-start', - delay: { show: 500 }, + delay: { show: 1500 }, }" /> diff --git a/webapp/components/PostTeaser/PostTeaser.vue b/webapp/components/PostTeaser/PostTeaser.vue index a973ca31f..75eefbfb2 100644 --- a/webapp/components/PostTeaser/PostTeaser.vue +++ b/webapp/components/PostTeaser/PostTeaser.vue @@ -33,7 +33,7 @@ v-tooltip="{ content: $t(`contribution.category.name.${category.slug}`), placement: 'bottom-start', - delay: { show: 500 }, + delay: { show: 1500 }, }" :icon="category.icon" /> diff --git a/webapp/pages/post/_id/_slug/index.vue b/webapp/pages/post/_id/_slug/index.vue index 30268778d..ff5c9a498 100644 --- a/webapp/pages/post/_id/_slug/index.vue +++ b/webapp/pages/post/_id/_slug/index.vue @@ -57,7 +57,7 @@ v-tooltip="{ content: $t(`contribution.category.description.${category.slug}`), placement: 'bottom-start', - delay: { show: 500 }, + delay: { show: 1500 }, }" />
From 8b62b624ac9ed75405e9ffffe2ca3bcfe7b006f7 Mon Sep 17 00:00:00 2001 From: ogerly Date: Tue, 20 Sep 2022 10:19:02 +0200 Subject: [PATCH 85/97] refactor header menu, add svg logos --- webapp/assets/styles/imports/_branding.scss | 19 +++++++++++++----- webapp/constants/headerMenu.js | 10 ---------- webapp/static/img/custom/logo-horizontal.svg | 21 +++++++++----------- webapp/static/img/custom/logo-squared.svg | 21 +++++++++----------- 4 files changed, 32 insertions(+), 39 deletions(-) diff --git a/webapp/assets/styles/imports/_branding.scss b/webapp/assets/styles/imports/_branding.scss index 103ae9243..c0a94e900 100644 --- a/webapp/assets/styles/imports/_branding.scss +++ b/webapp/assets/styles/imports/_branding.scss @@ -1,20 +1,20 @@ .main-navigation { - background-color: #748885; + background-color: #6e8b87; } .main-navigation .ds-menu-item-link { - color: #c8fc4f;; + color: #a6ff00; } .main-navigation .ds-menu-item-link:hover { - color: #f2f2f1;; + color: #f2f2f1; } .main-navigation .locale-menu { - color: #c8fc4f;; + color: #a6ff00; } .base-button { - color: #c8fc4f; + color: #a6ff00; } .header-menu { @@ -22,4 +22,13 @@ } .ds-menu-item-link { color: antiquewhite; +} +.ds-menu-item-link.router-link-exact-active { + color: #a6ff00; + background-color: #faf9fa; + border-left: 2px solid #a6ff00; +} + +.ds-menu-item-navbar.ds-menu-item-show-submenu.ds-menu-item-level-0>.ds-menu-item-link { + color: #ffffff; } \ No newline at end of file diff --git a/webapp/constants/headerMenu.js b/webapp/constants/headerMenu.js index 06eae4109..ee3451443 100644 --- a/webapp/constants/headerMenu.js +++ b/webapp/constants/headerMenu.js @@ -12,16 +12,6 @@ export default { { name: 'Gruppen', path: '/#', - children: [ - { - name: 'Gruppe 1', - path: '/#', - }, - { - name: 'Gruppe 2', - path: '/#', - }, - ], }, { name: 'Über Yunite', diff --git a/webapp/static/img/custom/logo-horizontal.svg b/webapp/static/img/custom/logo-horizontal.svg index 9ad368b9b..e85e839c0 100644 --- a/webapp/static/img/custom/logo-horizontal.svg +++ b/webapp/static/img/custom/logo-horizontal.svg @@ -1,18 +1,15 @@ - - - - - - - - - + + + + + + + + + - - - diff --git a/webapp/static/img/custom/logo-squared.svg b/webapp/static/img/custom/logo-squared.svg index 6ed4a3f62..6c12acd28 100644 --- a/webapp/static/img/custom/logo-squared.svg +++ b/webapp/static/img/custom/logo-squared.svg @@ -1,18 +1,15 @@ - - - - - - - - - + + + + + + + + + - - - From 52070b8c570970bf48df561134bf67cb4111b640 Mon Sep 17 00:00:00 2001 From: ogerly Date: Tue, 20 Sep 2022 16:03:06 +0200 Subject: [PATCH 86/97] change color and scss in branding --- webapp/assets/styles/imports/_branding.scss | 13 +++-- .../components/FilterMenu/CategoriesMenu.vue | 7 ++- webapp/components/HeaderMenu/HeaderMenu.vue | 29 +++++++++- .../_new/generic/BaseButton/BaseButton.vue | 2 + webapp/constants/headerMenu.js | 41 ++++++++------ webapp/layouts/default.vue | 56 ++++++++++++------- webapp/pages/settings/index.vue | 1 + 7 files changed, 100 insertions(+), 49 deletions(-) diff --git a/webapp/assets/styles/imports/_branding.scss b/webapp/assets/styles/imports/_branding.scss index c0a94e900..473091f8c 100644 --- a/webapp/assets/styles/imports/_branding.scss +++ b/webapp/assets/styles/imports/_branding.scss @@ -4,11 +4,17 @@ .main-navigation .ds-menu-item-link { color: #a6ff00; } - .main-navigation .ds-menu-item-link:hover { color: #f2f2f1; } +.main-navigation a { + color: #a6ff00; +} +.main-navigation a:hover { + color: #ffffff; +} + .main-navigation .locale-menu { color: #a6ff00; } @@ -17,14 +23,11 @@ color: #a6ff00; } -.header-menu { - // background-color: #748885; -} .ds-menu-item-link { color: antiquewhite; } .ds-menu-item-link.router-link-exact-active { - color: #a6ff00; + color: #6a8ee1; background-color: #faf9fa; border-left: 2px solid #a6ff00; } diff --git a/webapp/components/FilterMenu/CategoriesMenu.vue b/webapp/components/FilterMenu/CategoriesMenu.vue index 37bd19c84..e38125bef 100644 --- a/webapp/components/FilterMenu/CategoriesMenu.vue +++ b/webapp/components/FilterMenu/CategoriesMenu.vue @@ -1,14 +1,15 @@

{{ $t('filter-menu.filter-by') }}

diff --git a/webapp/components/HeaderMenu/HeaderMenu.vue b/webapp/components/HeaderMenu/HeaderMenu.vue index 31afe93b4..a10d18bbc 100644 --- a/webapp/components/HeaderMenu/HeaderMenu.vue +++ b/webapp/components/HeaderMenu/HeaderMenu.vue @@ -1,6 +1,21 @@ + diff --git a/webapp/components/_new/generic/BaseButton/BaseButton.vue b/webapp/components/_new/generic/BaseButton/BaseButton.vue index d87598d76..e6248d6aa 100644 --- a/webapp/components/_new/generic/BaseButton/BaseButton.vue +++ b/webapp/components/_new/generic/BaseButton/BaseButton.vue @@ -79,6 +79,7 @@ export default { diff --git a/webapp/constants/headerMenu.js b/webapp/constants/headerMenu.js index ee3451443..0455290d1 100644 --- a/webapp/constants/headerMenu.js +++ b/webapp/constants/headerMenu.js @@ -5,27 +5,32 @@ export default { name: 'BeitrÀge', path: '/#', }, - { - name: 'Themen', - path: '/#', - }, - { - name: 'Gruppen', - path: '/#', - }, + // { + // name: 'Themen', + // path: '/#', + // }, + // { + // name: 'Gruppen', + // path: '/#', + // }, { name: 'Über Yunite', path: '/#', - children: [ - { - name: 'Impressum', - path: '/#', - }, - { - name: 'Yunite Team', - path: '/#', - }, - ], + url: 'https://yunite.org', + // children: [ + // { + // name: 'Impressum', + // path: '/#', + // }, + // { + // name: 'Yunite Team', + // path: '/#', + // }, + // ], }, + // { + // name: 'Topic', + // path: '/#', + // }, ], } diff --git a/webapp/layouts/default.vue b/webapp/layouts/default.vue index be8a0834b..2a9ba47bf 100644 --- a/webapp/layouts/default.vue +++ b/webapp/layouts/default.vue @@ -4,12 +4,33 @@
- - - + + + - + + + + + {{ item.name }} + + + + + {{ item.name }} + + + + + + + + - - - - - import Logo from '~/components/Logo/Logo' -import HeaderMenu from '~/components/HeaderMenu/HeaderMenu.vue' import headerMenu from '../constants/headerMenu.js' import { mapGetters } from 'vuex' import LocaleSwitch from '~/components/LocaleSwitch/LocaleSwitch' @@ -112,7 +123,6 @@ import CategoriesMenu from '~/components/FilterMenu/CategoriesMenu.vue' export default { components: { Logo, - HeaderMenu, LocaleSwitch, SearchField, Modal, @@ -127,6 +137,7 @@ export default { data() { return { show: headerMenu.SHOW_HEADER_MENU, + menu: headerMenu.MENU, mobileSearchVisible: false, toggleMobileMenu: false, inviteRegistration: this.$env.INVITE_REGISTRATION === true, // for 'false' in .env INVITE_REGISTRATION is of type undefined and not(!) boolean false, because of internal handling, @@ -151,6 +162,14 @@ export default { diff --git a/webapp/layouts/default.vue b/webapp/layouts/default.vue index 329f9d8a1..b41770926 100644 --- a/webapp/layouts/default.vue +++ b/webapp/layouts/default.vue @@ -168,6 +168,9 @@ export default { diff --git a/webapp/components/LocaleSwitch/LocaleSwitch.vue b/webapp/components/LocaleSwitch/LocaleSwitch.vue index 622bf1ce9..2535ca145 100644 --- a/webapp/components/LocaleSwitch/LocaleSwitch.vue +++ b/webapp/components/LocaleSwitch/LocaleSwitch.vue @@ -117,6 +117,7 @@ export default { align-items: center; height: 100%; padding: $space-xx-small; + color: $color-locale-menu; > .label { margin: 0 $space-xx-small; From 5f5c0faa1f28cd4df7681eba335ae5998b2d9cca Mon Sep 17 00:00:00 2001 From: ogerly Date: Thu, 22 Sep 2022 17:52:03 +0200 Subject: [PATCH 93/97] cleanup refactor rebranding --- webapp/components/Logo/Logo.vue | 6 +- webapp/components/Logo/style.scss | 6 -- webapp/constants/headerMenu.js | 29 +------- webapp/constants/links.js | 18 ++--- webapp/constants/logos.js | 1 + webapp/layouts/default.vue | 10 +-- webapp/static/img/custom/logo-horizontal.svg | 64 +++++++++++++++--- webapp/static/img/custom/logo-squared.svg | 70 +++++++++++++++++--- 8 files changed, 139 insertions(+), 65 deletions(-) diff --git a/webapp/components/Logo/Logo.vue b/webapp/components/Logo/Logo.vue index 6e4dd3cbc..748af46a8 100644 --- a/webapp/components/Logo/Logo.vue +++ b/webapp/components/Logo/Logo.vue @@ -59,7 +59,7 @@ export default { }, data() { const logosObject = { - header: { path: logos.LOGO_HEADER_PATH, alt: 'Header', widthDefault: '47px' }, + header: { path: logos.LOGO_HEADER_PATH, alt: 'Header', widthDefault: logos.LOGO_HEADER_WIDTH }, welcome: { path: logos.LOGO_WELCOME_PATH, alt: 'Welcome', widthDefault: '200px' }, signup: { path: logos.LOGO_SIGNUP_PATH, alt: 'Sign Up', widthDefault: '200px' }, logout: { path: logos.LOGO_LOGOUT_PATH, alt: 'Logging Out', widthDefault: '200px' }, @@ -90,6 +90,9 @@ export default { return `width: ${width};` }, }, + created() { + console.log('logoWidth', this.logoWidth) + }, } @@ -107,7 +110,6 @@ export default { } .ds-logo-svg { - width: 47px; height: auto; fill: #000000; } diff --git a/webapp/components/Logo/style.scss b/webapp/components/Logo/style.scss index aa153c8f6..69897422f 100644 --- a/webapp/components/Logo/style.scss +++ b/webapp/components/Logo/style.scss @@ -8,10 +8,4 @@ .ds-logo-inverse { color: $text-color-primary-inverse; -} - -.ds-logo-svg { - width: 47px; - height: auto; - fill: currentColor; } \ No newline at end of file diff --git a/webapp/constants/headerMenu.js b/webapp/constants/headerMenu.js index 0455290d1..7055c44e5 100644 --- a/webapp/constants/headerMenu.js +++ b/webapp/constants/headerMenu.js @@ -1,36 +1,13 @@ export default { - SHOW_HEADER_MENU: true, MENU: [ - { - name: 'BeitrÀge', - path: '/#', - }, // { - // name: 'Themen', - // path: '/#', - // }, - // { - // name: 'Gruppen', + // name: 'BeitrÀge', // path: '/#', // }, - { - name: 'Über Yunite', - path: '/#', - url: 'https://yunite.org', - // children: [ - // { - // name: 'Impressum', - // path: '/#', - // }, - // { - // name: 'Yunite Team', - // path: '/#', - // }, - // ], - }, // { - // name: 'Topic', + // name: 'Über Yunite', // path: '/#', + // url: 'https://yunite.org', // }, ], } diff --git a/webapp/constants/links.js b/webapp/constants/links.js index 09dba8629..c65c9be3c 100644 --- a/webapp/constants/links.js +++ b/webapp/constants/links.js @@ -3,7 +3,7 @@ import { defaultPageParamsPages } from '~/components/utils/InternalPages.js' const ORGANIZATION = defaultPageParamsPages.ORGANIZATION.overwrite({ - externalLink: 'https://yunite.org', // if string is defined and not empty it's dominating + externalLink: 'https://ocelot.social', // if string is defined and not empty it's dominating internalPage: { // footerIdent: 'site.made', // localized string identifier, if undefined default is used @@ -17,7 +17,7 @@ const ORGANIZATION = defaultPageParamsPages.ORGANIZATION.overwrite({ }) const DONATE = defaultPageParamsPages.DONATE.overwrite({ // we use 'ocelot-social.herokuapp.com' at the moment, because redirections of 'ocelot.social' subpages are not working correctly - externalLink: 'https://yunite.org/brand-guidelines/', // if string is defined and not empty it's dominating + externalLink: 'https://ocelot-social.herokuapp.com/donations', // if string is defined and not empty it's dominating internalPage: { // footerIdent: 'site.donate', // localized string identifier, if undefined default is used @@ -31,7 +31,7 @@ const DONATE = defaultPageParamsPages.DONATE.overwrite({ }) const IMPRINT = defaultPageParamsPages.IMPRINT.overwrite({ // we use 'ocelot-social.herokuapp.com' at the moment, because redirections of 'ocelot.social' subpages are not working correctly - externalLink: 'https://yunite.org/impressum/', // if string is defined and not empty it's dominating + externalLink: 'https://ocelot-social.herokuapp.com/imprint', // if string is defined and not empty it's dominating internalPage: { // footerIdent: 'site.imprint', // localized string identifier, if undefined default is used @@ -57,7 +57,7 @@ const TERMS_AND_CONDITIONS = defaultPageParamsPages.TERMS_AND_CONDITIONS.overwri }, }) const CODE_OF_CONDUCT = defaultPageParamsPages.CODE_OF_CONDUCT.overwrite({ - externalLink: 'https://yunite.org/ueber-yunite/unsere-werte/', // if string is defined and not empty it's dominating + // externalLink: null, // if string is defined and not empty it's dominating internalPage: { // footerIdent: 'site.code-of-conduct', // localized string identifier, if undefined default is used @@ -70,7 +70,7 @@ const CODE_OF_CONDUCT = defaultPageParamsPages.CODE_OF_CONDUCT.overwrite({ }, }) const DATA_PRIVACY = defaultPageParamsPages.DATA_PRIVACY.overwrite({ - externalLink: 'https://yunite.org/datenschutz/', // if string is defined and not empty it's dominating + // externalLink: null, // if string is defined and not empty it's dominating internalPage: { // footerIdent: 'site.data-privacy', // localized string identifier, if undefined default is used @@ -83,7 +83,7 @@ const DATA_PRIVACY = defaultPageParamsPages.DATA_PRIVACY.overwrite({ }, }) const FAQ = defaultPageParamsPages.FAQ.overwrite({ - externalLink: 'https://yunite.org/ueber-yunite/faq-hilfe/', // if string is defined and not empty it's dominating + // externalLink: null, // if string is defined and not empty it's dominating internalPage: { // footerIdent: 'site.faq', // localized string identifier, if undefined default is used @@ -125,12 +125,12 @@ export default { FOOTER_LINK_LIST: [ ORGANIZATION, - // TERMS_AND_CONDITIONS, + TERMS_AND_CONDITIONS, CODE_OF_CONDUCT, DATA_PRIVACY, FAQ, - // DONATE, - // SUPPORT, + DONATE, + SUPPORT, IMPRINT, ], } diff --git a/webapp/constants/logos.js b/webapp/constants/logos.js index d093c7b46..2bea199da 100644 --- a/webapp/constants/logos.js +++ b/webapp/constants/logos.js @@ -2,6 +2,7 @@ // this are the paths in the webapp export default { LOGO_HEADER_PATH: '/img/custom/logo-horizontal.svg', + LOGO_HEADER_WIDTH: '130px', LOGO_SIGNUP_PATH: '/img/custom/logo-squared.svg', LOGO_WELCOME_PATH: '/img/custom/logo-squared.svg', LOGO_LOGOUT_PATH: '/img/custom/logo-squared.svg', diff --git a/webapp/layouts/default.vue b/webapp/layouts/default.vue index b41770926..3e2a4aa69 100644 --- a/webapp/layouts/default.vue +++ b/webapp/layouts/default.vue @@ -4,7 +4,7 @@
- + @@ -47,8 +47,8 @@ :width="{ base: '45%', sm: '45%', - md: show ? 'auto' : '45%', - lg: show ? 'auto' : '50%', + md: isHeaderMenu ? 'auto' : '45%', + lg: isHeaderMenu ? 'auto' : '50%', }" :class="{ 'hide-mobile-menu': !toggleMobileMenu }" style="flex-shrink: 0; flex-grow: 1" @@ -113,6 +113,7 @@ From 1af5ce9e3015c6869541a1cc34489ada16e35803 Mon Sep 17 00:00:00 2001 From: ogerly Date: Thu, 22 Sep 2022 18:20:13 +0200 Subject: [PATCH 95/97] =?UTF-8?q?add=20=1B[200~.ds-footer=20a=20{scss=20to?= =?UTF-8?q?ken?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webapp/assets/_new/styles/tokens.scss | 1 + webapp/components/PageFooter/PageFooter.vue | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/webapp/assets/_new/styles/tokens.scss b/webapp/assets/_new/styles/tokens.scss index 7f6c0a7a3..caca5953f 100644 --- a/webapp/assets/_new/styles/tokens.scss +++ b/webapp/assets/_new/styles/tokens.scss @@ -368,6 +368,7 @@ $color-header-background: $color-neutral-100; */ $color-footer-background: $color-neutral-100; +$color-footer-link: $color-primary; /** * @tokens Locale Menu Color diff --git a/webapp/components/PageFooter/PageFooter.vue b/webapp/components/PageFooter/PageFooter.vue index 67659e137..c71fc4b5c 100644 --- a/webapp/components/PageFooter/PageFooter.vue +++ b/webapp/components/PageFooter/PageFooter.vue @@ -44,7 +44,7 @@ export default { box-shadow: 0px -6px 12px -4px rgba(0, 0, 0, 0.1); } .ds-footer a { - color: #6e8b87; + color: $color-footer-link; } .division-line { margin-left: 0.2rem; From 858739eaa00b62c8095c0fe5b0d630eb25bd0d47 Mon Sep 17 00:00:00 2001 From: ogerly Date: Thu, 22 Sep 2022 18:42:58 +0200 Subject: [PATCH 96/97] fix review --- backend/src/schema/resolvers/users/location.spec.js | 2 +- webapp/assets/_new/styles/tokens.scss | 2 +- webapp/components/FilterMenu/CategoriesMenu.vue | 10 ++-------- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/backend/src/schema/resolvers/users/location.spec.js b/backend/src/schema/resolvers/users/location.spec.js index 92f08893e..c0525ca1c 100644 --- a/backend/src/schema/resolvers/users/location.spec.js +++ b/backend/src/schema/resolvers/users/location.spec.js @@ -121,7 +121,7 @@ describe('Location Service', () => { const result = await query({ query: queryLocations, variables }) expect(result.data.queryLocations).toEqual( expect.arrayContaining([ - { id: 'place.14094307404564380', place_name: 'Berlin, Germany' }, + { id: expect.stringMatching(/^place\.[0-9]+$/), place_name: 'Berlin, Germany' }, { id: expect.stringMatching(/^place\.[0-9]+$/), place_name: 'Berlin, Maryland, United States', diff --git a/webapp/assets/_new/styles/tokens.scss b/webapp/assets/_new/styles/tokens.scss index caca5953f..6aa6410df 100644 --- a/webapp/assets/_new/styles/tokens.scss +++ b/webapp/assets/_new/styles/tokens.scss @@ -374,4 +374,4 @@ $color-footer-link: $color-primary; * @tokens Locale Menu Color */ - $color-locale-menu: $text-color-soft; \ No newline at end of file +$color-locale-menu: $text-color-soft; \ No newline at end of file diff --git a/webapp/components/FilterMenu/CategoriesMenu.vue b/webapp/components/FilterMenu/CategoriesMenu.vue index a9a36496b..0b5505503 100644 --- a/webapp/components/FilterMenu/CategoriesMenu.vue +++ b/webapp/components/FilterMenu/CategoriesMenu.vue @@ -1,13 +1,6 @@