Call minimize on the model
Fix minimizing by listening to change event Fixes around showing/hiding and minimizing/maximizing Don't trigger a `show` event on the model to show a chat, instead rely on the `hidden` attribute which causes a rerender and will show/hide chats.
This commit is contained in:
parent
704b50fb3e
commit
05c00c5e1c
@ -641,6 +641,8 @@ window.addEventListener('converse-loaded', () => {
|
||||
'view_mode': mock.view_mode
|
||||
}, settings || {}));
|
||||
|
||||
window._converse = _converse;
|
||||
|
||||
_converse.api.vcard.get = function (model, force) {
|
||||
let jid;
|
||||
if (typeof model === 'string' || model instanceof String) {
|
||||
|
@ -910,11 +910,12 @@ const ChatBox = ModelWithContact.extend({
|
||||
}
|
||||
u.safeSave(this, {'hidden': false});
|
||||
}
|
||||
if (_converse.isUniView() && this.get('hidden')) {
|
||||
if (_converse.isUniView()) {
|
||||
return;
|
||||
} else {
|
||||
return this.trigger("show");
|
||||
u.safeSave(this, {'hidden': false});
|
||||
}
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -9,11 +9,12 @@ class ConverseChats extends ElementView {
|
||||
|
||||
initialize () {
|
||||
this.model = _converse.chatboxes;
|
||||
this.listenTo(this.model, 'destroy', this.render);
|
||||
this.listenTo(this.model, 'add', this.render);
|
||||
this.listenTo(this.model, 'change:hidden', this.render);
|
||||
this.listenTo(this.model, 'change:closed', this.render);
|
||||
this.listenTo(this.model, 'change:hidden', this.render);
|
||||
this.listenTo(this.model, 'change:jid', this.render);
|
||||
this.listenTo(this.model, 'change:minimized', this.render);
|
||||
this.listenTo(this.model, 'destroy', this.render);
|
||||
|
||||
const bg = document.getElementById('conversejs-bg');
|
||||
if (bg && !bg.innerHTML.trim()) {
|
||||
|
@ -44,9 +44,9 @@ export default class ChatView extends BaseChatView {
|
||||
api.listen.on('windowStateChanged', this.onWindowStateChanged);
|
||||
|
||||
this.listenTo(this.model, 'change:composing_spoiler', this.renderMessageForm);
|
||||
this.listenTo(this.model, 'change:hidden', m => (!m.get('hidden') && this.show()));
|
||||
this.listenTo(this.model, 'change:hidden', () => this.afterShown());
|
||||
this.listenTo(this.model, 'change:minimized', () => this.afterShown());
|
||||
this.listenTo(this.model, 'change:status', this.onStatusMessageChanged);
|
||||
this.listenTo(this.model, 'show', this.show);
|
||||
this.listenTo(this.model, 'vcard:change', this.renderHeading);
|
||||
|
||||
if (this.model.contact) {
|
||||
|
@ -1,4 +1,6 @@
|
||||
import { _converse, api } from "@converse/headless/core";
|
||||
import { _converse, api, converse } from "@converse/headless/core";
|
||||
|
||||
const { u } = converse.env;
|
||||
|
||||
export default {
|
||||
/**
|
||||
@ -18,7 +20,7 @@ export default {
|
||||
await api.waitUntil('chatBoxesFetched');
|
||||
const model = await api.chatboxes.get('controlbox') ||
|
||||
api.chatboxes.create('controlbox', {}, _converse.Controlbox);
|
||||
model.trigger('show');
|
||||
u.safeSave(model, {'closed': false});
|
||||
return model;
|
||||
},
|
||||
|
||||
|
@ -27,11 +27,7 @@ class ControlBoxToggle extends ElementView {
|
||||
if (!controlbox) {
|
||||
controlbox = addControlBox();
|
||||
}
|
||||
if (api.connection.connected()) {
|
||||
controlbox.save({'closed': false});
|
||||
} else {
|
||||
controlbox.trigger('show');
|
||||
}
|
||||
u.safeSave(controlbox, {'closed': false});
|
||||
}
|
||||
|
||||
onClick (e) {
|
||||
|
@ -50,7 +50,7 @@ converse.plugins.add('converse-minimize', {
|
||||
ChatBox: {
|
||||
initialize () {
|
||||
this.__super__.initialize.apply(this, arguments);
|
||||
this.on('show', this.maximize, this);
|
||||
this.on('change:hidden', m => !m.get('hidden') && this.maximize(), this);
|
||||
|
||||
if (this.get('id') === 'controlbox') {
|
||||
return;
|
||||
@ -75,16 +75,6 @@ converse.plugins.add('converse-minimize', {
|
||||
},
|
||||
|
||||
ChatBoxView: {
|
||||
show () {
|
||||
const { _converse } = this.__super__;
|
||||
if (_converse.api.settings.get("view_mode") === 'overlayed' && this.model.get('minimized')) {
|
||||
this.model.minimize();
|
||||
return this;
|
||||
} else {
|
||||
return this.__super__.show.apply(this, arguments);
|
||||
}
|
||||
},
|
||||
|
||||
isNewMessageHidden () {
|
||||
return this.model.get('minimized') ||
|
||||
this.__super__.isNewMessageHidden.apply(this, arguments);
|
||||
|
@ -5,6 +5,7 @@ const u = converse.env.utils;
|
||||
export const minimizableChatBox = {
|
||||
maximize () {
|
||||
u.safeSave(this, {
|
||||
'hidden': false,
|
||||
'minimized': false,
|
||||
'time_opened': new Date().getTime()
|
||||
});
|
||||
@ -12,6 +13,7 @@ export const minimizableChatBox = {
|
||||
|
||||
minimize () {
|
||||
u.safeSave(this, {
|
||||
'hidden': true,
|
||||
'minimized': true,
|
||||
'time_minimized': new Date().toISOString()
|
||||
});
|
||||
|
@ -104,7 +104,7 @@ function getOldestMaximizedChat (exclude_ids) {
|
||||
export function addMinimizeButtonToChat (view, buttons) {
|
||||
const data = {
|
||||
'a_class': 'toggle-chatbox-button',
|
||||
'handler': ev => view.minimize(ev),
|
||||
'handler': ev => view.model.minimize(ev),
|
||||
'i18n_text': __('Minimize'),
|
||||
'i18n_title': __('Minimize this chat'),
|
||||
'icon_class': "fa-minus",
|
||||
@ -119,7 +119,7 @@ export function addMinimizeButtonToChat (view, buttons) {
|
||||
export function addMinimizeButtonToMUC (view, buttons) {
|
||||
const data = {
|
||||
'a_class': 'toggle-chatbox-button',
|
||||
'handler': ev => view.minimize(ev),
|
||||
'handler': ev => view.model.minimize(ev),
|
||||
'i18n_text': __('Minimize'),
|
||||
'i18n_title': __('Minimize this groupchat'),
|
||||
'icon_class': "fa-minus",
|
||||
|
@ -89,6 +89,8 @@ export default class MUCView extends BaseChatView {
|
||||
debounce(() => this.renderHeading(), 250)
|
||||
);
|
||||
this.listenTo(this.model, 'change:composing_spoiler', this.renderMessageForm);
|
||||
this.listenTo(this.model, 'change:hidden', () => this.afterShown());
|
||||
this.listenTo(this.model, 'change:minimized', () => this.afterShown());
|
||||
this.listenTo(this.model, 'change:hidden_occupants', this.onSidebarToggle);
|
||||
this.listenTo(this.model, 'configurationNeeded', this.getAndRenderConfigurationForm);
|
||||
this.listenTo(this.model, 'show', this.show);
|
||||
@ -695,12 +697,11 @@ export default class MUCView extends BaseChatView {
|
||||
* @method _converse.ChatRoomView#afterShown
|
||||
*/
|
||||
afterShown () {
|
||||
// Override from converse-chatview, specifically to avoid
|
||||
// the 'active' chat state from being sent out prematurely.
|
||||
// This is instead done in `onConnectionStatusChanged` below.
|
||||
if (!this.model.get('hidden') && !this.model.get('minimized')) {
|
||||
this.model.clearUnreadMsgCounter();
|
||||
this.scrollDown();
|
||||
}
|
||||
}
|
||||
|
||||
onConnectionStatusChanged () {
|
||||
const conn_status = this.model.session.get('connection_status');
|
||||
|
Loading…
Reference in New Issue
Block a user