Skip to content

Commit 84c7c95

Browse files
authored
Merge pull request #20 from halwan-bot/master
Chat with owner changes
2 parents 6f0bdec + 4d75a59 commit 84c7c95

4 files changed

Lines changed: 80 additions & 22 deletions

File tree

plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"author": "BuildFire",
3-
"pluginName": "Premium Social Wall Inbox",
3+
"pluginName": "Inbox",
44
"pluginDescription": "Inbox for premium social wall one on one threads",
55
"supportEmail": "support@buildfire.com",
66
"control": {

src/data/Thread.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class Thread {
1919
instanceId: undefined,
2020
folderName: undefined
2121
};
22+
this.isSupportThread = record.data.isSupportThread || undefined;
2223
this.lastMessage = record.data.lastMessage || {
2324
text: undefined,
2425
createdAt: undefined,
@@ -46,6 +47,7 @@ class Thread {
4647
wallTitle: this.wallTitle,
4748
lastMessage: this.lastMessage,
4849
navigationData: this.navigationData,
50+
isSupportThread: this.isSupportThread,
4951
_buildfire: {
5052
index: {
5153
number1: this.isActive ? 1 : 0,

src/widget/images/people_alt.svg

Lines changed: 6 additions & 0 deletions
Loading

src/widget/widget.js

Lines changed: 71 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)