Ocelot-Social/webapp/graphql/CommentMutations.js
Max 1e6a74b8ce
feat(frontend): observe posts (#8293)
* After creating the post, the author of it automatically observes it to get notifications when there are interactions

* a user that comments a post, automatically observes that post to get notifications when there are more interactions on that post

* mutation that switches the state of the obeservation of a post on and off

* remove duplicate code

* fix unit tests

* add metric observed users count to posts

* change naming

* Add follow post entry to post menu

* Add FollowButton (WIP), show unfollow in menu when already followed

* Follow/unfollow post => observe

* Update slashed bell

* Add requests to observe/unobserve posts

* Add ObserveButton functionality

* Rename isObservedByMe

* Add observingUsersCount; simplify ObserveButton and menu entries

* Fix locales

* Add snapshot test for ObserveButton (WIP)

* Remove empty routes push

* Add test for ObserveButton

* Add test for ContentMenu, improve ObserveButton test

* Remove unneeded fields from PostQuery

---------

Co-authored-by: Moriz Wahl <moriz.wahl@gmx.de>
2025-04-04 11:54:43 +00:00

99 lines
2.0 KiB
JavaScript

import gql from 'graphql-tag'
export default (i18n) => {
const lang = i18n.locale().toUpperCase()
return {
CreateComment: gql`
mutation ($postId: ID!, $content: String!) {
CreateComment(postId: $postId, content: $content) {
id
contentExcerpt
content
createdAt
updatedAt
disabled
deleted
isPostObservedByMe
postObservingUsersCount
author {
id
slug
name
avatar {
url
}
disabled
deleted
shoutedCount
contributionsCount
commentedCount
followedByCount
followedByCurrentUser
badges {
id
icon
}
}
}
}
`,
UpdateComment: gql`
mutation ($content: String!, $id: ID!) {
UpdateComment(content: $content, id: $id) {
id
contentExcerpt
content
createdAt
updatedAt
disabled
deleted
author {
id
slug
name
avatar {
url
}
disabled
deleted
}
}
}
`,
DeleteComment: gql`
mutation($id: ID!) {
DeleteComment(id: $id) {
id
contentExcerpt
content
createdAt
disabled
deleted
author {
id
slug
name
avatar {
url
}
disabled
deleted
shoutedCount
contributionsCount
commentedCount
followedByCount
followedByCurrentUser
location {
name: name${lang}
}
badges {
id
icon
}
}
}
}
`,
}
}