Skip to content

Commit c0d8b74

Browse files
committed
Merge tag 'v1.14.8' into mconf-build
2 parents 626a8e8 + c5e9ae7 commit c0d8b74

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+806
-144
lines changed

.env.template

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@ EMBEDLY_KEY=
108108
ENABLE_CHAT=true
109109
# Enable / disable upload of file in chat (MUST BE TRUE ONLY IF ENABLE_CHAT IS TRUE)
110110
ENABLE_CHAT_UPLOAD=true
111+
ENABLE_CHAT_ONLINE_LIST=true
112+
ENABLE_CHAT_DISCONNECTED_LIST=true
111113
# Chat max uploadable file size (Byte)
112114
UPLOAD_MAX_FILESIZE=10485760
113115

chat/src/Components/Chat.svelte

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
connectionEstablishedStore,
2020
connectionNotAuthorizedStore,
2121
enableChat,
22+
enableChatOnlineListStore,
2223
navChat,
2324
showForumsStore,
2425
showLivesStore,
@@ -174,26 +175,30 @@
174175
{/if}
175176
{:else if $showPart === "home"}
176177
<div class="wa-message-bg tw-pt-3">
177-
<nav class="nav">
178-
<div class="background" class:chat={$navChat === "chat"} />
179-
<ul>
180-
<li class:active={$navChat === "users"} on:click={() => navChat.set("users")}>
181-
{$LL.users()}
182-
</li>
183-
<li class:active={$navChat === "chat"} on:click={() => navChat.set("chat")}>Chat</li>
184-
</ul>
185-
</nav>
186-
<!-- searchbar -->
187-
<div class="tw-border tw-border-transparent tw-border-b-light-purple tw-border-solid">
188-
<div class="tw-p-3">
189-
<input
190-
class="wa-searchbar tw-block tw-text-white tw-w-full placeholder:tw-text-sm tw-rounded-3xl tw-px-3 tw-py-1 tw-border-light-purple tw-border tw-border-solid tw-bg-transparent"
191-
placeholder={$navChat === "users" ? $LL.searchUser() : $LL.searchChat()}
192-
bind:value={searchValue}
193-
/>
178+
{#if $enableChatOnlineListStore}
179+
<nav class="nav">
180+
<div class="background" class:chat={$navChat === "chat"} />
181+
<ul>
182+
<li class:active={$navChat === "users"} on:click={() => navChat.set("users")}>
183+
{$LL.users()}
184+
</li>
185+
<li class:active={$navChat === "chat"} on:click={() => navChat.set("chat")}>Chat</li>
186+
</ul>
187+
</nav>
188+
<!-- searchbar -->
189+
<div class="tw-border tw-border-transparent tw-border-b-light-purple tw-border-solid">
190+
<div class="tw-p-3">
191+
<input
192+
class="wa-searchbar tw-block tw-text-white tw-w-full placeholder:tw-text-sm tw-rounded-3xl tw-px-3 tw-py-1 tw-border-light-purple tw-border tw-border-solid tw-bg-transparent"
193+
placeholder={$navChat === "users" ? $LL.searchUser() : $LL.searchChat()}
194+
bind:value={searchValue}
195+
/>
196+
</div>
194197
</div>
195-
</div>
196-
{#if !userStore.get().isLogged && ENABLE_OPENID}
198+
{:else}
199+
<div class="tw-mt-11 tw-border tw-border-transparent tw-border-b-light-purple tw-border-solid" />
200+
{/if}
201+
{#if !userStore.get().isLogged && ENABLE_OPENID && $enableChat}
197202
<div class="tw-border tw-border-transparent tw-border-b-light-purple tw-border-solid">
198203
<div class="tw-p-3 tw-text-sm tw-text-center">
199204
<p>{$LL.signIn()}</p>
@@ -203,12 +208,12 @@
203208
</div>
204209
</div>
205210
{/if}
206-
{#if $navChat === "users"}
211+
{#if $enableChatOnlineListStore && $navChat === "users"}
207212
<!-- chat users -->
208213
{#if defaultMucRoom !== undefined}
209214
<UsersList mucRoom={defaultMucRoom} searchValue={searchValue.toLocaleLowerCase()} />
210215
{/if}
211-
{:else if $navChat === "chat"}
216+
{:else}
212217
{#if $enableChat}
213218
<ChatLiveRooms
214219
searchValue={searchValue.toLocaleLowerCase()}

chat/src/Connection/ChatConnectionManager.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import { XmppSettingsMessage } from "../Messages/ts-proto-generated/protos/messages";
22
import { XmppClient } from "../Xmpp/XmppClient";
3-
import { connectionEstablishedStore } from "../Stores/ChatStore";
3+
import { connectionEstablishedStore, enableChat } from "../Stores/ChatStore";
4+
import { get } from "svelte/store";
5+
import { xmppServerConnectionStatusStore } from "../Stores/MucRoomsStore";
46

57
class ChatConnectionManager {
68
private uuid: string;
@@ -41,7 +43,11 @@ class ChatConnectionManager {
4143

4244
public start() {
4345
if (this.uuid !== "" && this.authToken && this.playUri !== "" && this.xmppSettingsMessage && !this.xmppClient) {
44-
this.xmppClient = new XmppClient(this.xmppSettingsMessage);
46+
if (get(enableChat)) {
47+
this.xmppClient = new XmppClient(this.xmppSettingsMessage);
48+
} else {
49+
xmppServerConnectionStatusStore.set(true);
50+
}
4551
connectionEstablishedStore.set(true);
4652
}
4753

chat/src/Event/SettingsEvent.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ export const isSettings = z.object({
55
chatSounds: z.boolean(),
66
enableChat: z.boolean(),
77
enableChatUpload: z.boolean(),
8+
enableChatOnlineList: z.boolean(),
89
enableChatDisconnectedList: z.boolean(),
910
});
1011

chat/src/IframeListener.ts

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
chatPeerConnectionInProgress,
99
chatSoundsStore,
1010
enableChat,
11+
enableChatOnlineListStore,
1112
enableChatDisconnectedListStore,
1213
enableChatUpload,
1314
newChatMessageSubject,
@@ -42,6 +43,7 @@ class IframeListener {
4243
chatNotificationsStore.set(iframeEvent.data.notification);
4344
enableChat.set(iframeEvent.data.enableChat);
4445
enableChatUpload.set(iframeEvent.data.enableChatUpload);
46+
enableChatOnlineListStore.set(iframeEvent.data.enableChatOnlineList);
4547
enableChatDisconnectedListStore.set(iframeEvent.data.enableChatDisconnectedList);
4648
break;
4749
}
@@ -94,35 +96,30 @@ class IframeListener {
9496
break;
9597
}
9698
const mucRoomDefault = mucRoomsStore.getDefaultRoom();
97-
if (mucRoomDefault) {
98-
let userData = undefined;
99-
if (iframeEvent.data.author) {
100-
userData = mucRoomDefault.getUserByJid(iframeEvent.data.author);
101-
}
102-
for (const chatMessageText of iframeEvent.data.text) {
103-
chatMessagesStore.addExternalMessage(
104-
userData,
105-
chatMessageText,
106-
userData ? undefined : iframeEvent.data.name
107-
);
108-
}
99+
let userData = undefined;
100+
if (mucRoomDefault && iframeEvent.data.author.jid !== "fake") {
101+
userData = mucRoomDefault.getUserByJid(iframeEvent.data.author.jid);
102+
} else {
103+
userData = iframeEvent.data.author;
104+
}
105+
for (const chatMessageText of iframeEvent.data.text) {
106+
chatMessagesStore.addExternalMessage(userData, chatMessageText, userData.name);
109107
}
110108
break;
111109
}
112110
case "comingUser": {
113-
for (const target of iframeEvent.data.targets) {
114-
const mucRoomDefault = mucRoomsStore.getDefaultRoom();
115-
if (mucRoomDefault) {
116-
const userData = mucRoomDefault.getUserByJid(target);
117-
if (userData) {
118-
if (ChatMessageTypes.userIncoming === iframeEvent.data.type) {
119-
chatMessagesStore.addIncomingUser(userData);
120-
}
121-
if (ChatMessageTypes.userOutcoming === iframeEvent.data.type) {
122-
chatMessagesStore.addOutcomingUser(userData);
123-
}
124-
}
125-
}
111+
const mucRoomDefault = mucRoomsStore.getDefaultRoom();
112+
let userData = undefined;
113+
if (mucRoomDefault && iframeEvent.data.author.jid !== "fake") {
114+
userData = mucRoomDefault.getUserByJid(iframeEvent.data.author.jid);
115+
} else {
116+
userData = iframeEvent.data.author;
117+
}
118+
if (ChatMessageTypes.userIncoming === iframeEvent.data.type) {
119+
chatMessagesStore.addIncomingUser(userData);
120+
}
121+
if (ChatMessageTypes.userOutcoming === iframeEvent.data.type) {
122+
chatMessagesStore.addOutcomingUser(userData);
126123
}
127124
break;
128125
}

chat/src/Stores/ChatStore.ts

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@ import { Subject } from "rxjs";
33
import { FileExt, UploadedFile, uploadingState } from "../Services/FileMessageManager";
44
import { Message, User } from "../Xmpp/AbstractRoom";
55
import { mucRoomsStore } from "./MucRoomsStore";
6+
import { userStore } from "./LocalUserStore";
67

78
// Global config store for the whole chat
89
export const enableChat = writable<boolean>(true);
910
export const enableChatUpload = writable<boolean>(false);
11+
export const enableChatOnlineListStore = writable<boolean>(false);
1012
export const enableChatDisconnectedListStore = writable<boolean>(false);
1113

1214
const _newChatMessageSubject = new Subject<string>();
@@ -72,24 +74,23 @@ function createChatMessagesStore() {
7274
_newChatMessageSubject.next(text);
7375
update((list) => {
7476
const defaultRoom = mucRoomsStore.getDefaultRoom();
75-
if (defaultRoom) {
76-
const lastMessage = list[list.length - 1];
77-
if (
78-
lastMessage &&
79-
lastMessage.type === ChatMessageTypes.me &&
80-
lastMessage.text &&
81-
(((new Date().getTime() - lastMessage.date.getTime()) % 86400000) % 3600000) / 60000 < 2
82-
) {
83-
lastMessage.date = new Date();
84-
lastMessage.text.push(text);
85-
} else {
86-
list.push({
87-
type: ChatMessageTypes.me,
88-
text: [text],
89-
author: defaultRoom.getUserByJid(defaultRoom.myJID),
90-
date: new Date(),
91-
});
92-
}
77+
const lastMessage = list[list.length - 1];
78+
if (
79+
lastMessage &&
80+
lastMessage.type === ChatMessageTypes.me &&
81+
lastMessage.text &&
82+
new Date().getTime() - lastMessage.date.getTime() < 120000
83+
) {
84+
lastMessage.date = new Date();
85+
lastMessage.text.push(text);
86+
} else {
87+
list.push({
88+
type: ChatMessageTypes.me,
89+
text: [text],
90+
author: defaultRoom ? defaultRoom.getUserByJid(defaultRoom.myJID) : undefined,
91+
date: new Date(),
92+
authorName: userStore.get().name,
93+
});
9394
}
9495

9596
return list;
@@ -106,7 +107,7 @@ function createChatMessagesStore() {
106107
lastMessage.type === ChatMessageTypes.text &&
107108
lastMessage.text &&
108109
((user && lastMessage?.author?.uuid === user.uuid) || lastMessage?.authorName === authorName) &&
109-
(((new Date().getTime() - lastMessage.date.getTime()) % 86400000) % 3600000) / 60000 < 2
110+
new Date().getTime() - lastMessage.date.getTime() < 120000
110111
) {
111112
lastMessage.text.push(text);
112113
lastMessage.date = new Date();

contrib/docker/.env.prod.template

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,8 @@ ENABLE_CHAT=true
195195
ENABLE_CHAT_UPLOAD=true
196196
# Chat max uploadable file size (Byte)
197197
UPLOAD_MAX_FILESIZE=10485760
198+
ENABLE_CHAT_ONLINE_LIST=true
199+
ENABLE_CHAT_DISCONNECTED_LIST=true
198200
# Max day of chat history that can be fetched by users
199201
## No restriction is : 0 or not defined value
200202
# MAX_HISTORY_CHAT=0

contrib/docker/docker-compose.prod.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ services:
5656
- OPID_WOKA_NAME_POLICY
5757
- ENABLE_CHAT
5858
- ENABLE_CHAT_UPLOAD
59+
- ENABLE_CHAT_ONLINE_LIST
60+
- ENABLE_CHAT_DISCONNECTED_LIST
5961
- UPLOADER_URL=https://${UPLOADER_HOST}
6062
# Only used if you set up a JWT authentication mechanism in Ejabberd
6163
- EJABBERD_JWT_SECRET=${EJABBERD_JWT_SECRET}

docker-compose.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ services:
9595
EJABBERD_DOMAIN: $EJABBERD_DOMAIN
9696
ENABLE_CHAT: "$ENABLE_CHAT"
9797
ENABLE_CHAT_UPLOAD: "$ENABLE_CHAT_UPLOAD"
98+
ENABLE_CHAT_ONLINE_LIST: "$ENABLE_CHAT_ONLINE_LIST"
99+
ENABLE_CHAT_DISCONNECTED_LIST: "$ENABLE_CHAT_DISCONNECTED_LIST"
98100
PEER_VIDEO_MAX_BANDWIDTH_KBITS_PS: "$PEER_VIDEO_MAX_BANDWIDTH_KBITS_PS"
99101
PEER_SCREENSHARE_MAX_BANDWIDTH_KBITS_PS: "$PEER_SCREENSHARE_MAX_BANDWIDTH_KBITS_PS"
100102
labels:

0 commit comments

Comments
 (0)