run update mutation when submitting shouts form

This commit is contained in:
Alina Beck 2019-11-13 11:02:53 +03:00
parent feb65a6c9c
commit 1625e0705e
3 changed files with 39 additions and 12 deletions

View File

@ -238,7 +238,8 @@
},
"privacy": {
"name": "Privatsphäre",
"make-shouts-public": "Teile von mir empfohlene Artikel öffentlich auf meinem Profil"
"make-shouts-public": "Teile von mir empfohlene Artikel öffentlich auf meinem Profil",
"success-update": "Privatsphäre-Einstellungen gespeichert"
},
"invites": {
"name": "Einladungen"

View File

@ -239,7 +239,8 @@
},
"privacy": {
"name": "Privacy",
"make-shouts-public": "Share articles I have shouted on my public profile"
"make-shouts-public": "Share articles I have shouted on my public profile",
"success-update": "Privacy settings saved"
},
"invites": {
"name": "Invites"

View File

@ -4,30 +4,55 @@
<input id="allow-shouts" type="checkbox" v-model="shoutsAllowed" />
<label for="allow-shouts">{{ $t('settings.privacy.make-shouts-public') }}</label>
</ds-space>
<ds-button primary @click="submit">{{ $t('actions.save') }}</ds-button>
<ds-button primary @click="submit" :disabled="disabled">{{ $t('actions.save') }}</ds-button>
</ds-card>
</template>
<script>
import { mapGetters, mapMutations } from 'vuex'
import { showShoutsPubliclyMutation } from '~/graphql/User'
export default {
data() {
return {
shoutsAllowed: false,
}
},
computed: {
...mapGetters({
currentUser: 'auth/user',
}),
shoutsAllowed: {
get() {
return this.currentUser.shoutsAllowed || false
},
set(value) {
return value
},
disabled() {
return this.shoutsAllowed === this.currentUser.showShoutsPublicly
},
},
created() {
this.shoutsAllowed = this.currentUser.showShoutsPublicly || false
},
methods: {
submit() {
console.log('wohoo')
...mapMutations({
setCurrentUser: 'auth/SET_USER',
}),
async submit() {
try {
await this.$apollo.mutate({
mutation: showShoutsPubliclyMutation(),
variables: {
id: this.currentUser.id,
showShoutsPublicly: this.shoutsAllowed,
},
update: (_, { data: { UpdateUser } }) => {
const { showShoutsPublicly } = UpdateUser
this.setCurrentUser({
...this.currentUser,
showShoutsPublicly,
})
this.$toast.success(this.$t('settings.privacy.success-update'))
},
})
} catch (error) {
this.$toast.error(error.message)
}
},
},
}