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