forked from AkkomaGang/akkoma-fe
Add config opts for email language
This commit is contained in:
parent
a5e861cd01
commit
d39de30221
5 changed files with 46 additions and 17 deletions
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<label for="interface-language-switcher">
|
<label for="interface-language-switcher">
|
||||||
{{ $t('settings.interfaceLanguage') }}
|
{{ promptText }}
|
||||||
</label>
|
</label>
|
||||||
{{ ' ' }}
|
{{ ' ' }}
|
||||||
<Select
|
<Select
|
||||||
|
@ -28,8 +28,18 @@ export default {
|
||||||
Select
|
Select
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
language: String,
|
promptText: {
|
||||||
setLanguage: Function
|
type: String,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
language: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
|
setLanguage: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
languages () {
|
languages () {
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
<ul class="setting-list">
|
<ul class="setting-list">
|
||||||
<li>
|
<li>
|
||||||
<interface-language-switcher
|
<interface-language-switcher
|
||||||
|
:prompt-text="$t('settings.interfaceLanguage')"
|
||||||
:language="language"
|
:language="language"
|
||||||
:set-language="val => language = val"
|
:set-language="val => language = val"
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -8,8 +8,10 @@ import EmojiInput from 'src/components/emoji_input/emoji_input.vue'
|
||||||
import suggestor from 'src/components/emoji_input/suggestor.js'
|
import suggestor from 'src/components/emoji_input/suggestor.js'
|
||||||
import Autosuggest from 'src/components/autosuggest/autosuggest.vue'
|
import Autosuggest from 'src/components/autosuggest/autosuggest.vue'
|
||||||
import Checkbox from 'src/components/checkbox/checkbox.vue'
|
import Checkbox from 'src/components/checkbox/checkbox.vue'
|
||||||
|
import InterfaceLanguageSwitcher from 'src/components/interface_language_switcher/interface_language_switcher.vue'
|
||||||
import BooleanSetting from '../helpers/boolean_setting.vue'
|
import BooleanSetting from '../helpers/boolean_setting.vue'
|
||||||
import SharedComputedObject from '../helpers/shared_computed_object.js'
|
import SharedComputedObject from '../helpers/shared_computed_object.js'
|
||||||
|
import localeService from 'src/services/locale/locale.service.js'
|
||||||
|
|
||||||
import { library } from '@fortawesome/fontawesome-svg-core'
|
import { library } from '@fortawesome/fontawesome-svg-core'
|
||||||
import {
|
import {
|
||||||
|
@ -40,7 +42,8 @@ const ProfileTab = {
|
||||||
banner: null,
|
banner: null,
|
||||||
bannerPreview: null,
|
bannerPreview: null,
|
||||||
background: null,
|
background: null,
|
||||||
backgroundPreview: null
|
backgroundPreview: null,
|
||||||
|
emailLanguage: this.$store.state.users.currentUser.language
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
|
@ -50,7 +53,8 @@ const ProfileTab = {
|
||||||
Autosuggest,
|
Autosuggest,
|
||||||
ProgressButton,
|
ProgressButton,
|
||||||
Checkbox,
|
Checkbox,
|
||||||
BooleanSetting
|
BooleanSetting,
|
||||||
|
InterfaceLanguageSwitcher
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
user () {
|
user () {
|
||||||
|
@ -111,19 +115,25 @@ const ProfileTab = {
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
updateProfile () {
|
updateProfile () {
|
||||||
|
const params = {
|
||||||
|
note: this.newBio,
|
||||||
|
locked: this.newLocked,
|
||||||
|
// Backend notation.
|
||||||
|
/* eslint-disable camelcase */
|
||||||
|
display_name: this.newName,
|
||||||
|
fields_attributes: this.newFields.filter(el => el != null),
|
||||||
|
bot: this.bot,
|
||||||
|
show_role: this.showRole,
|
||||||
|
/* eslint-enable camelcase */
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.emailLanguage) {
|
||||||
|
params.language = localeService.internalToBackendLocale(this.emailLanguage)
|
||||||
|
}
|
||||||
|
|
||||||
this.$store.state.api.backendInteractor
|
this.$store.state.api.backendInteractor
|
||||||
.updateProfile({
|
.updateProfile({ params })
|
||||||
params: {
|
.then((user) => {
|
||||||
note: this.newBio,
|
|
||||||
locked: this.newLocked,
|
|
||||||
// Backend notation.
|
|
||||||
/* eslint-disable camelcase */
|
|
||||||
display_name: this.newName,
|
|
||||||
fields_attributes: this.newFields.filter(el => el != null),
|
|
||||||
bot: this.bot,
|
|
||||||
show_role: this.showRole
|
|
||||||
/* eslint-enable camelcase */
|
|
||||||
} }).then((user) => {
|
|
||||||
this.newFields.splice(user.fields.length)
|
this.newFields.splice(user.fields.length)
|
||||||
merge(this.newFields, user.fields)
|
merge(this.newFields, user.fields)
|
||||||
this.$store.commit('addNewUsers', [user])
|
this.$store.commit('addNewUsers', [user])
|
||||||
|
|
|
@ -89,6 +89,13 @@
|
||||||
{{ $t('settings.bot') }}
|
{{ $t('settings.bot') }}
|
||||||
</Checkbox>
|
</Checkbox>
|
||||||
</p>
|
</p>
|
||||||
|
<p>
|
||||||
|
<interface-language-switcher
|
||||||
|
:prompt-text="$t('settings.email_language')"
|
||||||
|
:language="emailLanguage"
|
||||||
|
:set-language="val => emailLanguage = val"
|
||||||
|
/>
|
||||||
|
</p>
|
||||||
<button
|
<button
|
||||||
:disabled="newName && newName.length === 0"
|
:disabled="newName && newName.length === 0"
|
||||||
class="btn button-default"
|
class="btn button-default"
|
||||||
|
|
|
@ -191,6 +191,7 @@ const updateProfile = ({ credentials, params }) => {
|
||||||
// homepage
|
// homepage
|
||||||
// location
|
// location
|
||||||
// token
|
// token
|
||||||
|
// language
|
||||||
const register = ({ params, credentials }) => {
|
const register = ({ params, credentials }) => {
|
||||||
const { nickname, ...rest } = params
|
const { nickname, ...rest } = params
|
||||||
return fetch(MASTODON_REGISTRATION_URL, {
|
return fetch(MASTODON_REGISTRATION_URL, {
|
||||||
|
|
Loading…
Reference in a new issue