fix: chat error message
This commit is contained in:
committed by
Zoltan Bettenbuk
parent
0fff1c3534
commit
6e10ca5dd2
@@ -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;
|
||||
|
||||
/**
|
||||
|
||||
@@ -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()
|
||||
}));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user