mirror of
https://github.com/lingble/chatwoot.git
synced 2025-11-03 04:27:53 +00:00
fix: Help Center articles are not available on the widget [CW-2534] (#7954)
This commit is contained in:
committed by
GitHub
parent
bdeb2f9812
commit
fabb3c8da4
@@ -111,6 +111,7 @@ export default {
|
|||||||
'setWidgetColor',
|
'setWidgetColor',
|
||||||
'setBubbleVisibility',
|
'setBubbleVisibility',
|
||||||
'setColorScheme',
|
'setColorScheme',
|
||||||
|
'setLocale',
|
||||||
]),
|
]),
|
||||||
...mapActions('conversation', ['fetchOldConversations', 'setUserLastSeen']),
|
...mapActions('conversation', ['fetchOldConversations', 'setUserLastSeen']),
|
||||||
...mapActions('campaign', [
|
...mapActions('campaign', [
|
||||||
@@ -152,8 +153,10 @@ export default {
|
|||||||
|
|
||||||
if (hasLocaleWithVariation) {
|
if (hasLocaleWithVariation) {
|
||||||
this.$root.$i18n.locale = localeWithVariation;
|
this.$root.$i18n.locale = localeWithVariation;
|
||||||
|
this.$store.dispatch('appConfig/setLocale', localeWithVariation);
|
||||||
} else if (hasLocaleWithoutVariation) {
|
} else if (hasLocaleWithoutVariation) {
|
||||||
this.$root.$i18n.locale = localeWithoutVariation;
|
this.$root.$i18n.locale = localeWithoutVariation;
|
||||||
|
this.$store.dispatch('appConfig/setLocale', localeWithoutVariation);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
registerUnreadEvents() {
|
registerUnreadEvents() {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import {
|
|||||||
SET_WIDGET_APP_CONFIG,
|
SET_WIDGET_APP_CONFIG,
|
||||||
SET_WIDGET_COLOR,
|
SET_WIDGET_COLOR,
|
||||||
TOGGLE_WIDGET_OPEN,
|
TOGGLE_WIDGET_OPEN,
|
||||||
|
SET_WIDGET_LOCALE,
|
||||||
} from '../types';
|
} from '../types';
|
||||||
|
|
||||||
const state = {
|
const state = {
|
||||||
@@ -18,6 +19,7 @@ const state = {
|
|||||||
widgetColor: '',
|
widgetColor: '',
|
||||||
widgetStyle: 'standard',
|
widgetStyle: 'standard',
|
||||||
darkMode: 'light',
|
darkMode: 'light',
|
||||||
|
locale: 'en',
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getters = {
|
export const getters = {
|
||||||
@@ -29,6 +31,7 @@ export const getters = {
|
|||||||
getReferrerHost: $state => $state.referrerHost,
|
getReferrerHost: $state => $state.referrerHost,
|
||||||
isWidgetStyleFlat: $state => $state.widgetStyle === 'flat',
|
isWidgetStyleFlat: $state => $state.widgetStyle === 'flat',
|
||||||
darkMode: $state => $state.darkMode,
|
darkMode: $state => $state.darkMode,
|
||||||
|
widgetLocale: $state => $state.locale,
|
||||||
};
|
};
|
||||||
|
|
||||||
export const actions = {
|
export const actions = {
|
||||||
@@ -65,6 +68,9 @@ export const actions = {
|
|||||||
setBubbleVisibility({ commit }, hideMessageBubble) {
|
setBubbleVisibility({ commit }, hideMessageBubble) {
|
||||||
commit(SET_BUBBLE_VISIBILITY, hideMessageBubble);
|
commit(SET_BUBBLE_VISIBILITY, hideMessageBubble);
|
||||||
},
|
},
|
||||||
|
setLocale({ commit }, locale) {
|
||||||
|
commit(SET_WIDGET_LOCALE, locale);
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export const mutations = {
|
export const mutations = {
|
||||||
@@ -74,6 +80,7 @@ export const mutations = {
|
|||||||
$state.hideMessageBubble = data.hideMessageBubble;
|
$state.hideMessageBubble = data.hideMessageBubble;
|
||||||
$state.widgetStyle = data.widgetStyle;
|
$state.widgetStyle = data.widgetStyle;
|
||||||
$state.darkMode = data.darkMode;
|
$state.darkMode = data.darkMode;
|
||||||
|
$state.locale = data.locale || $state.locale;
|
||||||
},
|
},
|
||||||
[TOGGLE_WIDGET_OPEN]($state, isWidgetOpen) {
|
[TOGGLE_WIDGET_OPEN]($state, isWidgetOpen) {
|
||||||
$state.isWidgetOpen = isWidgetOpen;
|
$state.isWidgetOpen = isWidgetOpen;
|
||||||
@@ -90,6 +97,9 @@ export const mutations = {
|
|||||||
[SET_COLOR_SCHEME]($state, darkMode) {
|
[SET_COLOR_SCHEME]($state, darkMode) {
|
||||||
$state.darkMode = darkMode;
|
$state.darkMode = darkMode;
|
||||||
},
|
},
|
||||||
|
[SET_WIDGET_LOCALE]($state, locale) {
|
||||||
|
$state.locale = locale || $state.locale;
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|||||||
@@ -31,4 +31,11 @@ describe('#actions', () => {
|
|||||||
expect(commit.mock.calls).toEqual([['SET_COLOR_SCHEME', 'dark']]);
|
expect(commit.mock.calls).toEqual([['SET_COLOR_SCHEME', 'dark']]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('#setLocale', () => {
|
||||||
|
it('creates actions for setting the locale properly', () => {
|
||||||
|
actions.setLocale({ commit }, 'es_ES');
|
||||||
|
expect(commit.mock.calls).toEqual([['SET_WIDGET_LOCALE', 'es_ES']]);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -32,4 +32,12 @@ describe('#mutations', () => {
|
|||||||
expect(state.darkMode).toEqual('dark');
|
expect(state.darkMode).toEqual('dark');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('#SET_WIDGET_LOCALE', () => {
|
||||||
|
it('sets widget locale properly', () => {
|
||||||
|
const state = { locale: 'en' };
|
||||||
|
mutations.SET_WIDGET_LOCALE(state, 'es_ES');
|
||||||
|
expect(state.locale).toEqual('es_ES');
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -7,3 +7,4 @@ export const UPDATE_CONVERSATION_ATTRIBUTES = 'UPDATE_CONVERSATION_ATTRIBUTES';
|
|||||||
export const TOGGLE_WIDGET_OPEN = 'TOGGLE_WIDGET_OPEN';
|
export const TOGGLE_WIDGET_OPEN = 'TOGGLE_WIDGET_OPEN';
|
||||||
export const SET_REFERRER_HOST = 'SET_REFERRER_HOST';
|
export const SET_REFERRER_HOST = 'SET_REFERRER_HOST';
|
||||||
export const SET_BUBBLE_VISIBILITY = 'SET_BUBBLE_VISIBILITY';
|
export const SET_BUBBLE_VISIBILITY = 'SET_BUBBLE_VISIBILITY';
|
||||||
|
export const SET_WIDGET_LOCALE = 'SET_WIDGET_LOCALE';
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ export default {
|
|||||||
unreadMessageCount: 'conversation/getUnreadMessageCount',
|
unreadMessageCount: 'conversation/getUnreadMessageCount',
|
||||||
popularArticles: 'article/popularArticles',
|
popularArticles: 'article/popularArticles',
|
||||||
articleUiFlags: 'article/uiFlags',
|
articleUiFlags: 'article/uiFlags',
|
||||||
|
widgetLocale: 'appConfig/widgetLocale',
|
||||||
}),
|
}),
|
||||||
portal() {
|
portal() {
|
||||||
return window.chatwootWebChannel.portal;
|
return window.chatwootWebChannel.portal;
|
||||||
@@ -79,12 +80,28 @@ export default {
|
|||||||
this.popularArticles.length
|
this.popularArticles.length
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
defaultLocale() {
|
||||||
|
const widgetLocale = this.widgetLocale;
|
||||||
|
const {
|
||||||
|
allowed_locales: allowedLocales,
|
||||||
|
default_locale: defaultLocale,
|
||||||
|
} = this.portal.config;
|
||||||
|
|
||||||
|
// IMPORTANT: Variation strict locale matching, Follow iso_639_1_code
|
||||||
|
// If the exact match of a locale is available in the list of portal locales, return it
|
||||||
|
// Else return the default locale. Eg: `es` will not work if `es_ES` is available in the list
|
||||||
|
if (allowedLocales.includes(widgetLocale)) {
|
||||||
|
return widgetLocale;
|
||||||
|
}
|
||||||
|
return defaultLocale;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
if (this.portal && this.popularArticles.length === 0) {
|
if (this.portal && this.popularArticles.length === 0) {
|
||||||
|
const locale = this.defaultLocale;
|
||||||
this.$store.dispatch('article/fetch', {
|
this.$store.dispatch('article/fetch', {
|
||||||
slug: this.portal.slug,
|
slug: this.portal.slug,
|
||||||
locale: 'en',
|
locale,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -102,9 +119,9 @@ export default {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
viewAllArticles() {
|
viewAllArticles() {
|
||||||
|
const locale = this.defaultLocale;
|
||||||
const {
|
const {
|
||||||
portal: { slug },
|
portal: { slug },
|
||||||
locale = 'en',
|
|
||||||
} = window.chatwootWebChannel;
|
} = window.chatwootWebChannel;
|
||||||
this.openArticleInArticleViewer(`/hc/${slug}/${locale}`);
|
this.openArticleInArticleViewer(`/hc/${slug}/${locale}`);
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user