From 9b83b37ea39193f549b236afc19325b1e5196cab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Tue, 6 Sep 2022 09:14:28 +0200 Subject: [PATCH] Upload group avatar on group profile page --- backend/src/db/graphql/groups.js | 6 +- backend/src/middleware/sluggifyMiddleware.js | 5 +- backend/src/schema/resolvers/groups.js | 4 + webapp/components/Uploader/AvatarUploader.vue | 6 +- .../generic/ProfileAvatar/ProfileAvatar.vue | 4 +- webapp/graphql/groups.js | 95 ++++++++++++++++++- webapp/pages/group/_id/_slug.vue | 6 +- webapp/pages/profile/_id/_slug.vue | 4 +- 8 files changed, 118 insertions(+), 12 deletions(-) diff --git a/backend/src/db/graphql/groups.js b/backend/src/db/graphql/groups.js index 150bb5e9a..ff63f1a25 100644 --- a/backend/src/db/graphql/groups.js +++ b/backend/src/db/graphql/groups.js @@ -161,15 +161,17 @@ export const groupQuery = gql` description groupType actionRadius - myRole categories { id slug name icon } - # avatar # test this as result + avatar { + url + } # locationName # test this as result + myRole } } ` diff --git a/backend/src/middleware/sluggifyMiddleware.js b/backend/src/middleware/sluggifyMiddleware.js index 8fd200e8f..5ef2944be 100644 --- a/backend/src/middleware/sluggifyMiddleware.js +++ b/backend/src/middleware/sluggifyMiddleware.js @@ -31,7 +31,9 @@ export default { return resolve(root, args, context, info) }, UpdateGroup: async (resolve, root, args, context, info) => { - args.slug = args.slug || (await uniqueSlug(args.name, isUniqueFor(context, 'Group'))) + if (args.name) { + args.slug = args.slug || (await uniqueSlug(args.name, isUniqueFor(context, 'Group'))) + } return resolve(root, args, context, info) }, CreatePost: async (resolve, root, args, context, info) => { @@ -39,6 +41,7 @@ export default { return resolve(root, args, context, info) }, UpdatePost: async (resolve, root, args, context, info) => { + // TODO: is this absolutely correct, see condition in 'UpdateGroup' above? may it works accidentally, because args.slug is always send? args.slug = args.slug || (await uniqueSlug(args.title, isUniqueFor(context, 'Post'))) return resolve(root, args, context, info) }, diff --git a/backend/src/schema/resolvers/groups.js b/backend/src/schema/resolvers/groups.js index 2111aa54a..9aac2ab6a 100644 --- a/backend/src/schema/resolvers/groups.js +++ b/backend/src/schema/resolvers/groups.js @@ -137,6 +137,7 @@ export default { const { categoryIds } = params const { id: groupId, avatar: avatarInput } = params delete params.categoryIds + delete params.avatar if (CONFIG.CATEGORIES_ACTIVE && categoryIds) { if (categoryIds.length < CATEGORIES_MIN) { throw new UserInputError('Too view categories!') @@ -270,6 +271,9 @@ export default { hasMany: { categories: '-[:CATEGORIZED]->(related:Category)', }, + hasOne: { + avatar: '-[:AVATAR_IMAGE]->(related:Image)', + }, }), }, } diff --git a/webapp/components/Uploader/AvatarUploader.vue b/webapp/components/Uploader/AvatarUploader.vue index 6937aeabc..be8744ac2 100644 --- a/webapp/components/Uploader/AvatarUploader.vue +++ b/webapp/components/Uploader/AvatarUploader.vue @@ -21,7 +21,6 @@