Fix selection limit for add members GV1.

Fixes #10005
master
Alan Evans 2020-09-10 09:59:57 -03:00
parent 9c8857352b
commit f110d595d2
5 changed files with 16 additions and 8 deletions

View File

@ -106,7 +106,7 @@ public final class ContactSelectionListFragment extends LoggingFragment
public static final String MULTI_SELECT = "multi_select"; public static final String MULTI_SELECT = "multi_select";
public static final String REFRESHABLE = "refreshable"; public static final String REFRESHABLE = "refreshable";
public static final String RECENTS = "recents"; public static final String RECENTS = "recents";
public static final String TOTAL_CAPACITY = "total_capacity"; public static final String SELECTION_LIMIT = "selection_limit";
public static final String CURRENT_SELECTION = "current_selection"; public static final String CURRENT_SELECTION = "current_selection";
private ConstraintLayout constraintLayout; private ConstraintLayout constraintLayout;
@ -208,7 +208,7 @@ public final class ContactSelectionListFragment extends LoggingFragment
swipeRefresh.setEnabled(requireActivity().getIntent().getBooleanExtra(REFRESHABLE, true)); swipeRefresh.setEnabled(requireActivity().getIntent().getBooleanExtra(REFRESHABLE, true));
selectionLimit = requireActivity().getIntent().getIntExtra(TOTAL_CAPACITY, NO_LIMIT); selectionLimit = requireActivity().getIntent().getIntExtra(SELECTION_LIMIT, NO_LIMIT);
currentSelection = getCurrentSelection(); currentSelection = getCurrentSelection();
updateGroupLimit(getChipCount()); updateGroupLimit(getChipCount());

View File

@ -51,7 +51,7 @@ public final class AddToGroupsActivity extends ContactSelectionActivity {
intent.putExtra(EXTRA_RECIPIENT_ID, recipientId); intent.putExtra(EXTRA_RECIPIENT_ID, recipientId);
intent.putExtra(ContactSelectionListFragment.DISPLAY_MODE, ContactsCursorLoader.DisplayMode.FLAG_ACTIVE_GROUPS); intent.putExtra(ContactSelectionListFragment.DISPLAY_MODE, ContactsCursorLoader.DisplayMode.FLAG_ACTIVE_GROUPS);
intent.putExtra(ContactSelectionListFragment.TOTAL_CAPACITY, ContactSelectionListFragment.NO_LIMIT); intent.putExtra(ContactSelectionListFragment.SELECTION_LIMIT, ContactSelectionListFragment.NO_LIMIT);
intent.putParcelableArrayListExtra(ContactSelectionListFragment.CURRENT_SELECTION, new ArrayList<>(currentGroupsMemberOf)); intent.putParcelableArrayListExtra(ContactSelectionListFragment.CURRENT_SELECTION, new ArrayList<>(currentGroupsMemberOf));

View File

@ -31,7 +31,6 @@ import org.thoughtcrime.securesms.util.views.SimpleProgressDialog;
import org.whispersystems.libsignal.util.guava.Optional; import org.whispersystems.libsignal.util.guava.Optional;
import java.io.IOException; import java.io.IOException;
import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
@ -55,8 +54,8 @@ public class CreateGroupActivity extends ContactSelectionActivity {
: ContactsCursorLoader.DisplayMode.FLAG_PUSH; : ContactsCursorLoader.DisplayMode.FLAG_PUSH;
intent.putExtra(ContactSelectionListFragment.DISPLAY_MODE, displayMode); intent.putExtra(ContactSelectionListFragment.DISPLAY_MODE, displayMode);
intent.putExtra(ContactSelectionListFragment.TOTAL_CAPACITY, FeatureFlags.groupsV2create() ? FeatureFlags.gv2GroupCapacity() - 1 intent.putExtra(ContactSelectionListFragment.SELECTION_LIMIT, FeatureFlags.groupsV2create() ? FeatureFlags.gv2GroupCapacity() - 1
: ContactSelectionListFragment.NO_LIMIT); : ContactSelectionListFragment.NO_LIMIT);
return intent; return intent;
} }

View File

@ -199,6 +199,16 @@ final class ManageGroupRepository {
return totalCapacity; return totalCapacity;
} }
public int getSelectionLimit() {
if (totalCapacity == ContactSelectionListFragment.NO_LIMIT) {
return totalCapacity;
}
boolean containsSelf = members.indexOf(Recipient.self().getId()) != -1;
return totalCapacity - (containsSelf ? 1 : 0);
}
public int getRemainingCapacity() { public int getRemainingCapacity() {
return totalCapacity - members.size(); return totalCapacity - members.size();
} }

View File

@ -46,7 +46,6 @@ import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.util.livedata.LiveDataUtil; import org.thoughtcrime.securesms.util.livedata.LiveDataUtil;
import org.thoughtcrime.securesms.util.views.SimpleProgressDialog; import org.thoughtcrime.securesms.util.views.SimpleProgressDialog;
import java.util.ArrayList;
import java.util.List; import java.util.List;
public class ManageGroupViewModel extends ViewModel { public class ManageGroupViewModel extends ViewModel {
@ -321,7 +320,7 @@ public class ManageGroupViewModel extends ViewModel {
Intent intent = new Intent(fragment.requireActivity(), AddMembersActivity.class); Intent intent = new Intent(fragment.requireActivity(), AddMembersActivity.class);
intent.putExtra(AddMembersActivity.GROUP_ID, manageGroupRepository.getGroupId().toString()); intent.putExtra(AddMembersActivity.GROUP_ID, manageGroupRepository.getGroupId().toString());
intent.putExtra(ContactSelectionListFragment.DISPLAY_MODE, ContactsCursorLoader.DisplayMode.FLAG_PUSH); intent.putExtra(ContactSelectionListFragment.DISPLAY_MODE, ContactsCursorLoader.DisplayMode.FLAG_PUSH);
intent.putExtra(ContactSelectionListFragment.TOTAL_CAPACITY, capacity.getTotalCapacity() - 1); intent.putExtra(ContactSelectionListFragment.SELECTION_LIMIT, capacity.getSelectionLimit());
intent.putParcelableArrayListExtra(ContactSelectionListFragment.CURRENT_SELECTION, capacity.getMembersWithoutSelf()); intent.putParcelableArrayListExtra(ContactSelectionListFragment.CURRENT_SELECTION, capacity.getMembersWithoutSelf());
fragment.startActivityForResult(intent, resultCode); fragment.startActivityForResult(intent, resultCode);
} }