Skip to content

Commit b2e4665

Browse files
committed
speed-up bindSharedAvatars
Signed-off-by: alperozturk96 <alper_ozturk@proton.me>
1 parent 232d950 commit b2e4665

1 file changed

Lines changed: 25 additions & 11 deletions

File tree

app/src/main/java/com/owncloud/android/ui/adapter/OCFileListAdapter.java

Lines changed: 25 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@
7575
import java.io.File;
7676
import java.text.SimpleDateFormat;
7777
import java.util.ArrayList;
78-
import java.util.Collections;
7978
import java.util.Date;
8079
import java.util.List;
8180
import java.util.Locale;
@@ -594,29 +593,44 @@ private void handleListMode(ListGridItemViewHolder holder,
594593
}
595594

596595
private void bindSharedAvatars(ListItemViewHolder holder, OCFile file) {
596+
final var sharedAvatars = holder.getSharedAvatars();
597+
597598
if (!(file.isSharedWithMe() || file.isSharedWithSharee()) || isMultiSelect() || gridView || hideItemOptions) {
598-
holder.getSharedAvatars().setVisibility(View.GONE);
599-
holder.getSharedAvatars().removeAllViews();
599+
sharedAvatars.setVisibility(View.GONE);
600+
if (sharedAvatars.getChildCount() > 0) {
601+
sharedAvatars.removeAllViews();
602+
}
600603
return;
601604
}
602605

603-
final var sharees = new ArrayList<>(file.getSharees());
606+
sharedAvatars.setVisibility(View.VISIBLE);
607+
sharedAvatars.setAvatars(user, avatarSharees(file), viewThemeUtils);
608+
sharedAvatars.setOnClickListener(view -> ocFileListFragmentInterface.onShareIconClick(file));
609+
}
610+
611+
private List<ShareeUser> avatarSharees(OCFile file) {
612+
final List<ShareeUser> sharees = file.getSharees();
604613

614+
ShareeUser owner = null;
605615
final String ownerId = file.getOwnerId();
606616
if (!TextUtils.isEmpty(ownerId) && !ownerId.equals(userId)) {
607617
final var ownerSharee = new ShareeUser(ownerId, file.getOwnerDisplayName(), ShareType.USER);
608618
if (!sharees.contains(ownerSharee)) {
609-
sharees.add(ownerSharee);
619+
owner = ownerSharee;
610620
}
611621
}
612622

613-
Collections.reverse(sharees);
623+
final var ordered = new ArrayList<ShareeUser>(sharees.size() + (owner == null ? 0 : 1));
624+
if (owner != null) {
625+
ordered.add(owner);
626+
}
614627

615-
final var sharedAvatars = holder.getSharedAvatars();
616-
sharedAvatars.setVisibility(View.VISIBLE);
617-
sharedAvatars.removeAllViews();
618-
sharedAvatars.setAvatars(user, sharees, viewThemeUtils);
619-
sharedAvatars.setOnClickListener(view -> ocFileListFragmentInterface.onShareIconClick(file));
628+
// count from last to first to get desired order
629+
for (int i = sharees.size() - 1; i >= 0; i--) {
630+
ordered.add(sharees.get(i));
631+
}
632+
633+
return ordered;
620634
}
621635

622636
private void bindListItemViewHolder(ListItemViewHolder holder, OCFile file) {

0 commit comments

Comments
 (0)