feat: Adds the ability to disable the "new message notification" popup (#9594)

This commit is contained in:
Sivin Varghese
2024-06-11 08:14:58 +05:30
committed by GitHub
parent 20b2dc8c6f
commit 9689bbf0dd
6 changed files with 22 additions and 2 deletions

View File

@@ -62,6 +62,7 @@ const runSDK = ({ baseUrl, websiteToken }) => {
type: getBubbleView(chatwootSettings.type), type: getBubbleView(chatwootSettings.type),
launcherTitle: chatwootSettings.launcherTitle || '', launcherTitle: chatwootSettings.launcherTitle || '',
showPopoutButton: chatwootSettings.showPopoutButton || false, showPopoutButton: chatwootSettings.showPopoutButton || false,
showUnreadMessagesDialog: chatwootSettings.showUnreadMessagesDialog ?? true,
widgetStyle: getWidgetStyle(chatwootSettings.widgetStyle) || 'standard', widgetStyle: getWidgetStyle(chatwootSettings.widgetStyle) || 'standard',
resetTriggered: false, resetTriggered: false,
darkMode: getDarkMode(chatwootSettings.darkMode), darkMode: getDarkMode(chatwootSettings.darkMode),

View File

@@ -160,6 +160,7 @@ export const IFrameHelper = {
showPopoutButton: window.$chatwoot.showPopoutButton, showPopoutButton: window.$chatwoot.showPopoutButton,
widgetStyle: window.$chatwoot.widgetStyle, widgetStyle: window.$chatwoot.widgetStyle,
darkMode: window.$chatwoot.darkMode, darkMode: window.$chatwoot.darkMode,
showUnreadMessagesDialog: window.$chatwoot.showUnreadMessagesDialog,
campaignsSnoozedTill, campaignsSnoozedTill,
}); });
IFrameHelper.onLoad({ IFrameHelper.onLoad({

View File

@@ -71,6 +71,7 @@ export default {
messageCount: 'conversation/getMessageCount', messageCount: 'conversation/getMessageCount',
unreadMessageCount: 'conversation/getUnreadMessageCount', unreadMessageCount: 'conversation/getUnreadMessageCount',
isWidgetStyleFlat: 'appConfig/isWidgetStyleFlat', isWidgetStyleFlat: 'appConfig/isWidgetStyleFlat',
showUnreadMessagesDialog: 'appConfig/getShowUnreadMessagesDialog',
}), }),
isIFrame() { isIFrame() {
return IFrameHelper.isIFrame(); return IFrameHelper.isIFrame();
@@ -209,8 +210,13 @@ export default {
}, },
setUnreadView() { setUnreadView() {
const { unreadMessageCount } = this; const { unreadMessageCount } = this;
if (!this.showUnreadMessagesDialog) {
if (this.isIFrame && unreadMessageCount > 0 && !this.isWidgetOpen) { this.handleUnreadNotificationDot();
} else if (
this.isIFrame &&
unreadMessageCount > 0 &&
!this.isWidgetOpen
) {
this.replaceRoute('unread-messages').then(() => { this.replaceRoute('unread-messages').then(() => {
this.setIframeHeight(true); this.setIframeHeight(true);
IFrameHelper.sendMessage({ event: 'setUnreadMode' }); IFrameHelper.sendMessage({ event: 'setUnreadMode' });

View File

@@ -10,6 +10,7 @@ import {
const state = { const state = {
hideMessageBubble: false, hideMessageBubble: false,
isCampaignViewClicked: false, isCampaignViewClicked: false,
showUnreadMessagesDialog: true,
isWebWidgetTriggered: false, isWebWidgetTriggered: false,
isWidgetOpen: false, isWidgetOpen: false,
position: 'right', position: 'right',
@@ -29,6 +30,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,
getShowUnreadMessagesDialog: $state => $state.showUnreadMessagesDialog,
}; };
export const actions = { export const actions = {
@@ -38,6 +40,7 @@ export const actions = {
showPopoutButton, showPopoutButton,
position, position,
hideMessageBubble, hideMessageBubble,
showUnreadMessagesDialog,
widgetStyle = 'rounded', widgetStyle = 'rounded',
darkMode = 'light', darkMode = 'light',
} }
@@ -46,6 +49,7 @@ export const actions = {
hideMessageBubble: !!hideMessageBubble, hideMessageBubble: !!hideMessageBubble,
position: position || 'right', position: position || 'right',
showPopoutButton: !!showPopoutButton, showPopoutButton: !!showPopoutButton,
showUnreadMessagesDialog: !!showUnreadMessagesDialog,
widgetStyle, widgetStyle,
darkMode, darkMode,
}); });
@@ -75,6 +79,7 @@ export const mutations = {
$state.widgetStyle = data.widgetStyle; $state.widgetStyle = data.widgetStyle;
$state.darkMode = data.darkMode; $state.darkMode = data.darkMode;
$state.locale = data.locale || $state.locale; $state.locale = data.locale || $state.locale;
$state.showUnreadMessagesDialog = data.showUnreadMessagesDialog;
}, },
[TOGGLE_WIDGET_OPEN]($state, isWidgetOpen) { [TOGGLE_WIDGET_OPEN]($state, isWidgetOpen) {
$state.isWidgetOpen = isWidgetOpen; $state.isWidgetOpen = isWidgetOpen;

View File

@@ -13,4 +13,10 @@ describe('#getters', () => {
expect(getters.getReferrerHost(state)).toEqual('www.chatwoot.com'); expect(getters.getReferrerHost(state)).toEqual('www.chatwoot.com');
}); });
}); });
describe('#getShowUnreadMessagesDialog', () => {
it('returns correct value', () => {
const state = { showUnreadMessagesDialog: true };
expect(getters.getShowUnreadMessagesDialog(state)).toEqual(true);
});
});
}); });

View File

@@ -14,6 +14,7 @@
window.chatwootSettings = { window.chatwootSettings = {
hideMessageBubble: false, hideMessageBubble: false,
// showUnreadMessagesDialog: false,
// baseDomain: '.loca.lt', // baseDomain: '.loca.lt',
position: '<%= @widget_position %>', position: '<%= @widget_position %>',
locale: 'en', locale: 'en',