diff --git a/js/src/views/Admin/Settings.vue b/js/src/views/Admin/Settings.vue index 031f32ef1..2c4a05444 100644 --- a/js/src/views/Admin/Settings.vue +++ b/js/src/views/Admin/Settings.vue @@ -71,7 +71,7 @@ {{ $t("Main languages you/your moderators speak") }} this.languageForCode(code)) - .filter((language) => language) as string[]; - } + get instanceLanguages(): string[] { + const languageCodes = this.adminSettings.instanceLanguages || []; + return languageCodes + .map((code) => this.languageForCode(code)) + .filter((language) => language) as string[]; + } + + set instanceLanguages(instanceLanguages: string[]) { + this.adminSettings.instanceLanguages = instanceLanguages + .map((language) => { + return this.codeForLanguage(language); + }) + .filter((code) => code !== undefined) as string[]; } async updateSettings(): Promise { const variables = { ...this.adminSettings }; - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - variables.instanceLanguages = variables.instanceLanguages.map( - (language) => { - return this.codeForLanguage(language); - } - ); try { await this.$apollo.mutate({ mutation: SAVE_ADMIN_SETTINGS, @@ -408,7 +407,7 @@ export default class Settings extends Vue { : []; } - codeForLanguage(language: string): string | undefined { + private codeForLanguage(language: string): string | undefined { if (this.languages) { const lang = this.languages.find(({ name }) => name === language); if (lang) return lang.code; @@ -416,7 +415,7 @@ export default class Settings extends Vue { return undefined; } - languageForCode(codeGiven: string): string | undefined { + private languageForCode(codeGiven: string): string | undefined { if (this.languages) { const lang = this.languages.find(({ code }) => code === codeGiven); if (lang) return lang.name;