瀏覽代碼

Bugfixes.

- TypeError
- Correctly Identify MUC
JC Brand 4 月之前
父節點
當前提交
02836a38eb

+ 2 - 2
src/headless/plugins/vcard/utils.js

@@ -75,7 +75,7 @@ export function onOccupantAvatarChanged(occupant) {
  * @returns {Promise<VCard|null>}
  */
 export async function getVCardForModel(model, lazy_load = false) {
-    await api.waitUntil('VCardsInitialized');
+    await api.waitUntil("VCardsInitialized");
 
     let vcard;
     if (model instanceof _converse.exports.MUCOccupant) {
@@ -182,7 +182,7 @@ export async function fetchVCard(jid) {
         return {
             jid,
             stanza: isElement(error) ? error : null, // TODO: remove?
-            error: isElement(error) ? await parseErrorStanza(error) : error.message,
+            error: isElement(error) ? await parseErrorStanza(error) : error?.message ?? '',
             vcard_error: new Date().toISOString(),
         };
     }

+ 11 - 3
src/plugins/muc-views/message-form.js

@@ -2,7 +2,7 @@ import AutoComplete from 'shared/autocomplete/autocomplete.js';
 import MessageForm from 'plugins/chatview/message-form.js';
 import tplMUCMessageForm from './templates/message-form.js';
 import { FILTER_CONTAINS, FILTER_STARTSWITH } from 'shared/autocomplete/utils.js';
-import { api, converse } from "@converse/headless";
+import { MUCOccupant, api, converse, log } from "@converse/headless";
 import { getAutoCompleteListItem } from './utils.js';
 
 
@@ -18,9 +18,17 @@ export default class MUCMessageForm extends MessageForm {
         return tplMUCMessageForm(this);
     }
 
+    /**
+     * @returns {boolean}
+     */
     shouldAutoComplete () {
-        const entered = this.model.session.get('connection_status') === converse.ROOMSTATUS.ENTERED;
-        return entered && !(this.model.features.get('moderated') && this.model.getOwnRole() === 'visitor');
+        const muc = (this.model instanceof MUCOccupant) ? this.model.collection.chatroom : this.model;
+        if (muc) {
+            const entered = muc.session.get('connection_status') === converse.ROOMSTATUS.ENTERED;
+            return entered && !(muc.features.get('moderated') && muc.getOwnRole() === 'visitor');
+        }
+        log.debug("Could not determine MUC for MUCMessageForm element");
+        return false;
     }
 
     initMentionAutoComplete () {

+ 3 - 0
src/types/plugins/muc-views/message-form.d.ts

@@ -1,4 +1,7 @@
 export default class MUCMessageForm extends MessageForm {
+    /**
+     * @returns {boolean}
+     */
     shouldAutoComplete(): boolean;
     initMentionAutoComplete(): void;
     mention_auto_complete: AutoComplete;