From 78233bbeb219abe7f8f53bd8ea78abe704e6c5b4 Mon Sep 17 00:00:00 2001 From: Michael Kirk Date: Sun, 29 Sep 2019 13:03:09 -0700 Subject: [PATCH] set uuid capable Also includes parsing capabilities from profile fetch, though the value isn't yet used --- .../src/Network/API/Requests/OWSRequestFactory.m | 4 ++++ .../src/Network/API/SignalServiceProfile.swift | 11 +++++++++++ SignalServiceKit/src/Util/FeatureFlags.swift | 3 +++ 3 files changed, 18 insertions(+) diff --git a/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.m b/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.m index 5bcbe2e3d9..793ad0d684 100644 --- a/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.m +++ b/SignalServiceKit/src/Network/API/Requests/OWSRequestFactory.m @@ -397,6 +397,10 @@ NS_ASSUME_NONNULL_BEGIN accountAttributes[@"pin"] = pin; } + if (SSKFeatureFlags.uuidCapabilities) { + accountAttributes[@"capabilities"] = @{ @"uuid" : @(YES) }; + } + return [accountAttributes copy]; } diff --git a/SignalServiceKit/src/Network/API/SignalServiceProfile.swift b/SignalServiceKit/src/Network/API/SignalServiceProfile.swift index 0fad7d2b48..98b0fbdab7 100644 --- a/SignalServiceKit/src/Network/API/SignalServiceProfile.swift +++ b/SignalServiceKit/src/Network/API/SignalServiceProfile.swift @@ -20,6 +20,7 @@ public class SignalServiceProfile: NSObject { public let avatarUrlPath: String? public let unidentifiedAccessVerifier: Data? public let hasUnrestrictedUnidentifiedAccess: Bool + public let supportsUUID: Bool public init(address: SignalServiceAddress?, responseObject: Any?) throws { guard let params = ParamParser(responseObject: responseObject) else { @@ -59,5 +60,15 @@ public class SignalServiceProfile: NSObject { self.unidentifiedAccessVerifier = try params.optionalBase64EncodedData(key: "unidentifiedAccess") self.hasUnrestrictedUnidentifiedAccess = try params.optional(key: "unrestrictedUnidentifiedAccess") ?? false + + if FeatureFlags.uuidCapabilities { + guard let capabilities = ParamParser(responseObject: try params.required(key: "capabilities")) else { + owsFailDebug("invalid capabilities") + throw ValidationError.invalid(description: "invalid capabilities: \(String(describing: params))") + } + self.supportsUUID = try capabilities.required(key: "uuid") + } else { + self.supportsUUID = false + } } } diff --git a/SignalServiceKit/src/Util/FeatureFlags.swift b/SignalServiceKit/src/Util/FeatureFlags.swift index c253575b82..233102b1f6 100644 --- a/SignalServiceKit/src/Util/FeatureFlags.swift +++ b/SignalServiceKit/src/Util/FeatureFlags.swift @@ -106,6 +106,9 @@ public class FeatureFlags: NSObject { @objc public static let preserveYdb = true + @objc + public static let uuidCapabilities = !IsUsingProductionService() + @objc public static var audibleErrorLogging = build.includes(.internalPreview)