Show linked device update message if we don't have the capability to join a group by link.

master
Alan Evans 2020-09-23 16:26:04 -03:00 committed by Greyson Parrelli
parent 34ef8b52f6
commit d459c751be
2 changed files with 36 additions and 10 deletions

View File

@ -24,7 +24,9 @@ import org.thoughtcrime.securesms.components.AvatarImageView;
import org.thoughtcrime.securesms.contacts.avatars.FallbackContactPhoto; import org.thoughtcrime.securesms.contacts.avatars.FallbackContactPhoto;
import org.thoughtcrime.securesms.contacts.avatars.ResourceContactPhoto; import org.thoughtcrime.securesms.contacts.avatars.ResourceContactPhoto;
import org.thoughtcrime.securesms.conversation.ConversationActivity; import org.thoughtcrime.securesms.conversation.ConversationActivity;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.groups.v2.GroupInviteLinkUrl; import org.thoughtcrime.securesms.groups.v2.GroupInviteLinkUrl;
import org.thoughtcrime.securesms.jobs.RetrieveProfileJob;
import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.util.BottomSheetUtil; import org.thoughtcrime.securesms.util.BottomSheetUtil;
@ -113,6 +115,13 @@ public final class GroupJoinBottomSheetDialogFragment extends BottomSheetDialogF
}); });
groupJoinButton.setVisibility(View.VISIBLE); groupJoinButton.setVisibility(View.VISIBLE);
break; break;
case UPDATE_LINKED_DEVICE_TO_JOIN:
groupJoinExplain.setText(R.string.GroupJoinUpdateRequiredBottomSheetDialogFragment_update_linked_device_message);
groupCancelButton.setText(android.R.string.ok);
groupJoinButton.setVisibility(View.GONE);
ApplicationDependencies.getJobManager()
.add(RetrieveProfileJob.forRecipient(Recipient.self().getId()));
break;
case LOCAL_CAN_JOIN: case LOCAL_CAN_JOIN:
groupJoinExplain.setText(details.joinRequiresAdminApproval() ? R.string.GroupJoinBottomSheetDialogFragment_admin_approval_needed groupJoinExplain.setText(details.joinRequiresAdminApproval() ? R.string.GroupJoinBottomSheetDialogFragment_admin_approval_needed
: R.string.GroupJoinBottomSheetDialogFragment_direct_join); : R.string.GroupJoinBottomSheetDialogFragment_direct_join);
@ -151,19 +160,21 @@ public final class GroupJoinBottomSheetDialogFragment extends BottomSheetDialogF
); );
} }
private static FeatureFlags.GroupJoinStatus getGroupJoinStatus() { private static ExtendedGroupJoinStatus getGroupJoinStatus() {
FeatureFlags.GroupJoinStatus groupJoinStatus = FeatureFlags.clientLocalGroupJoinStatus(); FeatureFlags.GroupJoinStatus groupJoinStatus = FeatureFlags.clientLocalGroupJoinStatus();
if (groupJoinStatus == FeatureFlags.GroupJoinStatus.LOCAL_CAN_JOIN) { switch (groupJoinStatus) {
if (Recipient.self().getGroupsV2Capability() == Recipient.Capability.NOT_SUPPORTED) { case COMING_SOON : return ExtendedGroupJoinStatus.COMING_SOON;
// TODO [Alan] GV2 additional copy could be presented in these cases case UPDATE_TO_JOIN: return ExtendedGroupJoinStatus.UPDATE_TO_JOIN;
return FeatureFlags.GroupJoinStatus.UPDATE_TO_JOIN; case LOCAL_CAN_JOIN: {
} if (Recipient.self().getGroupsV2Capability() != Recipient.Capability.SUPPORTED) {
return ExtendedGroupJoinStatus.UPDATE_LINKED_DEVICE_TO_JOIN;
return groupJoinStatus; }
}
return groupJoinStatus; return ExtendedGroupJoinStatus.LOCAL_CAN_JOIN;
}
default: throw new AssertionError();
}
} }
private @NonNull String errorToMessage(@NonNull FetchGroupDetailsError error) { private @NonNull String errorToMessage(@NonNull FetchGroupDetailsError error) {
@ -201,4 +212,18 @@ public final class GroupJoinBottomSheetDialogFragment extends BottomSheetDialogF
return new ResourceContactPhoto(R.drawable.ic_group_outline_48); return new ResourceContactPhoto(R.drawable.ic_group_outline_48);
} }
} }
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,
/** This version of the client allows joining via GV2 group links. */
LOCAL_CAN_JOIN
}
} }

View File

@ -727,6 +727,7 @@
<string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_coming_soon">Joining a group via a link is not yet supported by Signal. This feature will be released in an upcoming update.</string> <string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_coming_soon">Joining a group via a link is not yet supported by Signal. This feature will be released in an upcoming update.</string>
<string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_update_message">The version of Signal youre using does not support group links. Update to the latest version to join this group via link.</string> <string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_update_message">The version of Signal youre using does not support group links. Update to the latest version to join this group via link.</string>
<string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_update_signal">Update Signal</string> <string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_update_signal">Update Signal</string>
<string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_update_linked_device_message">One or more of your linked devices are running a version of Signal that doesn\'t support group links. Update Signal on your linked device(s) to join this group.</string>
<string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_group_link_is_not_valid">Group link is not valid</string> <string name="GroupJoinUpdateRequiredBottomSheetDialogFragment_group_link_is_not_valid">Group link is not valid</string>
<!-- GV2 Request confirmation dialog --> <!-- GV2 Request confirmation dialog -->