virtual int32 GetFriendList(TArray< TSharedPtr<FFriendViewModel> >& OutFriendsList) override { TArray< TSharedPtr< IFriendItem > > FriendItemList = FriendsAndChatManager.Pin()->GetRecentPlayerList(); FriendItemList.Sort(FCompareGroupByName()); for(const auto& FriendItem : FriendItemList) { OutFriendsList.Add(FriendViewModelFactory->Create(FriendItem.ToSharedRef())); } return 0; }
virtual int32 GetFriendList(TArray< TSharedPtr<FFriendViewModel> >& OutFriendsList) override { TArray< TSharedPtr< IFriendItem > > FriendItemList; FFriendsAndChatManager::Get()->GetFilteredFriendsList(FriendItemList); TArray< TSharedPtr< IFriendItem > > OnlineFriendsList; TArray< TSharedPtr< IFriendItem > > OfflineFriendsList; int32 OnlineCount = 0; for( const auto& FriendItem : FriendItemList) { switch (ListType) { case EFriendsDisplayLists::DefaultDisplay : { if(FriendItem->GetInviteStatus() == EInviteStatus::Accepted) { if(FriendItem->IsOnline()) { OnlineFriendsList.Add(FriendItem); OnlineCount++; } else { OfflineFriendsList.Add(FriendItem); } } } break; case EFriendsDisplayLists::FriendRequestsDisplay : { if( FriendItem->GetInviteStatus() == EInviteStatus::PendingInbound) { OfflineFriendsList.Add(FriendItem.ToSharedRef()); } } break; case EFriendsDisplayLists::OutgoingFriendInvitesDisplay : { if( FriendItem->GetInviteStatus() == EInviteStatus::PendingOutbound) { OfflineFriendsList.Add(FriendItem.ToSharedRef()); } } break; } } OnlineFriendsList.Sort(FCompareGroupByName()); OfflineFriendsList.Sort(FCompareGroupByName()); for(const auto& FriendItem : OnlineFriendsList) { OutFriendsList.Add(FFriendViewModelFactory::Create(FriendItem.ToSharedRef())); } for(const auto& FriendItem : OfflineFriendsList) { OutFriendsList.Add(FFriendViewModelFactory::Create(FriendItem.ToSharedRef())); } return OnlineCount; }