瀏覽代碼

fix: chat error message

j8
Bettenbuk Zoltan 5 年之前
父節點
當前提交
6e10ca5dd2

+ 0
- 29
conference.js 查看文件

@@ -104,7 +104,6 @@ import {
104 104
     trackRemoved
105 105
 } from './react/features/base/tracks';
106 106
 import { getJitsiMeetGlobalNS } from './react/features/base/util';
107
-import { addMessage } from './react/features/chat';
108 107
 import { showDesktopPicker } from './react/features/desktop-picker';
109 108
 import { appendSuffix } from './react/features/display-name';
110 109
 import {
@@ -114,7 +113,6 @@ import {
114 113
 import { mediaPermissionPromptVisibilityChanged } from './react/features/overlay';
115 114
 import { suspendDetected } from './react/features/power-monitor';
116 115
 import { setSharedVideoStatus } from './react/features/shared-video';
117
-import { isButtonEnabled } from './react/features/toolbox';
118 116
 import { endpointMessageReceived } from './react/features/subtitles';
119 117
 
120 118
 const logger = require('jitsi-meet-logger').getLogger(__filename);
@@ -244,8 +242,6 @@ class ConferenceConnector {
244 242
             this._handleConferenceJoined.bind(this));
245 243
         room.on(JitsiConferenceEvents.CONFERENCE_FAILED,
246 244
             this._onConferenceFailed.bind(this));
247
-        room.on(JitsiConferenceEvents.CONFERENCE_ERROR,
248
-            this._onConferenceError.bind(this));
249 245
     }
250 246
 
251 247
     /**
@@ -348,31 +344,6 @@ class ConferenceConnector {
348 344
         }
349 345
     }
350 346
 
351
-    /**
352
-     *
353
-     */
354
-    _onConferenceError(err, ...params) {
355
-        logger.error('CONFERENCE Error:', err, params);
356
-        switch (err) {
357
-        case JitsiConferenceErrors.CHAT_ERROR:
358
-            logger.error('Chat error.', err);
359
-            if (isButtonEnabled('chat') && !interfaceConfig.filmStripOnly) {
360
-                const [ code, msg ] = params;
361
-
362
-                APP.store.dispatch(addMessage({
363
-                    hasRead: true,
364
-                    error: code,
365
-                    message: msg,
366
-                    messageType: 'error',
367
-                    timestamp: Date.now()
368
-                }));
369
-            }
370
-            break;
371
-        default:
372
-            logger.error('Unknown error.', err);
373
-        }
374
-    }
375
-
376 347
     /**
377 348
      *
378 349
      */

+ 1
- 1
lang/main.json 查看文件

@@ -46,7 +46,7 @@
46 46
         "today": "Today"
47 47
     },
48 48
     "chat": {
49
-        "error": "Error: your message \"{{originalText}}\" was not sent. Reason: {{error}}",
49
+        "error": "Error: your message was not sent. Reason: {{error}}",
50 50
         "messagebox": "Type a message",
51 51
         "messageTo": "Private message to {{recipient}}",
52 52
         "nickname": {

+ 2
- 2
package-lock.json 查看文件

@@ -11681,8 +11681,8 @@
11681 11681
       }
11682 11682
     },
