Skip to content

Commit a660338

Browse files
committed
Merge remote-tracking branch 'origin/master'
2 parents 9f603de + 41b11d5 commit a660338

File tree

12 files changed

+100
-47
lines changed

12 files changed

+100
-47
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ logo/conversejs-filled%.png:: logo/conversejs-filled.svg
196196
@converse/headless: src/headless
197197

198198
src/headless/dist/converse-headless.js: src rspack/rspack.common.js node_modules @converse/headless
199-
npm run headless-dev
199+
npm run dev:headless
200200

201201
src/headless/dist/converse-headless.min.js: src rspack/rspack.common.js node_modules @converse/headless
202202
npm run headless

package.json

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -47,27 +47,27 @@
4747
"3rdparty/*.js"
4848
],
4949
"scripts": {
50-
"build": "npm run build:website-min-css && rspack build --config rspack/rspack.build.js",
50+
"build": "npm run build:website-min-css && DROP_DEBUGGER=true rspack build --config rspack/rspack.build.js",
5151
"build:website-css": "sass --quiet --load-path=node_modules src/shared/styles/website.scss dist/website.css",
5252
"build:website-min-css": "npm run build:website-css && npx clean-css-cli dist/website.css > dist/website.min.css",
53-
"lint": "eslint src/**/*.js",
54-
"test": "karma start karma.conf",
55-
"test:headless": "cd src/headless && karma start karma.conf.js",
56-
"test:all": "npm run test:headless -- --single-run && npm run test -- --single-run",
5753
"cdn": "ASSET_PATH=https://cdn.conversejs.org/dist/ npm run build",
5854
"clean": "rm -rf node_modules dist *.zip src/headless/dist src/headless/node_modules",
59-
"dev": "rspack build --config rspack/rspack.build.js --mode=development",
55+
"dev": "DROP_DEBUGGER=false rspack build --config rspack/rspack.build.js --mode=development",
56+
"dev:headless": "DROP_DEBUGGER=false rspack build --config rspack/rspack.headless.js --mode=development",
57+
"devserver": "npm run dev:headless && npx rspack serve --config rspack/rspack.serve.js",
6058
"headless": "rspack build --config rspack/rspack.headless.js",
61-
"headless-dev": "rspack build --config rspack/rspack.headless.js --mode=development",
59+
"lint": "eslint src/**/*.js",
6260
"nodeps": "rspack build --config rspack/rspack.nodeps.js",
6361
"serve": "http-server -c-1",
6462
"serve-tls": "http-server -S -C certs/chat.example.org.crt -K certs/chat.example.org.key",
65-
"devserver": "npm run headless-dev && npx rspack serve --config rspack/rspack.serve.js",
66-
"watch": "concurrently \"npm run watch:headless\" \"npm run watch:main\"",
67-
"watch:headless": "rspack --watch --config rspack/rspack.headless.js --mode=development",
68-
"watch:main": "rspack --watch --config rspack/rspack.build.js --mode=development",
63+
"test": "karma start karma.conf",
64+
"test:all": "npm run test:headless -- --single-run && npm run test -- --single-run",
65+
"test:headless": "cd src/headless && karma start karma.conf.js",
6966
"types": "tsc -p ./src/log/tsconfig.json && tsc -p ./src/headless/tsconfig.json && tsc",
70-
"check:types": "tsc --noEmit"
67+
"types:check": "tsc --noEmit",
68+
"watch": "concurrently \"npm run watch:headless\" \"npm run watch:main\"",
69+
"watch:headless": "DROP_DEBUGGER=false rspack --watch --config rspack/rspack.headless.js --mode=development",
70+
"watch:main": "DROP_DEBUGGER=false rspack --watch --config rspack/rspack.build.js --mode=development"
7171
},
7272
"repository": {
7373
"type": "git",

rspack/rspack.build.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ const sharedConfig = {
1818
minify: true,
1919
mangle: true,
2020
compress: {
21+
drop_debugger: process.env.DROP_DEBUGGER === 'true',
2122
passes: 2,
2223
},
2324
format: {

src/headless/plugins/muc/muc.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,8 @@ class MUC extends ModelWithVCard(ModelWithMessages(ColorAwareModel(ChatBoxBase))
224224
* @param {boolean} is_new
225225
*/
226226
async constructJoinPresence(password, is_new) {
227-
const maxstanzas = is_new || this.features.get('mam_enabled') ? 0 : api.settings.get('muc_history_max_stanzas');
227+
const exclude_maxstanzas = is_new || this.features.get('mam_enabled');
228+
const maxstanzas = exclude_maxstanzas ? 0 : api.settings.get('muc_history_max_stanzas');
228229
password = password || this.get('password');
229230

230231
const { profile } = _converse.state;
@@ -236,7 +237,7 @@ class MUC extends ModelWithVCard(ModelWithMessages(ColorAwareModel(ChatBoxBase))
236237
from="${api.connection.get().jid}"
237238
to="${this.getRoomJIDAndNick()}">
238239
<x xmlns="${Strophe.NS.MUC}">
239-
<history maxstanzas="${maxstanzas}"/>
240+
${maxstanzas ? stx`<history maxstanzas="${maxstanzas}"/>` : ''}
240241
${password ? stx`<password>${password}</password>` : ''}
241242
</x>
242243
${PRES_SHOW_VALUES.includes(show) ? stx`<show>${show}</show>` : ''}

src/headless/plugins/muc/tests/muc.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ describe("Groupchats", function () {
5757
let pres = await u.waitUntil(() => sent_stanzas.filter(s => s.nodeName === 'presence').pop());
5858
expect(pres).toEqualStanza(stx`
5959
<presence from="${_converse.jid}" id="${pres.getAttribute('id')}" to="${muc_jid}/romeo" xmlns="jabber:client">
60-
<x xmlns="http://jabber.org/protocol/muc"><history maxstanzas="0"/></x>
60+
<x xmlns="http://jabber.org/protocol/muc"/>
6161
<show>away</show>
6262
<c hash="sha-1" node="https://conversejs.org" ver="t7NrIuCRhg80cJKAq33v3LKogjI=" xmlns="http://jabber.org/protocol/caps"/>
6363
</presence>`);
@@ -86,7 +86,7 @@ describe("Groupchats", function () {
8686
pres = await u.waitUntil(() => sent_stanzas.filter(s => s.nodeName === 'presence').pop());
8787
expect(pres).toEqualStanza(stx`
8888
<presence from="${_converse.jid}" id="${pres.getAttribute('id')}" to="${muc2_jid}/romeo" xmlns="jabber:client">
89-
<x xmlns="http://jabber.org/protocol/muc"><history maxstanzas="0"/></x>
89+
<x xmlns="http://jabber.org/protocol/muc"/>
9090
<show>dnd</show>
9191
<status>Do not disturb</status>
9292
<c hash="sha-1" node="https://conversejs.org" ver="t7NrIuCRhg80cJKAq33v3LKogjI=" xmlns="http://jabber.org/protocol/caps"/>
@@ -142,11 +142,11 @@ describe("Groupchats", function () {
142142

143143
const pres = await u.waitUntil(
144144
() => sent_stanzas.slice(index).filter(s => s.nodeName === 'presence').pop());
145-
expect(Strophe.serialize(pres)).toBe(
146-
`<presence from="${_converse.jid}" id="${pres.getAttribute('id')}" to="coven@chat.shakespeare.lit/romeo" xmlns="jabber:client">`+
147-
`<x xmlns="http://jabber.org/protocol/muc"><history maxstanzas="0"/></x>`+
148-
`<c hash="sha-1" node="https://conversejs.org" ver="t7NrIuCRhg80cJKAq33v3LKogjI=" xmlns="http://jabber.org/protocol/caps"/>`+
149-
`</presence>`);
145+
expect(pres).toEqualStanza(stx`
146+
<presence from="${_converse.jid}" id="${pres.getAttribute('id')}" to="coven@chat.shakespeare.lit/romeo" xmlns="jabber:client">
147+
<x xmlns="http://jabber.org/protocol/muc"/>
148+
<c hash="sha-1" node="https://conversejs.org" ver="t7NrIuCRhg80cJKAq33v3LKogjI=" xmlns="http://jabber.org/protocol/caps"/>
149+
</presence>`);
150150
}));
151151
});
152152
});
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/*global converse */
2+
import mock from '../../../tests/mock.js';
3+
4+
const { stx, u } = converse.env;
5+
6+
describe('MUC presence history element', function () {
7+
beforeAll(() => jasmine.addMatchers({ toEqualStanza: jasmine.toEqualStanza }));
8+
9+
it(
10+
'includes history when maxstanzas is set',
11+
mock.initConverse(['statusInitialized'], { muc_history_max_stanzas: 5 }, async function (_converse) {
12+
const { api } = _converse;
13+
const muc_jid = 'room@server';
14+
const nick = 'test';
15+
const jid = _converse.session.get('jid');
16+
await mock.openAndEnterMUC(_converse, muc_jid, nick, ['http://jabber.org/protocol/muc']);
17+
const { sent_stanzas } = _converse.api.connection.get();
18+
19+
let sent_stanza = await u.waitUntil(() =>
20+
sent_stanzas
21+
.filter((s) => s.nodeName === 'presence' && s.getAttribute('to') === `${muc_jid}/${nick}`)
22+
.pop()
23+
);
24+
expect(sent_stanza).toEqualStanza(stx`
25+
<presence to="${muc_jid}/${nick}" xmlns="jabber:client" id="${sent_stanza.getAttribute('id')}" from="${jid}">
26+
<x xmlns="http://jabber.org/protocol/muc">
27+
<history maxstanzas="5"/>
28+
</x>
29+
<c xmlns="http://jabber.org/protocol/caps" hash="sha-1" node="https://conversejs.org" ver="t7NrIuCRhg80cJKAq33v3LKogjI="/>
30+
</presence>`);
31+
32+
api.settings.set('muc_history_max_stanzas', 0);
33+
34+
const muc2_jid = 'room2@server';
35+
await mock.openAndEnterMUC(_converse, muc2_jid, nick);
36+
sent_stanza = await u.waitUntil(() =>
37+
sent_stanzas
38+
.filter((s) => s.nodeName === 'presence' && s.getAttribute('to') === `${muc2_jid}/${nick}`)
39+
.pop()
40+
);
41+
expect(sent_stanza).toEqualStanza(stx`
42+
<presence to="${muc2_jid}/${nick}" xmlns="jabber:client" id="${sent_stanza.getAttribute('id')}" from="${jid}">
43+
<x xmlns="http://jabber.org/protocol/muc"/>
44+
<c xmlns="http://jabber.org/protocol/caps" hash="sha-1" node="https://conversejs.org" ver="t7NrIuCRhg80cJKAq33v3LKogjI="/>
45+
</presence>`);
46+
})
47+
);
48+
});

src/headless/tests/mock.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export const chatroom_names = [
1010
'Dirk Theissen',
1111
'Felix Hofmann',
1212
'Ka Lek',
13-
'Anne Ebersbacher'
13+
'Anne Ebersbacher',
1414
];
1515

1616
export const default_muc_features = [
@@ -246,9 +246,13 @@ export async function receiveOwnMUCPresence(
246246
role = 'moderator',
247247
features = []
248248
) {
249-
const { u, sizzle } = window.converse.env;
249+
const { u } = window.converse.env;
250250
const sent_stanzas = _converse.api.connection.get().sent_stanzas;
251-
await u.waitUntil(() => sent_stanzas.filter((iq) => sizzle('presence history', iq).length).pop());
251+
await u.waitUntil(
252+
() =>
253+
sent_stanzas.filter((s) => s.nodeName === 'presence' && s.getAttribute('to') === `${muc_jid}/${nick}`)
254+
.length
255+
);
252256

253257
_converse.api.connection.get()._dataRecv(
254258
createRequest(stx`

src/plugins/bookmark-views/tests/bookmarks.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,6 @@ describe("Bookmarks", function () {
272272
id="${sent_stanza.getAttribute('id')}"
273273
to="${autojoin_muc}/JC">
274274
<x xmlns="http://jabber.org/protocol/muc">
275-
<history maxstanzas="0"/>
276275
<password>secret</password>
277276
</x>
278277
<c xmlns="http://jabber.org/protocol/caps"

src/plugins/controlbox/templates/controlbox.js

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,27 @@ const { ANONYMOUS } = constants;
1111
function whenNotConnected(el) {
1212
const is_fullscreen = api.settings.get('view_mode') === 'fullscreen';
1313
const connection_status = _converse.state.connfeedback.get('connection_status');
14-
const connecting = [Strophe.Status.RECONNECTING, Strophe.Status.CONNECTING].includes(connection_status);
14+
const connecting = [Strophe.Status.RECONNECTING, Strophe.Status.CONNECTING, Strophe.Status.CONNECTED].includes(
15+
connection_status
16+
);
1517
const view_mode = api.settings.get('view_mode');
1618
const show_bg = api.settings.get('show_background');
19+
1720
return html`
1821
${show_bg && view_mode === 'fullscreen' ? html`<converse-bg></converse-bg>` : ''}
1922
<converse-controlbox-buttons class="controlbox-padded"></converse-controlbox-buttons>
2023
<div class="controlbox-pane d-flex flex-column justify-content-between">
21-
${is_fullscreen ? html`<converse-controlbox-navbar></converse-controlbox-navbar>` : ''}
22-
<converse-brand-logo></converse-brand-logo>
2324
${connecting
2425
? html`<converse-spinner class="vertically-centered fade-in"></converse-spinner>`
2526
: el.model.get('active-form') === 'register'
26-
? html`<converse-registration-form class="fade-in rounded"></converse-registration-form>`
27-
: html`<converse-login-form class="fade-in rounded"></converse-login-form>`}
28-
${is_fullscreen ? html`<converse-footer></converse-footer>` : ''}
27+
? html`${is_fullscreen ? html`<converse-controlbox-navbar></converse-controlbox-navbar>` : ''}
28+
<converse-brand-logo></converse-brand-logo>
29+
<converse-registration-form class="fade-in rounded"></converse-registration-form>
30+
${is_fullscreen ? html`<converse-footer></converse-footer>` : ''} `
31+
: html`${is_fullscreen ? html`<converse-controlbox-navbar></converse-controlbox-navbar>` : ''}
32+
<converse-brand-logo></converse-brand-logo>
33+
<converse-login-form class="fade-in rounded"></converse-login-form>
34+
${is_fullscreen ? html`<converse-footer></converse-footer>` : ''} `}
2935
</div>
3036
`;
3137
}

src/plugins/muc-views/tests/muc.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1822,7 +1822,7 @@ describe("Groupchats", function () {
18221822
await mock.openAndEnterMUC(_converse, muc_jid, 'romeo', features);
18231823
const view = _converse.chatboxviews.get(muc_jid);
18241824

1825-
const info_el = view.querySelector(".show-muc-details-modal");
1825+
const info_el = await u.waitUntil(() => view.querySelector(".show-muc-details-modal"));
18261826
info_el.click();
18271827
let modal = _converse.api.modal.get('converse-muc-details-modal');
18281828
await u.waitUntil(() => u.isVisible(modal), 1000);

0 commit comments

Comments
 (0)