mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-22 09:49:30 +01:00
Inline Group Invite Link feature flags.
This commit is contained in:
@@ -30,8 +30,6 @@ import org.thoughtcrime.securesms.jobs.RetrieveProfileJob;
|
||||
import org.thoughtcrime.securesms.logging.Log;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.util.BottomSheetUtil;
|
||||
import org.thoughtcrime.securesms.util.FeatureFlags;
|
||||
import org.thoughtcrime.securesms.util.PlayStoreUtil;
|
||||
import org.thoughtcrime.securesms.util.ThemeUtil;
|
||||
|
||||
public final class GroupJoinBottomSheetDialogFragment extends BottomSheetDialogFragment {
|
||||
@@ -101,20 +99,6 @@ public final class GroupJoinBottomSheetDialogFragment extends BottomSheetDialogF
|
||||
groupDetails.setText(requireContext().getResources().getQuantityString(R.plurals.GroupJoinBottomSheetDialogFragment_group_dot_d_members, details.getGroupMembershipCount(), details.getGroupMembershipCount()));
|
||||
|
||||
switch (getGroupJoinStatus()) {
|
||||
case COMING_SOON:
|
||||
groupJoinExplain.setText(R.string.GroupJoinUpdateRequiredBottomSheetDialogFragment_coming_soon);
|
||||
groupCancelButton.setText(android.R.string.ok);
|
||||
groupJoinButton.setVisibility(View.GONE);
|
||||
break;
|
||||
case UPDATE_TO_JOIN:
|
||||
groupJoinExplain.setText(R.string.GroupJoinUpdateRequiredBottomSheetDialogFragment_update_message);
|
||||
groupJoinButton.setText(R.string.GroupJoinUpdateRequiredBottomSheetDialogFragment_update_signal);
|
||||
groupJoinButton.setOnClickListener(v -> {
|
||||
PlayStoreUtil.openPlayStoreOrOurApkDownloadPage(requireContext());
|
||||
dismiss();
|
||||
});
|
||||
groupJoinButton.setVisibility(View.VISIBLE);
|
||||
break;
|
||||
case UPDATE_LINKED_DEVICE_TO_JOIN:
|
||||
groupJoinExplain.setText(R.string.GroupJoinUpdateRequiredBottomSheetDialogFragment_update_linked_device_message);
|
||||
groupCancelButton.setText(android.R.string.ok);
|
||||
@@ -162,19 +146,10 @@ public final class GroupJoinBottomSheetDialogFragment extends BottomSheetDialogF
|
||||
}
|
||||
|
||||
private static ExtendedGroupJoinStatus getGroupJoinStatus() {
|
||||
FeatureFlags.GroupJoinStatus groupJoinStatus = FeatureFlags.clientLocalGroupJoinStatus();
|
||||
|
||||
switch (groupJoinStatus) {
|
||||
case COMING_SOON : return ExtendedGroupJoinStatus.COMING_SOON;
|
||||
case UPDATE_TO_JOIN: return ExtendedGroupJoinStatus.UPDATE_TO_JOIN;
|
||||
case LOCAL_CAN_JOIN: {
|
||||
if (Recipient.self().getGroupsV2Capability() != Recipient.Capability.SUPPORTED) {
|
||||
return ExtendedGroupJoinStatus.UPDATE_LINKED_DEVICE_TO_JOIN;
|
||||
}
|
||||
|
||||
return ExtendedGroupJoinStatus.LOCAL_CAN_JOIN;
|
||||
}
|
||||
default: throw new AssertionError();
|
||||
if (Recipient.self().getGroupsV2Capability() != Recipient.Capability.SUPPORTED) {
|
||||
return ExtendedGroupJoinStatus.UPDATE_LINKED_DEVICE_TO_JOIN;
|
||||
} else {
|
||||
return ExtendedGroupJoinStatus.LOCAL_CAN_JOIN;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -215,12 +190,6 @@ public final class GroupJoinBottomSheetDialogFragment extends BottomSheetDialogF
|
||||
}
|
||||
|
||||
public enum ExtendedGroupJoinStatus {
|
||||
/** No version of the client that can join V2 groups by link is in production. */
|
||||
COMING_SOON,
|
||||
|
||||
/** A newer version of the client is in production that will allow joining via GV2 group links. */
|
||||
UPDATE_TO_JOIN,
|
||||
|
||||
/** Locally we're using a version that can use group links, but one or more linked devices needs updating for GV2. */
|
||||
UPDATE_LINKED_DEVICE_TO_JOIN,
|
||||
|
||||
|
||||
@@ -16,7 +16,6 @@ import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
|
||||
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.util.BottomSheetUtil;
|
||||
import org.thoughtcrime.securesms.util.FeatureFlags;
|
||||
import org.thoughtcrime.securesms.util.PlayStoreUtil;
|
||||
import org.thoughtcrime.securesms.util.ThemeUtil;
|
||||
|
||||
@@ -54,24 +53,13 @@ public final class GroupJoinUpdateRequiredBottomSheetDialogFragment extends Bott
|
||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
switch (FeatureFlags.clientLocalGroupJoinStatus()) {
|
||||
case COMING_SOON:
|
||||
groupJoinTitle.setText(R.string.GroupJoinUpdateRequiredBottomSheetDialogFragment_group_links_coming_soon);
|
||||
groupJoinExplain.setText(R.string.GroupJoinUpdateRequiredBottomSheetDialogFragment_coming_soon);
|
||||
groupJoinButton.setText(android.R.string.ok);
|
||||
groupJoinButton.setOnClickListener(v -> dismiss());
|
||||
break;
|
||||
case UPDATE_TO_JOIN:
|
||||
case LOCAL_CAN_JOIN:
|
||||
groupJoinTitle.setText(R.string.GroupJoinUpdateRequiredBottomSheetDialogFragment_update_signal_to_use_group_links);
|
||||
groupJoinExplain.setText(R.string.GroupJoinUpdateRequiredBottomSheetDialogFragment_update_message);
|
||||
groupJoinButton.setText(R.string.GroupJoinUpdateRequiredBottomSheetDialogFragment_update_signal);
|
||||
groupJoinButton.setOnClickListener(v -> {
|
||||
PlayStoreUtil.openPlayStoreOrOurApkDownloadPage(requireContext());
|
||||
dismiss();
|
||||
});
|
||||
break;
|
||||
}
|
||||
groupJoinTitle.setText(R.string.GroupJoinUpdateRequiredBottomSheetDialogFragment_update_signal_to_use_group_links);
|
||||
groupJoinExplain.setText(R.string.GroupJoinUpdateRequiredBottomSheetDialogFragment_update_message);
|
||||
groupJoinButton.setText(R.string.GroupJoinUpdateRequiredBottomSheetDialogFragment_update_signal);
|
||||
groupJoinButton.setOnClickListener(v -> {
|
||||
PlayStoreUtil.openPlayStoreOrOurApkDownloadPage(requireContext());
|
||||
dismiss();
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -46,7 +46,6 @@ import org.thoughtcrime.securesms.groups.ui.managegroup.dialogs.GroupInviteSentD
|
||||
import org.thoughtcrime.securesms.groups.ui.managegroup.dialogs.GroupRightsDialog;
|
||||
import org.thoughtcrime.securesms.groups.ui.managegroup.dialogs.GroupsLearnMoreBottomSheetDialogFragment;
|
||||
import org.thoughtcrime.securesms.groups.ui.migration.GroupsV1MigrationInitiationBottomSheetDialogFragment;
|
||||
import org.thoughtcrime.securesms.groups.ui.pendingmemberinvites.PendingMemberInvitesActivity;
|
||||
import org.thoughtcrime.securesms.logging.Log;
|
||||
import org.thoughtcrime.securesms.mediaoverview.MediaOverviewActivity;
|
||||
import org.thoughtcrime.securesms.mms.GlideApp;
|
||||
@@ -79,8 +78,6 @@ public class ManageGroupFragment extends LoggingFragment {
|
||||
|
||||
private ManageGroupViewModel viewModel;
|
||||
private GroupMemberListView groupMemberList;
|
||||
private View pendingMembersRow;
|
||||
private TextView pendingMembersCount;
|
||||
private View pendingAndRequestingRow;
|
||||
private TextView pendingAndRequestingCount;
|
||||
private Toolbar toolbar;
|
||||
@@ -92,7 +89,6 @@ public class ManageGroupFragment extends LoggingFragment {
|
||||
private ThreadPhotoRailView threadPhotoRailView;
|
||||
private View groupMediaCard;
|
||||
private View accessControlCard;
|
||||
private View pendingMembersCard;
|
||||
private View groupLinkCard;
|
||||
private ManageGroupViewModel.CursorFactory cursorFactory;
|
||||
private View sharedMediaRow;
|
||||
@@ -150,14 +146,11 @@ public class ManageGroupFragment extends LoggingFragment {
|
||||
memberCountUnderAvatar = view.findViewById(R.id.member_count);
|
||||
memberCountAboveList = view.findViewById(R.id.member_count_2);
|
||||
groupMemberList = view.findViewById(R.id.group_members);
|
||||
pendingMembersRow = view.findViewById(R.id.pending_members_row);
|
||||
pendingMembersCount = view.findViewById(R.id.pending_members_count);
|
||||
pendingAndRequestingRow = view.findViewById(R.id.pending_and_requesting_members_row);
|
||||
pendingAndRequestingCount = view.findViewById(R.id.pending_and_requesting_members_count);
|
||||
threadPhotoRailView = view.findViewById(R.id.recent_photos);
|
||||
groupMediaCard = view.findViewById(R.id.group_media_card);
|
||||
accessControlCard = view.findViewById(R.id.group_access_control_card);
|
||||
pendingMembersCard = view.findViewById(R.id.group_pending_card);
|
||||
groupLinkCard = view.findViewById(R.id.group_link_card);
|
||||
sharedMediaRow = view.findViewById(R.id.shared_media_row);
|
||||
editGroupAccessRow = view.findViewById(R.id.edit_group_access_row);
|
||||
@@ -210,34 +203,18 @@ public class ManageGroupFragment extends LoggingFragment {
|
||||
}
|
||||
});
|
||||
|
||||
if (FeatureFlags.groupsV2manageGroupLinks()) {
|
||||
viewModel.getPendingAndRequestingCount().observe(getViewLifecycleOwner(),
|
||||
pendingAndRequestingCount -> {
|
||||
pendingAndRequestingRow.setOnClickListener(v -> {
|
||||
FragmentActivity activity = requireActivity();
|
||||
activity.startActivity(ManagePendingAndRequestingMembersActivity.newIntent(activity, groupId.requireV2()));
|
||||
});
|
||||
if (pendingAndRequestingCount == 0) {
|
||||
this.pendingAndRequestingCount.setVisibility(View.GONE);
|
||||
} else {
|
||||
this.pendingAndRequestingCount.setText(String.format(Locale.getDefault(), "%d", pendingAndRequestingCount));
|
||||
this.pendingAndRequestingCount.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
viewModel.getPendingMemberCount().observe(getViewLifecycleOwner(),
|
||||
pendingInviteCount -> {
|
||||
pendingMembersRow.setOnClickListener(v -> {
|
||||
FragmentActivity activity = requireActivity();
|
||||
activity.startActivity(PendingMemberInvitesActivity.newIntent(activity, groupId.requireV2()));
|
||||
});
|
||||
if (pendingInviteCount == 0) {
|
||||
pendingMembersCount.setText(R.string.ManageGroupActivity_none);
|
||||
} else {
|
||||
pendingMembersCount.setText(getResources().getQuantityString(R.plurals.ManageGroupActivity_invited, pendingInviteCount, pendingInviteCount));
|
||||
}
|
||||
});
|
||||
}
|
||||
viewModel.getPendingAndRequestingCount().observe(getViewLifecycleOwner(), pendingAndRequestingCount -> {
|
||||
pendingAndRequestingRow.setOnClickListener(v -> {
|
||||
FragmentActivity activity = requireActivity();
|
||||
activity.startActivity(ManagePendingAndRequestingMembersActivity.newIntent(activity, groupId.requireV2()));
|
||||
});
|
||||
if (pendingAndRequestingCount == 0) {
|
||||
this.pendingAndRequestingCount.setVisibility(View.GONE);
|
||||
} else {
|
||||
this.pendingAndRequestingCount.setText(String.format(Locale.getDefault(), "%d", pendingAndRequestingCount));
|
||||
this.pendingAndRequestingCount.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
|
||||
avatar.setFallbackPhotoProvider(fallbackPhotoProvider);
|
||||
|
||||
@@ -283,8 +260,7 @@ public class ManageGroupFragment extends LoggingFragment {
|
||||
ViewCompat.getLayoutDirection(threadPhotoRailView) == ViewCompat.LAYOUT_DIRECTION_LTR),
|
||||
RETURN_FROM_MEDIA));
|
||||
|
||||
pendingMembersCard.setVisibility(!FeatureFlags.groupsV2manageGroupLinks() && vs.getGroupRecipient().requireGroupId().isV2() ? View.VISIBLE : View.GONE);
|
||||
groupLinkCard .setVisibility( FeatureFlags.groupsV2manageGroupLinks() && vs.getGroupRecipient().requireGroupId().isV2() ? View.VISIBLE : View.GONE);
|
||||
groupLinkCard.setVisibility(vs.getGroupRecipient().requireGroupId().isV2() ? View.VISIBLE : View.GONE);
|
||||
});
|
||||
|
||||
leaveGroup.setVisibility(groupId.isPush() ? View.VISIBLE : View.GONE);
|
||||
|
||||
@@ -1,72 +0,0 @@
|
||||
package org.thoughtcrime.securesms.groups.ui.pendingmemberinvites;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
|
||||
import org.thoughtcrime.securesms.PassphraseRequiredActivity;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.groups.GroupId;
|
||||
import org.thoughtcrime.securesms.groups.ui.invitesandrequests.ManagePendingAndRequestingMembersActivity;
|
||||
import org.thoughtcrime.securesms.groups.ui.invitesandrequests.invited.PendingMemberInvitesFragment;
|
||||
import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme;
|
||||
import org.thoughtcrime.securesms.util.DynamicTheme;
|
||||
import org.thoughtcrime.securesms.util.FeatureFlags;
|
||||
|
||||
/**
|
||||
* @deprecated With group links FF, this activity is replaced with {@link ManagePendingAndRequestingMembersActivity}.
|
||||
*/
|
||||
@Deprecated
|
||||
public class PendingMemberInvitesActivity extends PassphraseRequiredActivity {
|
||||
|
||||
private static final String GROUP_ID = "GROUP_ID";
|
||||
|
||||
private final DynamicTheme dynamicTheme = new DynamicNoActionBarTheme();
|
||||
|
||||
public static Intent newIntent(@NonNull Context context, @NonNull GroupId.V2 groupId) {
|
||||
Intent intent = new Intent(context, PendingMemberInvitesActivity.class);
|
||||
intent.putExtra(GROUP_ID, groupId.toString());
|
||||
return intent;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPreCreate() {
|
||||
dynamicTheme.onCreate(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState, boolean ready) {
|
||||
super.onCreate(savedInstanceState, ready);
|
||||
|
||||
if (FeatureFlags.groupsV2manageGroupLinks()) {
|
||||
throw new AssertionError();
|
||||
}
|
||||
|
||||
setContentView(R.layout.group_pending_member_invites_activity);
|
||||
|
||||
if (savedInstanceState == null) {
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
.replace(R.id.container, PendingMemberInvitesFragment.newInstance(GroupId.parseOrThrow(getIntent().getStringExtra(GROUP_ID)).requireV2()))
|
||||
.commitNow();
|
||||
}
|
||||
|
||||
Toolbar toolbar = findViewById(R.id.toolbar);
|
||||
setSupportActionBar(toolbar);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
dynamicTheme.onResume(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onSupportNavigateUp() {
|
||||
onBackPressed();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user