80 lines
1.7 KiB
JavaScript
80 lines
1.7 KiB
JavaScript
// @flow
|
|
|
|
import {
|
|
ADD_MESSAGE,
|
|
CLEAR_MESSAGES,
|
|
SEND_MESSAGE,
|
|
TOGGLE_CHAT
|
|
} 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.
|
|
* @returns {{
|
|
* type: ADD_MESSAGE,
|
|
* displayName: string,
|
|
* hasRead: boolean,
|
|
* message: string,
|
|
* messageType: string,
|
|
* timestamp: string,
|
|
* }}
|
|
*/
|
|
export function addMessage(messageDetails: Object) {
|
|
return {
|
|
type: ADD_MESSAGE,
|
|
...messageDetails
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Clears the chat messages in Redux.
|
|
*
|
|
* @returns {{
|
|
* type: CLEAR_MESSAGES
|
|
* }}
|
|
*/
|
|
export function clearMessages() {
|
|
return {
|
|
type: CLEAR_MESSAGES
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Sends a chat message to everyone in the conference.
|
|
*
|
|
* @param {string} message - The chat message to send out.
|
|
* @returns {{
|
|
* type: SEND_MESSAGE,
|
|
* message: string
|
|
* }}
|
|
*/
|
|
export function sendMessage(message: string) {
|
|
return {
|
|
type: SEND_MESSAGE,
|
|
message
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Toggles display of the chat side panel.
|
|
*
|
|
* @returns {{
|
|
* type: TOGGLE_CHAT
|
|
* }}
|
|
*/
|
|
export function toggleChat() {
|
|
return {
|
|
type: TOGGLE_CHAT
|
|
};
|
|
}
|