From eb6f43cf07edd7bbb3f42b6037956b8d8b255f37 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Mon, 10 Aug 2020 15:55:26 -0300 Subject: [PATCH] Rework maxGroupsV2MemberCount remote config flag. --- .../BaseGroupMemberViewController.swift | 2 +- .../NewGroupMembersViewController.swift | 2 +- .../AddGroupMembersViewController.swift | 4 ++-- .../groups/GroupsV2ChangeSetImpl.swift | 2 +- .../src/Util/RemoteConfigManager.swift | 17 ++++++++++++----- SignalServiceKit/src/groups/GroupManager.swift | 4 ++-- 6 files changed, 19 insertions(+), 12 deletions(-) diff --git a/Signal/src/ViewControllers/NewGroupView/BaseGroupMemberViewController.swift b/Signal/src/ViewControllers/NewGroupView/BaseGroupMemberViewController.swift index b5df26afa9..4ef01abf9b 100644 --- a/Signal/src/ViewControllers/NewGroupView/BaseGroupMemberViewController.swift +++ b/Signal/src/ViewControllers/NewGroupView/BaseGroupMemberViewController.swift @@ -162,7 +162,7 @@ public class BaseGroupMemberViewController: OWSViewController { memberCountLabel.text = String(format: format, OWSFormat.formatInt(memberCount), - OWSFormat.formatUInt(GroupManager.maxGroupMemberCount)) + OWSFormat.formatUInt(GroupManager.maxGroupsV2MemberCount)) } public func removeRecipient(_ recipient: PickedRecipient) { diff --git a/Signal/src/ViewControllers/NewGroupView/NewGroupMembersViewController.swift b/Signal/src/ViewControllers/NewGroupView/NewGroupMembersViewController.swift index d264fe58dc..e2c1779245 100644 --- a/Signal/src/ViewControllers/NewGroupView/NewGroupMembersViewController.swift +++ b/Signal/src/ViewControllers/NewGroupView/NewGroupMembersViewController.swift @@ -96,7 +96,7 @@ extension NewGroupMembersViewController: GroupMemberViewDelegate { guard RemoteConfig.groupsV2CreateGroups else { return false } - return groupMemberViewGroupMemberCount(withSelf: true) >= GroupManager.maxGroupMemberCount + return groupMemberViewGroupMemberCount(withSelf: true) >= GroupManager.maxGroupsV2MemberCount } func groupMemberViewIsPreExistingMember(_ recipient: PickedRecipient) -> Bool { diff --git a/Signal/src/ViewControllers/ThreadSettings/AddGroupMembersViewController.swift b/Signal/src/ViewControllers/ThreadSettings/AddGroupMembersViewController.swift index 51efe35674..2f85b0d310 100644 --- a/Signal/src/ViewControllers/ThreadSettings/AddGroupMembersViewController.swift +++ b/Signal/src/ViewControllers/ThreadSettings/AddGroupMembersViewController.swift @@ -256,12 +256,12 @@ extension AddGroupMembersViewController: GroupMemberViewDelegate { guard groupThread.isGroupV2Thread else { return false } - return groupMemberViewGroupMemberCountForDisplay() >= GroupManager.maxGroupMemberCount + return groupMemberViewGroupMemberCountForDisplay() >= GroupManager.maxGroupsV2MemberCount } func groupMemberViewMaxMemberCount() -> UInt? { return (groupThread.isGroupV2Thread - ? GroupManager.maxGroupMemberCount + ? GroupManager.maxGroupsV2MemberCount : nil) } diff --git a/SignalMessaging/groups/GroupsV2ChangeSetImpl.swift b/SignalMessaging/groups/GroupsV2ChangeSetImpl.swift index 84ac0839d6..2542484a7c 100644 --- a/SignalMessaging/groups/GroupsV2ChangeSetImpl.swift +++ b/SignalMessaging/groups/GroupsV2ChangeSetImpl.swift @@ -474,7 +474,7 @@ public class GroupsV2ChangeSetImpl: NSObject, GroupsV2ChangeSet { continue } - guard allMemberCount <= GroupManager.maxGroupMemberCount else { + guard allMemberCount <= GroupManager.maxGroupsV2MemberCount else { throw GroupsV2Error.tooManyMembers } diff --git a/SignalServiceKit/src/Util/RemoteConfigManager.swift b/SignalServiceKit/src/Util/RemoteConfigManager.swift index f9e5d6ef4b..5490e5a2a3 100644 --- a/SignalServiceKit/src/Util/RemoteConfigManager.swift +++ b/SignalServiceKit/src/Util/RemoteConfigManager.swift @@ -82,13 +82,13 @@ public class RemoteConfig: BaseFlags { } @objc - public static var groupsV2maxMemberCount: UInt { + public static var maxGroupsV2MemberCount: UInt { let defaultValue: UInt = 151 guard AppReadiness.isAppReady else { owsFailDebug("Storage is not yet ready.") return defaultValue } - guard let rawValue: AnyObject = value(.groupsV2memberCountMax) else { + guard let rawValue: AnyObject = value(.maxGroupsV2MemberCount) else { return defaultValue } guard let stringValue = rawValue as? String else { @@ -212,7 +212,7 @@ private struct Flags { // Values defined in this array remain set once they are // set regardless of the remote state. enum StickyValuesFlags: String, FlagType { - case groupsV2memberCountMax + case maxGroupsV2MemberCount } // We filter the received config down to just the supported values. @@ -220,7 +220,7 @@ private struct Flags { // set because we cached a value before it went public. e.g. if we set // a sticky value to X in beta then remove it before going to production. enum SupportedValuesFlags: String, FlagType { - case groupsV2memberCountMax + case maxGroupsV2MemberCount } } @@ -235,7 +235,14 @@ private protocol FlagType: CaseIterable { // MARK: - private extension FlagType { - var rawFlag: String { Flags.prefix + rawValue } + var rawFlag: String { + if rawValue == "maxGroupsV2MemberCount" { + return "all.groupsv2.capacity" + } else { + return Flags.prefix + rawValue + } + } + static var allRawFlags: [String] { allCases.map { $0.rawFlag } } } diff --git a/SignalServiceKit/src/groups/GroupManager.swift b/SignalServiceKit/src/groups/GroupManager.swift index 064b033fa8..d14c04f0df 100644 --- a/SignalServiceKit/src/groups/GroupManager.swift +++ b/SignalServiceKit/src/groups/GroupManager.swift @@ -91,8 +91,8 @@ public class GroupManager: NSObject { // GroupsV2 TODO: Finalize this value with the designers. public static let groupUpdateTimeoutDuration: TimeInterval = 30 - public static var maxGroupMemberCount: UInt { - return RemoteConfig.groupsV2maxMemberCount + public static var maxGroupsV2MemberCount: UInt { + return RemoteConfig.maxGroupsV2MemberCount } public static let maxGroupNameLength: Int = 32