135 lines
3.1 KiB
JavaScript
135 lines
3.1 KiB
JavaScript
// @flow
|
|
|
|
import {
|
|
ADD_MESSAGE,
|
|
CLEAR_MESSAGES,
|
|
CLOSE_CHAT,
|
|
EDIT_MESSAGE,
|
|
SEND_MESSAGE,
|
|
SET_PRIVATE_MESSAGE_RECIPIENT,
|
|
SET_IS_POLL_TAB_FOCUSED
|
|
} from './actionTypes';
|
|
|
|
/**
|
|
* Adds a chat message to the collection of messages.
|
|
*
|
|
* @param {Object} messageDetails - The chat message to save.
|
|
* @param {string} messageDetails.displayName - The displayName of the
|
|
* participant that authored the message.
|
|
* @param {boolean} messageDetails.hasRead - Whether or not to immediately mark
|
|
* the message as read.
|
|
* @param {string} messageDetails.message - The received message to display.
|
|
* @param {string} messageDetails.messageType - The kind of message, such as
|
|
* "error" or "local" or "remote".
|
|
* @param {string} messageDetails.timestamp - A timestamp to display for when
|
|
* the message was received.
|
|
* @param {string} messageDetails.isReaction - Whether or not the
|
|
* message is a reaction message.
|
|
* @returns {{
|
|
* type: ADD_MESSAGE,
|
|
* displayName: string,
|
|
* hasRead: boolean,
|
|
* message: string,
|
|
* messageType: string,
|
|
* timestamp: string,
|
|
* isReaction: boolean
|
|
* }}
|
|
*/
|
|
export function addMessage(messageDetails: Object) {
|
|
return {
|
|
type: ADD_MESSAGE,
|
|
...messageDetails
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Edits an existing chat message.
|
|
*
|
|
* @param {Object} message - The chat message to edit/override. The messages will be matched from the state
|
|
* comparing the messageId.
|
|
* @returns {{
|
|
* type: EDIT_MESSAGE,
|
|
* message: Object
|
|
* }}
|
|
*/
|
|
export function editMessage(message: Object) {
|
|
return {
|
|
type: EDIT_MESSAGE,
|
|
message
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Clears the chat messages in Redux.
|
|
*
|
|
* @returns {{
|
|
* type: CLEAR_MESSAGES
|
|
* }}
|
|
*/
|
|
export function clearMessages() {
|
|
return {
|
|
type: CLEAR_MESSAGES
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Action to signal the closing of the chat dialog.
|
|
*
|
|
* @returns {{
|
|
* type: CLOSE_CHAT
|
|
* }}
|
|
*/
|
|
export function closeChat() {
|
|
return {
|
|
type: CLOSE_CHAT
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Sends a chat message to everyone in the conference.
|
|
*
|
|
* @param {string} message - The chat message to send out.
|
|
* @param {boolean} ignorePrivacy - True if the privacy notification should be ignored.
|
|
* @returns {{
|
|
* type: SEND_MESSAGE,
|
|
* ignorePrivacy: boolean,
|
|
* message: string
|
|
* }}
|
|
*/
|
|
export function sendMessage(message: string, ignorePrivacy: boolean = false) {
|
|
return {
|
|
type: SEND_MESSAGE,
|
|
ignorePrivacy,
|
|
message
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Initiates the sending of a private message to the supplied participant.
|
|
*
|
|
* @param {Participant} participant - The participant to set the recipient to.
|
|
* @returns {{
|
|
* participant: Participant,
|
|
* type: SET_PRIVATE_MESSAGE_RECIPIENT
|
|
* }}
|
|
*/
|
|
export function setPrivateMessageRecipient(participant: Object) {
|
|
return {
|
|
participant,
|
|
type: SET_PRIVATE_MESSAGE_RECIPIENT
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Set the value of _isPollsTabFocused.
|
|
*
|
|
* @param {boolean} isPollsTabFocused - The new value for _isPollsTabFocused.
|
|
* @returns {Function}
|
|
*/
|
|
export function setIsPollsTabFocused(isPollsTabFocused: boolean) {
|
|
return {
|
|
isPollsTabFocused,
|
|
type: SET_IS_POLL_TAB_FOCUSED
|
|
};
|
|
}
|