fix: chat error message

This commit is contained in:
Bettenbuk Zoltan
2019-10-09 18:35:09 +02:00
committed by Zoltan Bettenbuk
parent 0fff1c3534
commit 6e10ca5dd2
9 changed files with 60 additions and 60 deletions
@@ -77,6 +77,11 @@ declare var APP: Object;
* @returns {void}
*/
function _addConferenceListeners(conference, dispatch) {
// A simple logger for conference errors received through
// the listener. These errors are not handled now, but logged.
conference.on(JitsiConferenceEvents.CONFERENCE_ERROR,
error => logger.error('Conference error.', error));
// Dispatches into features/base/conference follow:
conference.on(
@@ -57,6 +57,21 @@ export default class AbstractChatMessage<P: Props> extends PureComponent<P> {
.format(TIMESTAMP_FORMAT);
}
/**
* Generates the message text to be redered in the component.
*
* @returns {string}
*/
_getMessageText() {
const { message } = this.props;
return message.messageType === 'error'
? this.props.t('chat.error', {
error: message.message
})
: message.message;
}
/**
* Returns the message that is displayed as a notice for private messages.
*
@@ -47,13 +47,6 @@ class ChatMessage extends AbstractChatMessage<Props> {
textWrapperStyle.push(styles.systemTextWrapper);
}
const messageText = message.messageType === 'error'
? this.props.t('chat.error', {
error: message.error,
originalText: message.message
})
: message.message;
return (
<View style = { styles.messageWrapper } >
{ this._renderAvatar() }
@@ -65,7 +58,7 @@ class ChatMessage extends AbstractChatMessage<Props> {
&& this._renderDisplayName()
}
<Linkify linkStyle = { styles.chatLink }>
{ replaceNonUnicodeEmojis(messageText) }
{ replaceNonUnicodeEmojis(this._getMessageText()) }
</Linkify>
{
message.privateMessage
@@ -87,6 +80,8 @@ class ChatMessage extends AbstractChatMessage<Props> {
_getFormattedTimestamp: () => string;
_getMessageText: () => string;
_getPrivateNoticeMessage: () => string;
/**
@@ -24,17 +24,10 @@ class ChatMessage extends AbstractChatMessage<Props> {
*/
render() {
const { message } = this.props;
const messageToDisplay = message.messageType === 'error'
? this.props.t('chat.error', {
error: message.error,
originalText: message.message
})
: message.message;
const processedMessage = [];
// content is an array of text and emoji components
const content = toArray(messageToDisplay, { className: 'smiley' });
const content = toArray(this._getMessageText(), { className: 'smiley' });
content.forEach(i => {
if (typeof i === 'string') {
@@ -67,6 +60,8 @@ class ChatMessage extends AbstractChatMessage<Props> {
_getFormattedTimestamp: () => string;
_getMessageText: () => string;
_getPrivateNoticeMessage: () => string;
/**
+30 -11
View File
@@ -6,7 +6,10 @@ import {
getCurrentConference
} from '../base/conference';
import { openDialog } from '../base/dialog';
import { JitsiConferenceEvents } from '../base/lib-jitsi-meet';
import {
JitsiConferenceErrors,
JitsiConferenceEvents
} from '../base/lib-jitsi-meet';
import {
getLocalParticipant,
getParticipantById,
@@ -139,10 +142,10 @@ StateListenerRegistry.register(
* @private
* @returns {void}
*/
function _addChatMsgListener(conference, { dispatch, getState }) {
function _addChatMsgListener(conference, store) {
if ((typeof interfaceConfig === 'object' && interfaceConfig.filmStripOnly)
|| (typeof APP !== 'undefined' && !isButtonEnabled('chat'))
|| getState()['features/base/config'].iAmRecorder) {
|| store.getState()['features/base/config'].iAmRecorder) {
// We don't register anything on web if we're in filmStripOnly mode, or
// the chat button is not enabled in interfaceConfig.
// or we are in iAmRecorder mode
@@ -152,10 +155,7 @@ function _addChatMsgListener(conference, { dispatch, getState }) {
conference.on(
JitsiConferenceEvents.MESSAGE_RECEIVED,
(id, message, timestamp, nick) => {
_handleReceivedMessage({
dispatch,
getState
}, {
_handleReceivedMessage(store, {
id,
message,
nick,
@@ -168,10 +168,7 @@ function _addChatMsgListener(conference, { dispatch, getState }) {
conference.on(
JitsiConferenceEvents.PRIVATE_MESSAGE_RECEIVED,
(id, message, timestamp) => {
_handleReceivedMessage({
dispatch,
getState
}, {
_handleReceivedMessage(store, {
id,
message,
privateMessage: true,
@@ -180,6 +177,28 @@ function _addChatMsgListener(conference, { dispatch, getState }) {
});
}
);
conference.on(
JitsiConferenceEvents.CONFERENCE_ERROR, (errorType, error) => {
errorType === JitsiConferenceErrors.CHAT_ERROR && _handleChatError(store, error);
});
}
/**
* Handles a chat error received from the xmpp server.
*
* @param {Store} store - The Redux store.
* @param {string} error - The error message.
* @returns {void}
*/
function _handleChatError({ dispatch }, error) {
dispatch(addMessage({
hasRead: true,
messageType: 'error',
message: error,
privateMessage: false,
timestamp: Date.now()
}));
}
/**