- Render images as thumbnails
- Use the image.html template when rendering images from pasted URLs
- Update message and spoiler markup to render avatars
- Use the default avatar as fallback when user doesn't have one
- Instead of 'me' render own name or JID
Specifically the methods related to requesting an upload slot and uploading a file.
Also show a progress indicator while a file is being uploaded.
Updates #161
It contained only `overrides` and some HTTP upload code was in other
modules.
Current thinking concerning overrides:
Usage of `overrides`, while useful in certain cases, should in general
be discouraged, since it's in essence "monkey patching" which makes it
more difficult to know whats executing at runtime and more difficult to
refactor.
Splitting modules up between XEPs is not always that useful. Some XEPs,
like HTTP Upload (and MAM comes to mind) have their functionality spread
out over single and group chats (and pubsub) and might for practical
purposes be considered "core" enough to not try and keep them in
separate modules (which inevitably requires overrides or a fundamentally
rethinking the architecture).
Where splitting code between modules makes a lot of sense is in keeping
Backbone Models and Views separate (so that alternative view libraries
like Vue could be used) and probably in keeping Single chats, MUC,
PubSub and MIX separate.
updates #161
- Remove undocumented and unused event `update-status-ui`
- Remove xhr_custom_status and xhr_custom_status_url options
- Use default value
- Remove unnecessary getter and setter
1. Add a new `view_mode` value: `embedded`.
This value is used to determine wether the `converse-muc-embedded`
plugin is active or not.
2. Remove the need for the #converse-embedded-chat element.
Instead we reuse the #conversejs element and embed inside that.
3. Removed the need to manually blacklist core plugins
This is now done automatically if `view_mode` is set to `embedded`.
Perhaps eventually we don't blacklist at all and instead use the
`enable` plugin method. For some that probably won't work, like
`converse-chatview`, which we still need to be active.
Setting it on `window` is necessary to have it available inside a
webcomponent.
Triggering an event is necessary so that we don't call
`converse.initialize` too early.