Skip to content

Commit d498d3a

Browse files
committed
addMessage
1 parent 8515df3 commit d498d3a

File tree

2 files changed

+51
-47
lines changed

2 files changed

+51
-47
lines changed

services/static-webserver/client/source/class/osparc/conversation/Conversation.js

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ qx.Class.define("osparc.conversation.Conversation", {
198198
this.__getNextRequest()
199199
.then(resp => {
200200
const messages = resp["data"];
201-
this.__addMessages(messages);
201+
messages.forEach(message => this.addMessage(message));
202202
this.__nextRequestParams = resp["_links"]["next"];
203203
if (this.__nextRequestParams === null) {
204204
this.__loadMoreMessages.exclude();
@@ -227,35 +227,33 @@ qx.Class.define("osparc.conversation.Conversation", {
227227
return osparc.data.Resources.fetch("conversations", "getMessagesPage", params, options);
228228
},
229229

230-
__addMessages: function(messages) {
230+
addMessage: function(message) {
231231
// it's not provided by the backend
232-
messages.forEach(message => message["projectId"] = this.__studyData["uuid"]);
232+
message["projectId"] = this.__studyData["uuid"];
233233

234-
this.__messages = this.__messages.concat(messages);
234+
this.__messages.push(message);
235235

236-
const nMessages = messages.filter(msg => msg["type"] === "MESSAGE").length;
236+
const nMessages = this.__messages.filter(msg => msg["type"] === "MESSAGE").length;
237237
if (nMessages === 1) {
238238
this.__messagesTitle.setValue(this.tr("1 Message"));
239239
} else if (nMessages > 1) {
240240
this.__messagesTitle.setValue(nMessages + this.tr(" Messages"));
241241
}
242242

243-
messages.forEach(message => {
244-
let control = null;
245-
switch (message["type"]) {
246-
case "MESSAGE":
247-
control = new osparc.conversation.MessageUI(message, this.__studyData);
248-
control.addListener("messageEdited", () => this.fetchMessages());
249-
control.addListener("messageDeleted", () => this.fetchMessages());
250-
break;
251-
case "NOTIFICATION":
252-
control = new osparc.conversation.NotificationUI(message);
253-
break;
254-
}
255-
if (control) {
256-
this.__messagesList.add(control);
257-
}
258-
});
243+
let control = null;
244+
switch (message["type"]) {
245+
case "MESSAGE":
246+
control = new osparc.conversation.MessageUI(message, this.__studyData);
247+
control.addListener("messageEdited", () => this.fetchMessages());
248+
control.addListener("messageDeleted", () => this.fetchMessages());
249+
break;
250+
case "NOTIFICATION":
251+
control = new osparc.conversation.NotificationUI(message);
252+
break;
253+
}
254+
if (control) {
255+
this.__messagesList.add(control);
256+
}
259257
},
260258
}
261259
});

services/static-webserver/client/source/class/osparc/study/Conversations.js

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ qx.Class.define("osparc.study.Conversations", {
3030
this.__conversations = [];
3131

3232
this.fetchConversations(studyData);
33+
34+
this.__listenToConversationWS();
3335
},
3436

3537
statics: {
@@ -163,32 +165,36 @@ qx.Class.define("osparc.study.Conversations", {
163165
__listenToConversationWS: function() {
164166
const socket = osparc.wrapper.WebSocket.getInstance();
165167

166-
socket.on("conversation:message:created", data => {
167-
if (data) {
168-
const projectId = data["projectId"];
169-
const conversationId = data["conversationId"];
170-
const messageId = data["messageId"];
171-
console.log("Conversation message created", projectId, conversationId, messageId);
172-
}
173-
}, this);
174-
175-
socket.on("conversation:message:update", data => {
176-
if (data) {
177-
const projectId = data["projectId"];
178-
const conversationId = data["conversationId"];
179-
const messageId = data["messageId"];
180-
console.log("Conversation message created", projectId, conversationId, messageId);
181-
}
182-
}, this);
183-
184-
socket.on("conversation:message:deleted", data => {
185-
if (data) {
186-
const projectId = data["projectId"];
187-
const conversationId = data["conversationId"];
188-
const messageId = data["messageId"];
189-
console.log("Conversation message created", projectId, conversationId, messageId);
190-
}
191-
}, this);
168+
[
169+
"conversation:message:created",
170+
"conversation:message:update",
171+
"conversation:message:deleted",
172+
].forEach(eventName => {
173+
socket.on(eventName, data => {
174+
console.log("Conversation message", eventName, data);
175+
if (data) {
176+
const conversationId = data["conversationId"];
177+
const conversation = this.__getConversation(conversationId);
178+
if (conversation) {
179+
switch (eventName) {
180+
case "conversation:message:created":
181+
conversation.addMessage(data);
182+
break;
183+
case "conversation:message:update":
184+
conversation.updateMessage(data);
185+
break;
186+
case "conversation:message:deleted":
187+
conversation.deleteMessage(data);
188+
break;
189+
}
190+
}
191+
}
192+
}, this);
193+
});
194+
},
195+
196+
__getConversation: function(conversationId) {
197+
return this.__conversations.find(conversation => conversation.getConversationId() === conversationId);
192198
},
193199

194200
fetchConversations: function(studyData) {

0 commit comments

Comments
 (0)