11683 11683
     "lib-jitsi-meet": {
11684
-      "version": "github:jitsi/lib-jitsi-meet#16e08408aa3fa8303e236b9ffdb0dfce65e79bb7",
11685
-      "from": "github:jitsi/lib-jitsi-meet#16e08408aa3fa8303e236b9ffdb0dfce65e79bb7",
11684
+      "version": "github:jitsi/lib-jitsi-meet#f9808adb8eb523bae3318f9f8ef49b544651485f",
11685
+      "from": "github:jitsi/lib-jitsi-meet#f9808adb8eb523bae3318f9f8ef49b544651485f",
11686 11686
       "requires": {
11687 11687
         "@jitsi/sdp-interop": "0.1.14",
11688 11688
         "@jitsi/sdp-simulcast": "0.2.2",

+ 1
- 1
package.json 查看文件

@@ -56,7 +56,7 @@
56 56
     "js-utils": "github:jitsi/js-utils#192b1c996e8c05530eb1f19e82a31069c3021e31",
57 57
     "jsrsasign": "8.0.12",
58 58
     "jwt-decode": "2.2.0",
59
-    "lib-jitsi-meet": "github:jitsi/lib-jitsi-meet#16e08408aa3fa8303e236b9ffdb0dfce65e79bb7",
59
+    "lib-jitsi-meet": "github:jitsi/lib-jitsi-meet#f9808adb8eb523bae3318f9f8ef49b544651485f",
60 60
     "libflacjs": "github:mmig/libflac.js#93d37e7f811f01cf7d8b6a603e38bd3c3810907d",
61 61
     "lodash": "4.17.13",
62 62
     "moment": "2.19.4",

+ 5
- 0
react/features/base/conference/actions.js 查看文件

@@ -77,6 +77,11 @@ declare var APP: Object;
77 77
  * @returns {void}
78 78
  */
79 79
 function _addConferenceListeners(conference, dispatch) {
80
+    // A simple logger for conference errors received through
81
+    // the listener. These errors are not handled now, but logged.
82
+    conference.on(JitsiConferenceEvents.CONFERENCE_ERROR,
83
+        error => logger.error('Conference error.', error));
84
+
80 85
     // Dispatches into features/base/conference follow:
81 86
 
82 87
     conference.on(

+ 15
- 0
react/features/chat/components/AbstractChatMessage.js 查看文件

@@ -57,6 +57,21 @@ export default class AbstractChatMessage<P: Props> extends PureComponent<P> {
57 57
             .format(TIMESTAMP_FORMAT);
58 58
     }
59 59
 
60
+    /**
61
+     * Generates the message text to be redered in the component.
62
+     *
63
+     * @returns {string}
64
+     */
65
+    _getMessageText() {
66
+        const { message } = this.props;
67
+
68
+        return message.messageType === 'error'
69
+            ? this.props.t('chat.error', {
70
+                error: message.message
71
+            })
72
+            : message.message;
73
+    }
74
+
60 75
     /**
61 76
      * Returns the message that is displayed as a notice for private messages.
62 77
      *

+ 3
- 8
react/features/chat/components/native/ChatMessage.js 查看文件

@@ -47,13 +47,6 @@ class ChatMessage extends AbstractChatMessage<Props> {
47 47
             textWrapperStyle.push(styles.systemTextWrapper);
48 48
         }
49 49
 
50
-        const messageText = message.messageType === 'error'
51
-            ? this.props.t('chat.error', {
52
-                error: message.error,
53
-                originalText: message.message
54
-            })
55
-            : message.message;
56
-
57 50
         return (
58 51
             <View style = { styles.messageWrapper } >
59 52
                 { this._renderAvatar() }
@@ -65,7 +58,7 @@ class ChatMessage extends AbstractChatMessage<Props> {
65 58
                                     && this._renderDisplayName()
66 59
                             }
67 60
                             <Linkify linkStyle = { styles.chatLink }>
68
-                                { replaceNonUnicodeEmojis(messageText) }
61
+                                { replaceNonUnicodeEmojis(this._getMessageText()) }
69 62
                             </Linkify>
70 63
                             {
71 64
                                 message.privateMessage
@@ -87,6 +80,8 @@ class ChatMessage extends AbstractChatMessage<Props> {
87 80
 
88 81
     _getFormattedTimestamp: () => string;
89 82
 
83
+    _getMessageText: () => string;
84
+
90 85
     _getPrivateNoticeMessage: () => string;
91 86
 
92 87
     /**

+ 3
- 8
react/features/chat/components/web/ChatMessage.js 查看文件

@@ -24,17 +24,10 @@ class ChatMessage extends AbstractChatMessage<Props> {
24 24
      */
25 25
     render() {
26 26
         const { message } = this.props;
27
-        const messageToDisplay = message.messageType === 'error'
28
-            ? this.props.t('chat.error', {
29
-                error: message.error,
30
-                originalText: message.message
31
-            })
32
-            : message.message;
33
-
34 27
         const processedMessage = [];
35 28
 
36 29
         // content is an array of text and emoji components
37
-        const content = toArray(messageToDisplay, { className: 'smiley' });
30
+        const content = toArray(this._getMessageText(), { className: 'smiley' });
38 31
 
39 32
         content.forEach(i => {
40 33
             if (typeof i === 'string') {
@@ -67,6 +60,8 @@ class ChatMessage extends AbstractChatMessage<Props> {
67 60
 
68 61
     _getFormattedTimestamp: () => string;
69 62
 
63
+    _getMessageText: () => string;
64
+
70 65
     _getPrivateNoticeMessage: () => string;
71 66
 
72 67
     /**

+ 30
- 11
react/features/chat/middleware.js 查看文件

@@ -6,7 +6,10 @@ import {
6 6
     getCurrentConference
7 7
 } from '../base/conference';
8 8
 import { openDialog } from '../base/dialog';
9
-import { JitsiConferenceEvents } from '../base/lib-jitsi-meet';
9
+import {
10
+    JitsiConferenceErrors,
11
+    JitsiConferenceEvents
12
+} from '../base/lib-jitsi-meet';
10 13
 import {
11 14
     getLocalParticipant,
12 15
     getParticipantById,
@@ -139,10 +142,10 @@ StateListenerRegistry.register(
139 142
  * @private
140 143
  * @returns {void}
141 144
  */
142
-function _addChatMsgListener(conference, { dispatch, getState }) {
145
+function _addChatMsgListener(conference, store) {
143 146
     if ((typeof interfaceConfig === 'object' && interfaceConfig.filmStripOnly)
144 147
         || (typeof APP !== 'undefined' && !isButtonEnabled('chat'))
145
-        || getState()['features/base/config'].iAmRecorder) {
148
+        || store.getState()['features/base/config'].iAmRecorder) {
146 149
         // We don't register anything on web if we're in filmStripOnly mode, or
147 150
         // the chat button is not enabled in interfaceConfig.
148 151
         // or we are in iAmRecorder mode
@@ -152,10 +155,7 @@ function _addChatMsgListener(conference, { dispatch, getState }) {
152 155
     conference.on(
153 156
         JitsiConferenceEvents.MESSAGE_RECEIVED,
154 157
         (id, message, timestamp, nick) => {
155
-            _handleReceivedMessage({
156
-                dispatch,
157
-                getState
158
-            }, {
158
+            _handleReceivedMessage(store, {
159 159
                 id,
160 160
                 message,
161 161
                 nick,
@@ -168,10 +168,7 @@ function _addChatMsgListener(conference, { dispatch, getState }) {
168 168
     conference.on(
169 169
         JitsiConferenceEvents.PRIVATE_MESSAGE_RECEIVED,
170 170
         (id, message, timestamp) => {
171
-            _handleReceivedMessage({
172
-                dispatch,
173
-                getState
174
-            }, {
171
+            _handleReceivedMessage(store, {
175 172
                 id,
176 173
                 message,
177 174
                 privateMessage: true,
@@ -180,6 +177,28 @@ function _addChatMsgListener(conference, { dispatch, getState }) {
180 177
             });
181 178
         }
182 179
     );
180
+
181
+    conference.on(
182
+        JitsiConferenceEvents.CONFERENCE_ERROR, (errorType, error) => {
183
+            errorType === JitsiConferenceErrors.CHAT_ERROR && _handleChatError(store, error);
184
+        });
185
+}
186
+
187
+/**
188
+ * Handles a chat error received from the xmpp server.
189
+ *
190
+ * @param {Store} store - The Redux store.
191
+ * @param  {string} error - The error message.
192
+ * @returns {void}
193
+ */
194
+function _handleChatError({ dispatch }, error) {
195
+    dispatch(addMessage({
196
+        hasRead: true,
197
+        messageType: 'error',
198
+        message: error,
199
+        privateMessage: false,
200
+        timestamp: Date.now()
201
+    }));
183 202
 }
184 203
 
185 204
 /**

Loading…
取消
儲存