@@ -14,24 +14,44 @@ function reloadMessages(threads, clearOldThreads) {
1414 hideEmptyState();
1515 }
1616 const inboxMessages = document.getElementById("inboxMessages");
17- let thread_template = document.getElementById("thread-ui-template").innerHTML;
1817 if (clearOldThreads) inboxMessages.innerHTML = "";
19- let elementsToAppend= [];
18+ let elementsToAppend = [];
2019 threads.forEach((thread) => {
21- let otherUser = thread.users.find((u) => u._id !== loggedInUser._id);
22- if (!otherUser) otherUser = thread.users[0];
23- buildfire.auth.getUserProfile({userId: otherUser._id },(err,loadUser)=>{
24- if(err || !loadUser) return console.error('User not found.');
25- otherUser=loadUser;
20+ let thread_template = document.getElementById("thread-ui-template").innerHTML;
21+ let userIds;
22+
23+ if (!thread.isSupportThread) {
24+ userIds = thread.users.filter(u => u._id !== loggedInUser._id).map(u => u._id);
25+ } else {
26+ userIds = thread.users.map(u => u._id);
27+ }
28+
29+ buildfire.auth.getUserProfiles({ userIds }, (err, users)=> {
30+ if(err || !users.length) return console.error('User not found.');
31+
32+ let otherUser, otherUsers;
33+
34+ if (thread.isSupportThread) {
35+ otherUsers = users;
36+ } else {
37+ otherUser = users[0];
38+ }
39+
2640 let imageUrl;
27- if (otherUser.imageUrl)
41+ if (otherUser && otherUser .imageUrl) {
2842 imageUrl = buildfire.imageLib.cropImage(otherUser.imageUrl, {
2943 size: "xs",
3044 aspect: "1:1",
3145 });
32- else imageUrl = "./images/avatar.png";
46+ }
47+ else if (otherUsers) {
48+ imageUrl = "./images/people_alt.svg";
49+ }
50+ else {
51+ imageUrl = "./images/avatar.png";
52+ }
53+
3354 let element = document.createElement("div");
34-
3555 let time = new Date(thread.lastMessage.createdAt);
3656
3757 if (isToday(time)) {
@@ -42,35 +62,65 @@ function reloadMessages(threads, clearOldThreads) {
4262
4363 const lastMessageText = time + unescape(thread.lastMessage.text);
4464
45- const redDotVisible =
46- thread.lastMessage.sender === otherUser._id && !thread.lastMessage.isRead;
65+ const redDotVisible = thread.lastMessage.sender !== loggedInUser._id && !thread.lastMessage.isRead;
66+
67+ if (otherUsers) {
68+ thread_template = thread_template.replace(
69+ "{{displayName}}",
70+ otherUsers
71+ .map((u) => {
72+ return u.displayName
73+ ? u.displayName
74+ : u.firstName && u.lastName
75+ ? `${u.firstName} ${u.lastName}`
76+ : u.firstName
77+ ? u.firstName
78+ : u.lastName
79+ ? u.lastName
80+ : "Someone";
81+ })
82+ .join(", ")
83+ );
84+ } else {
85+ thread_template = thread_template.replace("{{displayName}}", otherUser.displayName ? otherUser.displayName : otherUser.firstName && otherUser.lastName ? `${otherUser.firstName} ${otherUser.lastName}` : otherUser.firstName ? otherUser.firstName : otherUser.lastName ? otherUser.lastName : "Someone")
86+ }
4787
4888 element.innerHTML = thread_template
49- .replace("{{displayName}}", otherUser.displayName ? otherUser.displayName : otherUser.firstName && otherUser.lastName ? `${otherUser.firstName} ${otherUser.lastName}` : otherUser.firstName ? otherUser.firstName : otherUser.lastName ? otherUser.lastName : "Someone")
5089 .replace("{{imageUrl}}", imageUrl)
5190 .replace("{{lastMessage}}", lastMessageText)
5291 .replace("{{visibility}}", redDotVisible ? "visible" : "hidden");
53-
92+
5493 element.onclick = () => {
5594 if (redDotVisible) Threads.setReadTrue(loggedInUser, thread, () => {});
5695
57- buildfire.navigation.navigateTo( {
96+ let navigationParams = {
5897 pluginId: thread.navigationData.pluginId,
5998 instanceId: thread.navigationData.instanceId,
6099 folderName: thread.navigationData.folderName,
61100 title: thread.wallTitle,
62- queryString: "wid=" + thread.wallId + "&wTitle=" + thread.wallTitle,
63- });
101+ queryString: "wid=" + thread.wallId + "&wTitle=" + thread.wallTitle
102+ }
103+
104+ if (otherUsers) {
105+ navigationParams.queryString += `&userIds=${ otherUsers.map(u => u._id) }`;
106+ }
107+
108+ buildfire.navigation.navigateTo(navigationParams);
64109 };
110+
65111 elementsToAppend.push({time:thread.lastMessage.createdAt,obj:element});
66112
67113 // i'm not sure why this condition has been written!! i commented it out cuz it makes issues when we are getting null for deleted users from getUserProfile(), so the threads will be larger than the elementsToAppend.
68114
69115 // if(elementsToAppend.length==threads.length){
70- elementsToAppend=elementsToAppend.sort((a, b)=>{return new Date(b.time)-new Date(a.time);});
71- elementsToAppend.forEach(toDiv=>{
72- inboxMessages.appendChild(toDiv.obj);
73- })
116+ elementsToAppend = elementsToAppend.sort((a, b) => { return new Date(b.time) - new Date(a.time); });
117+ elementsToAppend.forEach(toDiv => {
118+ inboxMessages.appendChild(toDiv.obj);
119+ });
120+
121+ if (otherUsers) {
122+ element.querySelector('img.profile-image').style.backgroundColor = '#9696961A';
123+ }
74124 // }
75125 });
76126 });
0 commit comments