public Mono<Boolean> unblockUser(
            @NotNull Long requesterId,
            @NotNull Long groupId,
            @NotNull Long userIdToUnblock,
            @Nullable ClientSession session,
            boolean updateBlocklistVersion) {
        try {
            Validator.notNull(requesterId, "requesterId");
            Validator.notNull(groupId, "groupId");
            Validator.notNull(userIdToUnblock, "userIdToUnblock");
        } catch (ResponseException e) {
            return Mono.error(e);
        }
        return groupMemberService.isOwnerOrManager(requesterId, groupId, false)
                .flatMap(authenticated -> {
                    if (!authenticated) {
                        return Mono.error(ResponseException.get(
                                ResponseStatusCode.NOT_GROUP_OWNER_OR_MANAGER_TO_REMOVE_BLOCKED_USER));
                    }
                    GroupBlockedUser.Key key = new GroupBlockedUser.Key(groupId, userIdToUnblock);
                    Mono<Boolean> removeMono = groupBlocklistRepository.deleteById(key, session)
                            .map(result -> result.getDeletedCount() > 0);
                    if (updateBlocklistVersion) {
                        return removeMono.flatMap(wasBlocked -> {
                            if (wasBlocked) {
                                return groupVersionService.updateBlocklistVersion(groupId)
                                        .onErrorResume(t -> {
                                            LOGGER.error(
                                                    "Caught an error while updating the blocklist version of the group ({}) after unblocking a user",
                                                    groupId,
                                                    t);
                                            return Mono.empty();
                                        })
                                        .then(PublisherPool.TRUE);
                            }
                            return PublisherPool.FALSE;
                        });
                    }
                    return removeMono;
                });
    }
@return whether the user to unblock was blocked
turms-service/src/main/java/im/turms/service/domain/group/service/GroupBlocklistService.java