Ocelot-Social/webapp/mixins/postListActions.js
Ulf Gebhardt e87a33eb3f
feat(backend): push posts (#8609)
* push posts

push posts

* unpush posts

* fix comment query

* locales

* fix locales

* fix tests

* Update webapp/locales/de.json

Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>

* Update webapp/locales/de.json

Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>

* Update webapp/locales/de.json

Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>

* fix unpushedSuccessfully english message

* remove paremeters from unpushPost

* rename pushPostToTop -> pushPost, tests

* update locales & tests webapp

* fix lint

---------

Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
2025-06-03 17:57:21 +02:00

93 lines
2.6 KiB
JavaScript

import PostMutations from '~/graphql/PostMutations'
import { mapMutations } from 'vuex'
export default {
methods: {
removePostFromList(deletedPost, posts) {
return posts.filter((post) => {
return post.id !== deletedPost.id
})
},
pinPost(post, refetchPostList = () => {}) {
this.$apollo
.mutate({
mutation: PostMutations().pinPost,
variables: {
id: post.id,
},
})
.then(() => {
this.$toast.success(this.$t('post.menu.pinnedSuccessfully'))
this.storePinPost()
refetchPostList()
})
.catch((error) => this.$toast.error(error.message))
},
unpinPost(post, refetchPostList = () => {}) {
this.$apollo
.mutate({
mutation: PostMutations().unpinPost,
variables: {
id: post.id,
},
})
.then(() => {
this.$toast.success(this.$t('post.menu.unpinnedSuccessfully'))
this.storeUnpinPost()
refetchPostList()
})
.catch((error) => this.$toast.error(error.message))
},
pushPost(post, refetchPostList = () => {}) {
this.$apollo
.mutate({
mutation: PostMutations().pushPost,
variables: {
id: post.id,
},
})
.then(() => {
this.$toast.success(this.$t('post.menu.pushedSuccessfully'))
refetchPostList()
})
.catch((error) => this.$toast.error(error.message))
},
unpushPost(post, refetchPostList = () => {}) {
this.$apollo
.mutate({
mutation: PostMutations().unpushPost,
variables: {
id: post.id,
},
})
.then(() => {
this.$toast.success(this.$t('post.menu.unpushedSuccessfully'))
refetchPostList()
})
.catch((error) => this.$toast.error(error.message))
},
toggleObservePost(postId, value, refetchPostList = () => {}) {
this.$apollo
.mutate({
mutation: PostMutations().toggleObservePost,
variables: {
value,
id: postId,
},
})
.then(() => {
const message = this.$t(
`post.menu.${value ? 'observedSuccessfully' : 'unobservedSuccessfully'}`,
)
this.$toast.success(message)
refetchPostList()
})
.catch((error) => this.$toast.error(error.message))
},
...mapMutations({
storePinPost: 'pinnedPosts/pinPost',
storeUnpinPost: 'pinnedPosts/unpinPost',
}),
},
}