Merge pull request #335 from oxen-io/closed-groups

Raise Closed Group Size to 100 Members
This commit is contained in:
Niels Andriesse 2021-01-19 14:14:05 +11:00 committed by GitHub
commit a8cbe04129
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 52 additions and 35 deletions

View File

@ -163,11 +163,12 @@ final class NewClosedGroupVC : BaseVC, UITableViewDataSource, UITableViewDelegat
guard selectedContacts.count >= 1 else {
return showError(title: "Please pick at least 1 group member")
}
guard selectedContacts.count < 20 else { // Minus one because we're going to include self later
guard selectedContacts.count < 100 else { // Minus one because we're going to include self later
return showError(title: NSLocalizedString("vc_create_closed_group_too_many_group_members_error", comment: ""))
}
let selectedContacts = self.selectedContacts
ModalActivityIndicatorViewController.present(fromViewController: navigationController!, canCancel: false) { [weak self] _ in
let message: String? = (selectedContacts.count > 20) ? "Please wait while the group is created..." : nil
ModalActivityIndicatorViewController.present(fromViewController: navigationController!, message: message) { [weak self] _ in
var promise: Promise<TSGroupThread>!
Storage.writeSync { transaction in
promise = MessageSender.createV2ClosedGroup(name: name, members: selectedContacts, transaction: transaction)

View File

@ -2537,6 +2537,7 @@ typedef enum : NSUInteger {
[ModalActivityIndicatorViewController
presentFromViewController:self
canCancel:YES
message:nil
backgroundBlock:^(ModalActivityIndicatorViewController *modalActivityIndicator) {
DataSource *dataSource =
[DataSourcePath dataSourceWithURL:movieURL shouldDeleteOnDeallocation:NO];

View File

@ -2638,7 +2638,7 @@
"vc_create_closed_group_empty_state_button_title" = "Session starten";
"vc_create_closed_group_group_name_missing_error" = "Bitte geben Sie einen Gruppennamen ein.";
"vc_create_closed_group_group_name_too_long_error" = "Bitte geben Sie einen kürzeren Gruppennamen ein.";
"vc_create_closed_group_too_many_group_members_error" = "Eine geschlossene Gruppe kann maximal 20 Mitglieder haben.";
"vc_create_closed_group_too_many_group_members_error" = "Eine geschlossene Gruppe kann maximal 100 Mitglieder haben.";
"vc_create_closed_group_invalid_session_id_error" = "Ein Mitglied Ihrer Gruppe hat eine ungültige Session ID.";
"vc_join_public_chat_title" = "Offener Gruppe beitreten";

View File

@ -2647,7 +2647,7 @@
"vc_create_closed_group_empty_state_button_title" = "Start a Session";
"vc_create_closed_group_group_name_missing_error" = "Please enter a group name";
"vc_create_closed_group_group_name_too_long_error" = "Please enter a shorter group name";
"vc_create_closed_group_too_many_group_members_error" = "A closed group cannot have more than 20 members";
"vc_create_closed_group_too_many_group_members_error" = "A closed group cannot have more than 100 members";
"vc_create_closed_group_invalid_session_id_error" = "One of the members of your group has an invalid Session ID";
"vc_join_public_chat_title" = "Join Open Group";

View File

@ -2638,7 +2638,7 @@
"vc_create_closed_group_empty_state_button_title" = "Empezar una Session";
"vc_create_closed_group_group_name_missing_error" = "Por favor, ingresa un nombre de grupo";
"vc_create_closed_group_group_name_too_long_error" = "Por favor, ingresa un nombre de grupo más corto";
"vc_create_closed_group_too_many_group_members_error" = "Un grupo cerrado no puede tener más de 20 miembros";
"vc_create_closed_group_too_many_group_members_error" = "Un grupo cerrado no puede tener más de 100 miembros";
"vc_create_closed_group_invalid_session_id_error" = "Uno de los miembros de tu grupo tiene un ID de Session no válido";
"vc_join_public_chat_title" = "Únete al grupo abierto";

View File

@ -2638,7 +2638,7 @@
"vc_create_closed_group_empty_state_button_title" = "شروع Session";
"vc_create_closed_group_group_name_missing_error" = "لطفا یک نام گروه وارد کنید";
"vc_create_closed_group_group_name_too_long_error" = "لطفا نام گروه کوتاه‌تری وارد کنید";
"vc_create_closed_group_too_many_group_members_error" = "یک گروه خصوصی نمی‌تواند بیش از بیست عضو داشته باشد";
"vc_create_closed_group_too_many_group_members_error" = "یک گروه خصوصی نمی‌تواند بیش از یکصد عضو داشته باشد";
"vc_create_closed_group_invalid_session_id_error" = "یکی از اعضای گروه شما دارای شناسه نامعتبر است";
"vc_join_public_chat_title" = "به گروه باز بپیوندید";

View File

@ -2648,7 +2648,7 @@
"vc_create_closed_group_empty_state_button_title" = "Démarrer une session";
"vc_create_closed_group_group_name_missing_error" = "Veuillez saisir un nom de groupe";
"vc_create_closed_group_group_name_too_long_error" = "Veuillez saisir un nom de groupe plus court";
"vc_create_closed_group_too_many_group_members_error" = "Un groupe privé ne peut pas avoir plus de 20 membres";
"vc_create_closed_group_too_many_group_members_error" = "Un groupe privé ne peut pas avoir plus de 100 membres";
"vc_create_closed_group_invalid_session_id_error" = "Un des membres de votre groupe a un Session ID non valide";
"vc_join_public_chat_title" = "Joindre un groupe public";

View File

@ -2639,7 +2639,7 @@
"vc_create_closed_group_group_name_missing_error" = "Masukkan nama grup";
"vc_create_closed_group_group_name_too_long_error" = "Masukkan nama grup yang lebih pendek";
"vc_create_closed_group_not_enough_group_members_error" = "Pilih setidaknya 2 anggota grup";
"vc_create_closed_group_too_many_group_members_error" = "Grup tertutup maksimal berisi 20 anggota";
"vc_create_closed_group_too_many_group_members_error" = "Grup tertutup maksimal berisi 100 anggota";
"vc_create_closed_group_invalid_session_id_error" = "Salah satu anggota di grup memiliki Session ID yang salah";
"vc_join_public_chat_title" = "Gabung ke grup terbuka";

View File

@ -2638,7 +2638,7 @@
"vc_create_closed_group_empty_state_button_title" = "Inizia una sessione";
"vc_create_closed_group_group_name_missing_error" = "Inserisci un nome per il gruppo";
"vc_create_closed_group_group_name_too_long_error" = "Inserisci un nome gruppo più breve";
"vc_create_closed_group_too_many_group_members_error" = "Un gruppo chiuso non può avere più di 20 membri";
"vc_create_closed_group_too_many_group_members_error" = "Un gruppo chiuso non può avere più di 100 membri";
"vc_create_closed_group_invalid_session_id_error" = "Uno dei membri del tuo gruppo ha una Sessione ID non valido";
"vc_join_public_chat_title" = "Unisciti a un gruppo aperto";

View File

@ -2639,7 +2639,7 @@
"vc_create_closed_group_group_name_missing_error" = "グループ名を入力してください";
"vc_create_closed_group_group_name_too_long_error" = "短いグループ名を入力してください";
"vc_create_closed_group_not_enough_group_members_error" = "グループメンバーを少なくとも 2 人選択してください";
"vc_create_closed_group_too_many_group_members_error" = "閉じたグループは 20 人を超えるメンバーを抱えることはできません";
"vc_create_closed_group_too_many_group_members_error" = "閉じたグループは 100 人を超えるメンバーを抱えることはできません";
"vc_create_closed_group_invalid_session_id_error" = "グループのメンバーの 1 人の Session ID が無効です";
"vc_join_public_chat_title" = "オープングループに参加する";

View File

@ -2638,7 +2638,7 @@
"vc_create_closed_group_empty_state_button_title" = "Rozpocznij sesję";
"vc_create_closed_group_group_name_missing_error" = "Wpisz nazwę grupy";
"vc_create_closed_group_group_name_too_long_error" = "Wprowadź krótszą nazwę grupy";
"vc_create_closed_group_too_many_group_members_error" = "Grupa zamknięta nie może mieć więcej niż 20 członków";
"vc_create_closed_group_too_many_group_members_error" = "Grupa zamknięta nie może mieć więcej niż 100 członków";
"vc_create_closed_group_invalid_session_id_error" = "Jeden z członków Twojej grupy ma nieprawidłowy identyfikator Session";
"vc_join_public_chat_title" = "Dołącz do Open Group";

View File

@ -2638,7 +2638,7 @@
"vc_create_closed_group_empty_state_button_title" = "Iniciar uma sessão";
"vc_create_closed_group_group_name_missing_error" = "Digite um nome de grupo";
"vc_create_closed_group_group_name_too_long_error" = "Digite um nome de grupo mais curto";
"vc_create_closed_group_too_many_group_members_error" = "Um grupo fechado não pode ter mais de 20 membros";
"vc_create_closed_group_too_many_group_members_error" = "Um grupo fechado não pode ter mais de 100 membros";
"vc_create_closed_group_invalid_session_id_error" = "Um dos membros do seu grupo tem um ID Session inválido";
"vc_join_public_chat_title" = "Participar em grupo aberto";

View File

@ -2638,7 +2638,7 @@
"vc_create_closed_group_empty_state_button_title" = "Начать Сессию";
"vc_create_closed_group_group_name_missing_error" = "Пожалуйста, введите название группы";
"vc_create_closed_group_group_name_too_long_error" = "Пожалуйста, введите более короткое имя группы";
"vc_create_closed_group_too_many_group_members_error" = "В закрытой группе не может быть больше 20 участников";
"vc_create_closed_group_too_many_group_members_error" = "В закрытой группе не может быть больше 100 участников";
"vc_create_closed_group_invalid_session_id_error" = "Один из участников вашей группы имеет недопустимый Session ID";
"vc_join_public_chat_title" = "Присоединиться к открытой группе";

View File

@ -2648,7 +2648,7 @@
"vc_create_closed_group_group_name_missing_error" = "Vui lòng nhập tên nhóm";
"vc_create_closed_group_group_name_too_long_error" = "Vui lòng nhập một tên nhóm ngắn hơn ";
"vc_create_closed_group_not_enough_group_members_error" = "Vui lòng chọn ít nhất 2 thành viên trong nhóm ";
"vc_create_closed_group_too_many_group_members_error" = "Một nhóm kín không thể có nhiều hơn 20 thành viên ";
"vc_create_closed_group_too_many_group_members_error" = "Một nhóm kín không thể có nhiều hơn 100 thành viên ";
"vc_create_closed_group_invalid_session_id_error" = "Một trong các thành viên trong nhóm của bạn có Session ID không hợp lệ ";
"vc_join_public_chat_title" = "Tham gia nhóm mở";

View File

@ -2638,7 +2638,7 @@
"vc_create_closed_group_empty_state_button_title" = "开始对话";
"vc_create_closed_group_group_name_missing_error" = "请输入群组名称";
"vc_create_closed_group_group_name_too_long_error" = "请输入较短的群组名称";
"vc_create_closed_group_too_many_group_members_error" = "私密群组成员不得超过20个";
"vc_create_closed_group_too_many_group_members_error" = "私密群组成员不得超过100个";
"vc_create_closed_group_invalid_session_id_error" = "您群组中的一位成员的Session ID无效";
"vc_join_public_chat_title" = "加入公开群组";

View File

@ -2,8 +2,6 @@ import UserNotifications
import SessionMessagingKit
import SignalUtilitiesKit
// TODO: Group notifications
public final class NotificationServiceExtension : UNNotificationServiceExtension {
private var didPerformSetup = false
private var areVersionMigrationsComplete = false

View File

@ -4,14 +4,15 @@
import Foundation
import MediaPlayer
import SessionUIKit
// A modal view that be used during blocking interactions (e.g. waiting on response from
// service or on the completion of a long-running local operation).
@objc
public class ModalActivityIndicatorViewController: OWSViewController {
let canCancel: Bool
let message: String?
@objc
public var wasCancelled: Bool = false
@ -29,25 +30,26 @@ public class ModalActivityIndicatorViewController: OWSViewController {
notImplemented()
}
public required init(canCancel: Bool) {
public required init(canCancel: Bool = false, message: String? = nil) {
self.canCancel = canCancel
self.message = message
super.init(nibName: nil, bundle: nil)
}
@objc
public class func present(fromViewController: UIViewController,
canCancel: Bool, backgroundBlock : @escaping (ModalActivityIndicatorViewController) -> Void) {
public class func present(fromViewController: UIViewController, canCancel: Bool = false, message: String? = nil,
backgroundBlock : @escaping (ModalActivityIndicatorViewController) -> Void) {
AssertIsOnMainThread()
let view = ModalActivityIndicatorViewController(canCancel: canCancel)
let view = ModalActivityIndicatorViewController(canCancel: canCancel, message: message)
// Present this modal _over_ the current view contents.
view.modalPresentationStyle = .overFullScreen
view.modalTransitionStyle = .crossDissolve
fromViewController.present(view,
animated: false) {
DispatchQueue.global().async {
backgroundBlock(view)
}
fromViewController.present(view, animated: false) {
DispatchQueue.global().async {
backgroundBlock(view)
}
}
}
@ -70,15 +72,31 @@ public class ModalActivityIndicatorViewController: OWSViewController {
public override func loadView() {
super.loadView()
self.view.backgroundColor = (Theme.isDarkThemeEnabled
? UIColor(white: 0, alpha: 0.5)
: UIColor(white: 0, alpha: 0.5))
self.view.backgroundColor = UIColor(white: 0, alpha: 0.5)
self.view.isOpaque = false
let activityIndicator = UIActivityIndicatorView(style: .whiteLarge)
self.activityIndicator = activityIndicator
self.view.addSubview(activityIndicator)
activityIndicator.autoCenterInSuperview()
if let message = message {
let messageLabel = UILabel()
messageLabel.text = message
messageLabel.font = .systemFont(ofSize: Values.mediumFontSize)
messageLabel.textColor = UIColor.white
messageLabel.numberOfLines = 0
messageLabel.textAlignment = .center
messageLabel.lineBreakMode = .byWordWrapping
messageLabel.set(.width, to: UIScreen.main.bounds.width - 2 * Values.mediumSpacing)
let stackView = UIStackView(arrangedSubviews: [ messageLabel, activityIndicator ])
stackView.axis = .vertical
stackView.spacing = Values.largeSpacing
stackView.alignment = .center
self.view.addSubview(stackView)
stackView.center(in: self.view)
} else {
self.view.addSubview(activityIndicator)
activityIndicator.autoCenterInSuperview()
}
if canCancel {
let cancelButton = UIButton(type: .custom)
@ -152,7 +170,6 @@ public class ModalActivityIndicatorViewController: OWSViewController {
wasCancelled = true
dismiss {
}
dismiss { }
}
}