Fix: apply alert conditions while document is hidden (#1859)
This commit is contained in:
committed by
GitHub
parent
d5c6e8e8c8
commit
d70208a0a8
@@ -34,36 +34,45 @@ export const getAlertAudio = async () => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const shouldPlayAudio = data => {
|
export const shouldPlayAudio = (
|
||||||
const { conversation_id: currentConvId } = window.WOOT.$route.params;
|
message,
|
||||||
const currentUserId = window.WOOT.$store.getters.getCurrentUserID;
|
conversationId,
|
||||||
|
userId,
|
||||||
|
isDocHiddden
|
||||||
|
) => {
|
||||||
const {
|
const {
|
||||||
conversation_id: incomingConvId,
|
conversation_id: incomingConvId,
|
||||||
sender_id: senderId,
|
sender_id: senderId,
|
||||||
message_type: messageType,
|
message_type: messageType,
|
||||||
} = data;
|
private: isPrivate,
|
||||||
const isFromCurrentUser = currentUserId === senderId;
|
} = message;
|
||||||
|
const isFromCurrentUser = userId === senderId;
|
||||||
|
|
||||||
const playAudio =
|
const playAudio =
|
||||||
currentConvId !== incomingConvId &&
|
!isFromCurrentUser && (messageType === MESSAGE_TYPE.INCOMING || isPrivate);
|
||||||
!isFromCurrentUser &&
|
|
||||||
messageType === MESSAGE_TYPE.INCOMING;
|
if (isDocHiddden) return playAudio;
|
||||||
return playAudio;
|
if (conversationId !== incomingConvId) return playAudio;
|
||||||
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const newMessageNotification = data => {
|
export const newMessageNotification = data => {
|
||||||
|
const { conversation_id: currentConvId } = window.WOOT.$route.params;
|
||||||
|
const currentUserId = window.WOOT.$store.getters.getCurrentUserID;
|
||||||
|
const isDocHiddden = document.hidden;
|
||||||
|
|
||||||
const {
|
const {
|
||||||
enable_audio_alerts: enableAudioAlerts = false,
|
enable_audio_alerts: enableAudioAlerts = false,
|
||||||
} = window.WOOT.$store.getters.getUISettings;
|
} = window.WOOT.$store.getters.getUISettings;
|
||||||
if (!enableAudioAlerts) return false;
|
|
||||||
|
|
||||||
if (document.hidden) {
|
const playAudio = shouldPlayAudio(
|
||||||
|
data,
|
||||||
|
currentConvId,
|
||||||
|
currentUserId,
|
||||||
|
isDocHiddden
|
||||||
|
);
|
||||||
|
|
||||||
|
if (enableAudioAlerts && playAudio) {
|
||||||
window.playAudioAlert();
|
window.playAudioAlert();
|
||||||
} else {
|
|
||||||
const playAudio = shouldPlayAudio(data);
|
|
||||||
if (playAudio) {
|
|
||||||
window.playAudioAlert();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,109 @@
|
|||||||
|
/**
|
||||||
|
* @jest-environment jsdom
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { shouldPlayAudio } from '../AudioNotificationHelper';
|
||||||
|
|
||||||
|
describe('shouldPlayAudio', () => {
|
||||||
|
describe('Document active', () => {
|
||||||
|
it('Retuns true if incoming message', () => {
|
||||||
|
const message = {
|
||||||
|
conversation_id: 10,
|
||||||
|
sender_id: 5,
|
||||||
|
message_type: 0,
|
||||||
|
private: false,
|
||||||
|
};
|
||||||
|
const [conversationId, userId, isDocHiddden] = [1, 2, false];
|
||||||
|
const result = shouldPlayAudio(
|
||||||
|
message,
|
||||||
|
conversationId,
|
||||||
|
userId,
|
||||||
|
isDocHiddden
|
||||||
|
);
|
||||||
|
expect(result).toBe(true);
|
||||||
|
});
|
||||||
|
it('Retuns false if outgoing message', () => {
|
||||||
|
const message = {
|
||||||
|
conversation_id: 10,
|
||||||
|
sender_id: 5,
|
||||||
|
message_type: 1,
|
||||||
|
private: false,
|
||||||
|
};
|
||||||
|
const [conversationId, userId, isDocHiddden] = [1, 2, false];
|
||||||
|
const result = shouldPlayAudio(
|
||||||
|
message,
|
||||||
|
conversationId,
|
||||||
|
userId,
|
||||||
|
isDocHiddden
|
||||||
|
);
|
||||||
|
expect(result).toBe(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('Retuns false if from Same sender', () => {
|
||||||
|
const message = {
|
||||||
|
conversation_id: 1,
|
||||||
|
sender_id: 2,
|
||||||
|
message_type: 0,
|
||||||
|
private: false,
|
||||||
|
};
|
||||||
|
const [conversationId, userId, isDocHiddden] = [1, 2, true];
|
||||||
|
const result = shouldPlayAudio(
|
||||||
|
message,
|
||||||
|
conversationId,
|
||||||
|
userId,
|
||||||
|
isDocHiddden
|
||||||
|
);
|
||||||
|
expect(result).toBe(false);
|
||||||
|
});
|
||||||
|
it('Retuns true if private message from another agent', () => {
|
||||||
|
const message = {
|
||||||
|
conversation_id: 1,
|
||||||
|
sender_id: 5,
|
||||||
|
message_type: 1,
|
||||||
|
private: true,
|
||||||
|
};
|
||||||
|
const [conversationId, userId, isDocHiddden] = [1, 2, true];
|
||||||
|
const result = shouldPlayAudio(
|
||||||
|
message,
|
||||||
|
conversationId,
|
||||||
|
userId,
|
||||||
|
isDocHiddden
|
||||||
|
);
|
||||||
|
expect(result).toBe(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
describe('Document inactive', () => {
|
||||||
|
it('Retuns true if incoming message', () => {
|
||||||
|
const message = {
|
||||||
|
conversation_id: 1,
|
||||||
|
sender_id: 5,
|
||||||
|
message_type: 0,
|
||||||
|
private: false,
|
||||||
|
};
|
||||||
|
const [conversationId, userId, isDocHiddden] = [1, 2, true];
|
||||||
|
const result = shouldPlayAudio(
|
||||||
|
message,
|
||||||
|
conversationId,
|
||||||
|
userId,
|
||||||
|
isDocHiddden
|
||||||
|
);
|
||||||
|
expect(result).toBe(true);
|
||||||
|
});
|
||||||
|
it('Retuns false if outgoing message', () => {
|
||||||
|
const message = {
|
||||||
|
conversation_id: 1,
|
||||||
|
sender_id: 5,
|
||||||
|
message_type: 1,
|
||||||
|
private: false,
|
||||||
|
};
|
||||||
|
const [conversationId, userId, isDocHiddden] = [1, 2, true];
|
||||||
|
const result = shouldPlayAudio(
|
||||||
|
message,
|
||||||
|
conversationId,
|
||||||
|
userId,
|
||||||
|
isDocHiddden
|
||||||
|
);
|
||||||
|
expect(result).toBe(false);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user