conversejs/converse.js

Input hangs, no messages visible

maxwelljens opened this issue · 5 comments

Describe the bug
When conversejs is loaded and a user logs into the application, login works successfully and retrieves relevant account details such as the avatar. However, when a user attempts to write anything, the input box greys out, and no further action is possible. Message history in channels is also not fetched. File uploads do not work either.

To Reproduce
Steps to reproduce the behavior:

  1. Go to Conversejs instance
  2. Log in
  3. Attempt to write a message
  4. Bug happens

Expected behavior
That the message history is fetched and writing messages to channel is possible.

Screenshots
image
Screenshot of the input hanging. The box greys out and no further action occurs.

image
Web console output.

Environment:

  • Desktop
  • Brave 1.61.109
  • Converse.js 10.1.6
  • ejabberd 23.10

Additional context
I use ejabberd's mod_conversejs module to host the instance, but I use local resources (Conversejs 10.1.6). Public resources do not load for me. I attempted to use Conversejs with disabled Brave Shield and any plugins in my browser, without improvement. Changing channel settings and features does work through Conversejs, so not everything is broken.

Confirming this behavior

Chrome Desktop 121.0, all plugins disabled
Converse 10.1.6
ejabberd 20.01

Loading Converse.js from https://cdn.conversejs.org/10.1.6/dist/converse.min.js

Initializing it with the bellow, then manually entering websocket connection (but behavior appears the same regardless of display mode or other parameters):

converse.initialize({
    view_mode: "embedded",
    show_controlbox_by_default: true});

Can join private chats and MUCs. When typing the "is typing" status message is sent, but when enter key or send button is pressed, text input greys out and locks. No websocket messages are sent, and nothing is logged to console when hitting send. Clicking on a different chat will reset text input, but nothing is sent. Incoming messages are also not displayed.

Doesn't happen in 10.1.5

The Converse source files are broken up into so-called chunks (via Webpack), which are loaded asynchronously and on-demand.

The error above is that the emojis chunk couldn't be loaded. Without emojis loaded, various things will break.

Why it's not loaded I don't know, could be that not all files that should be in ./dist are there, or perhaps the file is blocked by a browser add-on (e.g. adblock or something).

I want to chime in that I am experiencing the exact error (in Firefox 126) and behavior described above, even with a fresh build of conversejs from today (2024-05-19). It occurs whether or not my various browser extensions are loaded. The debug logs in the console show an uncaught ChunkLoadError for chunk 2974, citing chatemojis.js. This is using ejabberd 24.2's mod_conversejs.

@brandnewmath Try to get the full URL of the resource it's trying and failing to load. That can likely give you a hint as to what's wrong.

I'm facing the same problem and I believe this is caused by ejabberd's mod_conversejs only serving certain "known" files:

https://github.com/processone/ejabberd/blob/15569d0b135445db709aca9215cb8f503dbdac53/src/mod_conversejs.erl#L107C1-L115

This list doesn't include all files required by converse.js, specifically conversejsemojis.js is missing, which causes converse.js to fail.