mirror of
https://github.com/IT4Change/Ocelot-Social.git
synced 2025-12-13 07:45:56 +00:00
Refine component 'my-social-media' in webapp
This commit is contained in:
parent
a5c65faf15
commit
be9dbdbb76
40
webapp/graphql/SocialMedia.js
Normal file
40
webapp/graphql/SocialMedia.js
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
import gql from 'graphql-tag'
|
||||||
|
|
||||||
|
// ------ mutations
|
||||||
|
|
||||||
|
export const createSocialMediaMutation = () => {
|
||||||
|
return gql`
|
||||||
|
mutation ($url: String!) {
|
||||||
|
CreateSocialMedia(url: $url) {
|
||||||
|
id
|
||||||
|
url
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
}
|
||||||
|
|
||||||
|
export const updateSocialMediaMutation = () => {
|
||||||
|
return gql`
|
||||||
|
mutation ($id: ID!, $url: String!) {
|
||||||
|
UpdateSocialMedia(id: $id, url: $url) {
|
||||||
|
id
|
||||||
|
url
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
}
|
||||||
|
|
||||||
|
export const deleteSocialMediaMutation = () => {
|
||||||
|
return gql`
|
||||||
|
mutation ($id: ID!) {
|
||||||
|
DeleteSocialMedia(id: $id) {
|
||||||
|
id
|
||||||
|
url
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------ queries
|
||||||
|
|
||||||
|
// put the queries here
|
||||||
@ -7,26 +7,8 @@
|
|||||||
:useItems="socialMediaLinks"
|
:useItems="socialMediaLinks"
|
||||||
:defaultItem="{ url: '' }"
|
:defaultItem="{ url: '' }"
|
||||||
:namePropertyKey="'url'"
|
:namePropertyKey="'url'"
|
||||||
:texts="{
|
:texts="mySomethingListTexts"
|
||||||
addButton: $t('settings.social-media.submit'),
|
:callbacks="mySomethingListCallbacks"
|
||||||
addNew: $t('settings.social-media.add-new-link'),
|
|
||||||
deleteModal: {
|
|
||||||
titleIdent: 'settings.social-media.delete-modal.title',
|
|
||||||
messageIdent: 'settings.social-media.delete-modal.message',
|
|
||||||
confirm: {
|
|
||||||
icon: 'trash',
|
|
||||||
buttonTextIdent: 'settings.social-media.delete-modal.confirm-button',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
edit: $t('settings.social-media.edit-link'),
|
|
||||||
}"
|
|
||||||
:callbacks="{
|
|
||||||
handleInput: () => {},
|
|
||||||
handleInputValid,
|
|
||||||
edit: callbackEditSocialMedia,
|
|
||||||
submit: handleSubmitSocialMedia,
|
|
||||||
delete: callbackDeleteSocialMedia,
|
|
||||||
}"
|
|
||||||
>
|
>
|
||||||
<template #list-item="{ item }">
|
<template #list-item="{ item }">
|
||||||
<social-media-list-item :item="item" />
|
<social-media-list-item :item="item" />
|
||||||
@ -46,35 +28,14 @@
|
|||||||
<script>
|
<script>
|
||||||
import { mapGetters, mapMutations } from 'vuex'
|
import { mapGetters, mapMutations } from 'vuex'
|
||||||
import unionBy from 'lodash/unionBy'
|
import unionBy from 'lodash/unionBy'
|
||||||
import gql from 'graphql-tag'
|
import {
|
||||||
|
createSocialMediaMutation,
|
||||||
|
updateSocialMediaMutation,
|
||||||
|
deleteSocialMediaMutation,
|
||||||
|
} from '~/graphql/SocialMedia.js'
|
||||||
import MySomethingList from '~/components/_new/features/MySomethingList/MySomethingList.vue'
|
import MySomethingList from '~/components/_new/features/MySomethingList/MySomethingList.vue'
|
||||||
import SocialMediaListItem from '~/components/_new/features/SocialMedia/SocialMediaListItem.vue'
|
import SocialMediaListItem from '~/components/_new/features/SocialMedia/SocialMediaListItem.vue'
|
||||||
|
|
||||||
const createSocialMediaMutation = gql`
|
|
||||||
mutation($url: String!) {
|
|
||||||
CreateSocialMedia(url: $url) {
|
|
||||||
id
|
|
||||||
url
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`
|
|
||||||
const updateSocialMediaMutation = gql`
|
|
||||||
mutation($id: ID!, $url: String!) {
|
|
||||||
UpdateSocialMedia(id: $id, url: $url) {
|
|
||||||
id
|
|
||||||
url
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`
|
|
||||||
const deleteSocialMediaMutation = gql`
|
|
||||||
mutation($id: ID!) {
|
|
||||||
DeleteSocialMedia(id: $id) {
|
|
||||||
id
|
|
||||||
url
|
|
||||||
}
|
|
||||||
}
|
|
||||||
`
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
MySomethingList,
|
MySomethingList,
|
||||||
@ -115,6 +76,30 @@ export default {
|
|||||||
return { id, url, favicon }
|
return { id, url, favicon }
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
mySomethingListTexts() {
|
||||||
|
return {
|
||||||
|
addButton: this.$t('settings.social-media.submit'),
|
||||||
|
addNew: this.$t('settings.social-media.add-new-link'),
|
||||||
|
deleteModal: {
|
||||||
|
titleIdent: 'settings.social-media.delete-modal.title',
|
||||||
|
messageIdent: 'settings.social-media.delete-modal.message',
|
||||||
|
confirm: {
|
||||||
|
icon: 'trash',
|
||||||
|
buttonTextIdent: 'settings.social-media.delete-modal.confirm-button',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
edit: this.$t('settings.social-media.edit-link'),
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mySomethingListCallbacks() {
|
||||||
|
return {
|
||||||
|
handleInput: () => {},
|
||||||
|
handleInputValid: this.handleInputValid,
|
||||||
|
edit: this.callbackEditSocialMedia,
|
||||||
|
submit: this.handleSubmitSocialMedia,
|
||||||
|
delete: this.callbackDeleteSocialMedia,
|
||||||
|
}
|
||||||
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapMutations({
|
...mapMutations({
|
||||||
@ -131,7 +116,7 @@ export default {
|
|||||||
thisList.formData.socialMediaUrl = link.url
|
thisList.formData.socialMediaUrl = link.url
|
||||||
// try to set focus on link edit field
|
// try to set focus on link edit field
|
||||||
// thisList.$refs.socialMediaUrl.$el.focus()
|
// thisList.$refs.socialMediaUrl.$el.focus()
|
||||||
// !!! Check for existenz
|
// !!! check for existence
|
||||||
// this.$scopedSlots.default()[0].context.$refs
|
// this.$scopedSlots.default()[0].context.$refs
|
||||||
// thisList.$scopedSlots['edit-item']()[0].$el.focus()
|
// thisList.$scopedSlots['edit-item']()[0].$el.focus()
|
||||||
// console.log(thisList.$scopedSlots['edit-item']()[0].context.$refs)
|
// console.log(thisList.$scopedSlots['edit-item']()[0].context.$refs)
|
||||||
@ -149,11 +134,11 @@ export default {
|
|||||||
|
|
||||||
let mutation, variables, successMessage
|
let mutation, variables, successMessage
|
||||||
if (isCreation) {
|
if (isCreation) {
|
||||||
mutation = createSocialMediaMutation
|
mutation = createSocialMediaMutation()
|
||||||
variables = { url: item.url }
|
variables = { url: item.url }
|
||||||
successMessage = thisList.$t('settings.social-media.successAdd')
|
successMessage = thisList.$t('settings.social-media.successAdd')
|
||||||
} else {
|
} else {
|
||||||
mutation = updateSocialMediaMutation
|
mutation = updateSocialMediaMutation()
|
||||||
variables = { id: item.id, url: item.url }
|
variables = { id: item.id, url: item.url }
|
||||||
successMessage = thisList.$t('settings.data.success')
|
successMessage = thisList.$t('settings.data.success')
|
||||||
}
|
}
|
||||||
@ -183,7 +168,7 @@ export default {
|
|||||||
async callbackDeleteSocialMedia(thisList, item) {
|
async callbackDeleteSocialMedia(thisList, item) {
|
||||||
try {
|
try {
|
||||||
await thisList.$apollo.mutate({
|
await thisList.$apollo.mutate({
|
||||||
mutation: deleteSocialMediaMutation,
|
mutation: deleteSocialMediaMutation(),
|
||||||
variables: {
|
variables: {
|
||||||
id: item.id,
|
id: item.id,
|
||||||
},
|
},
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user