|
75 | 75 | import java.io.File; |
76 | 76 | import java.text.SimpleDateFormat; |
77 | 77 | import java.util.ArrayList; |
78 | | -import java.util.Collections; |
79 | 78 | import java.util.Date; |
80 | 79 | import java.util.List; |
81 | 80 | import java.util.Locale; |
@@ -594,29 +593,44 @@ private void handleListMode(ListGridItemViewHolder holder, |
594 | 593 | } |
595 | 594 |
|
596 | 595 | private void bindSharedAvatars(ListItemViewHolder holder, OCFile file) { |
| 596 | + final var sharedAvatars = holder.getSharedAvatars(); |
| 597 | + |
597 | 598 | 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 | + } |
600 | 603 | return; |
601 | 604 | } |
602 | 605 |
|
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(); |
604 | 613 |
|
| 614 | + ShareeUser owner = null; |
605 | 615 | final String ownerId = file.getOwnerId(); |
606 | 616 | if (!TextUtils.isEmpty(ownerId) && !ownerId.equals(userId)) { |
607 | 617 | final var ownerSharee = new ShareeUser(ownerId, file.getOwnerDisplayName(), ShareType.USER); |
608 | 618 | if (!sharees.contains(ownerSharee)) { |
609 | | - sharees.add(ownerSharee); |
| 619 | + owner = ownerSharee; |
610 | 620 | } |
611 | 621 | } |
612 | 622 |
|
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 | + } |
614 | 627 |
|
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; |
620 | 634 | } |
621 | 635 |
|
622 | 636 | private void bindListItemViewHolder(ListItemViewHolder holder, OCFile file) { |
|
0 commit comments