Merge pull request #1129 from vincentbavitz/fr-fixes

FR Duplication Fixes | Patch for #1118
pull/1130/head
Mikunj Varsani 5 years ago committed by GitHub
commit e9fea782b9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -25,6 +25,7 @@ export type PropsData = {
isPublic?: boolean;
isRss?: boolean;
isClosable?: boolean;
primaryDevice?: string;
lastUpdated: number;
unreadCount: number;

@ -325,8 +325,7 @@ export class LeftPaneContactSection extends React.Component<Props, State> {
const friends = window.getFriendsFromContacts(this.props.friends);
const length = Number(sentFriendsRequest.length) + Number(friends.length);
// Prevent where friends and send FR showing two entries
const combined = [...new Set([...sentFriendsRequest, ...friends])];
const combined = [...sentFriendsRequest, ...friends];
const list = (
<div className="module-left-pane__list" key={0}>

@ -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,

Loading…
Cancel
Save