|
|
|
@ -138,7 +138,9 @@ export const _getLeftPaneLists = (
|
|
|
|
|
unreadCount += conversation.unreadCount;
|
|
|
|
|
}
|
|
|
|
|
if (conversation.hasSentFriendRequest) {
|
|
|
|
|
allSentFriendsRequest.push(conversation);
|
|
|
|
|
if (!conversation.isFriend) {
|
|
|
|
|
allSentFriendsRequest.push(conversation);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!conversation.activeAt) {
|
|
|
|
@ -152,31 +154,39 @@ export const _getLeftPaneLists = (
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const filterToPrimary = (
|
|
|
|
|
const filterToPrimary = <
|
|
|
|
|
T extends Array<ConversationType | ConversationListItemPropsType>
|
|
|
|
|
>(
|
|
|
|
|
group: Array<ConversationType | ConversationListItemPropsType>
|
|
|
|
|
) => {
|
|
|
|
|
// Used to ensure that only the primary device gets added to LeftPane filtered groups
|
|
|
|
|
): T => {
|
|
|
|
|
const secondariesToRemove: Array<string> = [];
|
|
|
|
|
group.forEach(device => {
|
|
|
|
|
if (!device.isSecondary) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const devicePrimary = group.find(c => c.id === device.primaryDevice);
|
|
|
|
|
// Remove secondary where primary already exists in group
|
|
|
|
|
if (group.some(c => c === devicePrimary)) {
|
|
|
|
|
secondariesToRemove.push(device.id);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
const constructedGroup = conversations.filter(c =>
|
|
|
|
|
group.some(g => c.id === g.id)
|
|
|
|
|
);
|
|
|
|
|
// tslint:disable-next-line: no-unnecessary-local-variable
|
|
|
|
|
const filteredGroup = constructedGroup.filter(
|
|
|
|
|
(c, idx) =>
|
|
|
|
|
!(
|
|
|
|
|
c.isSecondary &&
|
|
|
|
|
constructedGroup.some(
|
|
|
|
|
g => !g.isSecondary && g.id === constructedGroup[idx].primaryDevice
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
const filteredGroup = group.filter(
|
|
|
|
|
c => !secondariesToRemove.find(s => s === c.id)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
return filteredGroup;
|
|
|
|
|
return filteredGroup as T;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const friends = filterToPrimary(allFriends);
|
|
|
|
|
const receivedFriendsRequest = filterToPrimary(allReceivedFriendsRequest);
|
|
|
|
|
const sentFriendsRequest = filterToPrimary(allSentFriendsRequest);
|
|
|
|
|
const friends: Array<ConversationType> = filterToPrimary(allFriends);
|
|
|
|
|
const receivedFriendsRequest: Array<
|
|
|
|
|
ConversationListItemPropsType
|
|
|
|
|
> = filterToPrimary(allReceivedFriendsRequest);
|
|
|
|
|
const sentFriendsRequest: Array<
|
|
|
|
|
ConversationListItemPropsType
|
|
|
|
|
> = filterToPrimary(allSentFriendsRequest);
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
conversations,
|
|
|
|
|