diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/GroupJoinBottomSheetDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/GroupJoinBottomSheetDialogFragment.java index e7385ba7ac..8a4e443eff 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/GroupJoinBottomSheetDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/GroupJoinBottomSheetDialogFragment.java @@ -183,6 +183,7 @@ public final class GroupJoinBottomSheetDialogFragment extends BottomSheetDialogF case GROUP_LINK_NOT_ACTIVE: return getString(R.string.GroupJoinBottomSheetDialogFragment_this_group_link_is_not_active); case BANNED : return getString(R.string.GroupJoinBottomSheetDialogFragment_you_cant_join_this_group_via_the_group_link_because_an_admin_removed_you); case NETWORK_ERROR : return getString(R.string.GroupJoinBottomSheetDialogFragment_encountered_a_network_error); + case LIMIT_REACHED : return getString(R.string.GroupJoinBottomSheetDialogFragment_group_limit_reached); default : return getString(R.string.GroupJoinBottomSheetDialogFragment_unable_to_join_group_please_try_again_later); } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/GroupJoinRepository.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/GroupJoinRepository.java index 52bf4c92a8..fb4a7bd2f6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/GroupJoinRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/GroupJoinRepository.java @@ -18,6 +18,7 @@ import org.thoughtcrime.securesms.groups.v2.GroupInviteLinkUrl; import org.thoughtcrime.securesms.jobs.AvatarGroupsV2DownloadJob; import org.thoughtcrime.securesms.util.AsynchronousCallback; import org.whispersystems.signalservice.api.groupsv2.GroupLinkNotActiveException; +import org.whispersystems.signalservice.internal.push.exceptions.GroupPatchNotAcceptedException; import java.io.IOException; @@ -68,9 +69,19 @@ final class GroupJoinRepository { } catch (GroupLinkNotActiveException e) { Log.w(TAG, "Inactive group error", e); callback.onError(e.getReason() == GroupLinkNotActiveException.Reason.BANNED ? JoinGroupError.BANNED : JoinGroupError.GROUP_LINK_NOT_ACTIVE); - } catch (GroupChangeFailedException | MembershipNotSuitableForV2Exception e) { - Log.w(TAG, "Change failed", e); + } catch (MembershipNotSuitableForV2Exception e) { + Log.w(TAG, "Membership not suitable", e); callback.onError(JoinGroupError.FAILED); + } catch (GroupChangeFailedException e) { + Log.w(TAG, "Group change failed", e); + JoinGroupError error = JoinGroupError.FAILED; + if (e.getCause() instanceof GroupPatchNotAcceptedException) { + String message = e.getCause().getMessage(); + if (message != null && message.contains("group size cannot exceed")) { + error = JoinGroupError.LIMIT_REACHED; + } + } + callback.onError(error); } }); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/JoinGroupError.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/JoinGroupError.java index 21586bd554..7047bae047 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/JoinGroupError.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/invitesandrequests/joining/JoinGroupError.java @@ -5,5 +5,6 @@ enum JoinGroupError { GROUP_LINK_NOT_ACTIVE, BANNED, FAILED, + LIMIT_REACHED, NETWORK_ERROR, } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f051dceed9..084430803c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1640,6 +1640,8 @@ Unable to join group. Please try again later Encountered a network error. This group link is not active + + Group limit reached, unable to join group Can\'t join group