Adjust multi-ring feature flags for initial release.

This commit is contained in:
Nora Trapp 2020-05-08 15:57:48 -07:00
parent e624814d23
commit fc98aedbd3
3 changed files with 4 additions and 33 deletions

2
Pods

@ -1 +1 @@
Subproject commit 02874cdef18a2c1ffce0fb140708a20876603673
Subproject commit 3fe1ecc868815b2a1598fb9fddc08a064d87a2d4

View File

@ -1312,10 +1312,6 @@ extension SignalCall: CallManagerCallReference { }
}
private func getDeviceIds(call: SignalCall) throws -> [UInt32] {
guard FeatureFlags.sendCallsToAllDevices else {
return [1]
}
return try databaseStorage.read { transaction -> [UInt32] in
guard let recipient = AnySignalRecipientFinder().signalRecipient(for: call.thread.contactAddress, transaction: transaction) else {
throw OWSAssertionError("no recipient for contact")

View File

@ -169,39 +169,14 @@ public class FeatureFlags: NSObject {
return answerCallsOnSecondaryDevice || TSAccountManager.sharedInstance().isRegisteredPrimaryDevice
}
// TODO MULTIRING
//
// Unlike most feature flags, we want to roll out the "send" support for multiring first.
//
// Even though we're enabling "send" support, secondary devices won't actually ring or
// expose the incoming call because:
// - legacy secondary devices are hardcoded to ignore all calls
// - modern clients defer to FeatureFlags.answerCallsOnSecondaryDevice before handling a call
//
// The symptom this rollout avoids is where a secondary device can *place* calls but not receive
// them from a legacy client.
//
// By rolling out send support first, that means most people will be placing a call which *can*
// ring on an iPad.
//
// Then in a subsequent release, once we flip answerCallsOnSecondaryDevice, iPads will be able
// to receive calls not just from the most recent clients, but from all clients who updated
// during the rollout period.
//
// Note: exposing the outgoing call button on iPads is predicated on "answerCallsOnSecondaryDevice", not
// this feature flag.
@objc
public static let sendCallsToAllDevices: Bool = build.includes(.internalPreview)
// TODO MULTIRING
//
// We can't enable this until after `sendCallsToAllDevices` has rolled out on iOS and Android.
// We can't enable this in production until sending calls to all devices has
// rolled out on iOS and Android.
//
// Note: As well as exposing incoming calls on iPads, this also exposes the outgoing call button
// on iPads, because we don't want to allow outgoing calls from an iPad until we're also ready
// to receive them on iPad.
@objc
public static let answerCallsOnSecondaryDevice: Bool = build.includes(.internalPreview)
public static let answerCallsOnSecondaryDevice: Bool = build.includes(.beta)
@objc
public static let groupsV2 = build.includes(.qa) && !isUsingProductionService