diff --git a/app/javascript/dashboard/i18n/locale/en/helpCenter.json b/app/javascript/dashboard/i18n/locale/en/helpCenter.json index 955122bdb0d5..7e8b6a85899e 100644 --- a/app/javascript/dashboard/i18n/locale/en/helpCenter.json +++ b/app/javascript/dashboard/i18n/locale/en/helpCenter.json @@ -249,6 +249,18 @@ "SUCCESS_MESSAGE": "Locale added successfully", "ERROR_MESSAGE": "Unable to add locale. Try again." } + }, + "CHANGE_DEFAULT_LOCALE": { + "API": { + "SUCCESS_MESSAGE": "Default locale updated successfully", + "ERROR_MESSAGE": "Unable to update default locale. Try again." + } + }, + "DELETE_LOCALE": { + "API": { + "SUCCESS_MESSAGE": "Locale removed from portal successfully", + "ERROR_MESSAGE": "Unable to remove locale from portal. Try again." + } } }, "TABLE": { diff --git a/app/javascript/dashboard/routes/dashboard/helpcenter/components/PortalListItem.vue b/app/javascript/dashboard/routes/dashboard/helpcenter/components/PortalListItem.vue index c77a70a90cfa..20da37baa291 100644 --- a/app/javascript/dashboard/routes/dashboard/helpcenter/components/PortalListItem.vue +++ b/app/javascript/dashboard/routes/dashboard/helpcenter/components/PortalListItem.vue @@ -165,8 +165,8 @@ @@ -223,14 +223,17 @@ export default { return 'success'; } }, - // Delete portal modal deleteMessageValue() { return ` ${this.selectedPortalForDelete.name}?`; }, - locales() { return this.portal ? this.portal.config.allowed_locales : []; }, + allowedLocales() { + return Object.keys(this.locales).map(key => { + return this.locales[key].code; + }); + }, }, methods: { addLocale() { @@ -270,11 +273,54 @@ export default { this.showAlert(this.alertMessage); } }, - swapLocale() { - this.$emit('swap'); + changeDefaultLocale({ localeCode }) { + this.updatePortalLocales({ + allowedLocales: this.allowedLocales, + defaultLocale: localeCode, + successMessage: this.$t( + 'HELP_CENTER.PORTAL.CHANGE_DEFAULT_LOCALE.API.SUCCESS_MESSAGE' + ), + errorMessage: this.$t( + 'HELP_CENTER.PORTAL.CHANGE_DEFAULT_LOCALE.API.ERROR_MESSAGE' + ), + }); + }, + deletePortalLocale({ localeCode }) { + const updatedLocales = this.allowedLocales.filter( + code => code !== localeCode + ); + const defaultLocale = this.portal.meta.default_locale; + this.updatePortalLocales({ + allowedLocales: updatedLocales, + defaultLocale, + successMessage: this.$t( + 'HELP_CENTER.PORTAL.DELETE_LOCALE.API.SUCCESS_MESSAGE' + ), + errorMessage: this.$t( + 'HELP_CENTER.PORTAL.DELETE_LOCALE.API.ERROR_MESSAGE' + ), + }); }, - deleteLocale() { - this.$emit('delete'); + async updatePortalLocales({ + allowedLocales, + defaultLocale, + successMessage, + errorMessage, + }) { + try { + await this.$store.dispatch('portals/update', { + portalSlug: this.portal.slug, + config: { + default_locale: defaultLocale, + allowed_locales: allowedLocales, + }, + }); + this.alertMessage = successMessage; + } catch (error) { + this.alertMessage = error?.message || errorMessage; + } finally { + this.showAlert(this.alertMessage); + } }, navigateToPortalEdit() { this.$router.push({ diff --git a/app/javascript/dashboard/routes/dashboard/helpcenter/components/PortalListItemTable.vue b/app/javascript/dashboard/routes/dashboard/helpcenter/components/PortalListItemTable.vue index 08e1ee7196bc..e57c7066d800 100644 --- a/app/javascript/dashboard/routes/dashboard/helpcenter/components/PortalListItemTable.vue +++ b/app/javascript/dashboard/routes/dashboard/helpcenter/components/PortalListItemTable.vue @@ -73,7 +73,7 @@ icon="arrow-swap" color-scheme="primary" :disabled="locale.code === selectedLocaleCode" - @click="swapLocale" + @click="changeDefaultLocale(locale.code)" /> @@ -113,11 +114,11 @@ export default { }, methods: { - swapLocale() { - this.$emit('swap'); + changeDefaultLocale(localeCode) { + this.$emit('change-default-locale', { localeCode }); }, - deleteLocale() { - this.$emit('delete'); + deleteLocale(localeCode) { + this.$emit('delete', { localeCode }); }, }, };