From eb6dcd421a997cadd1e895072a702b23be682a4f Mon Sep 17 00:00:00 2001 From: Harry <109690906+harry-signal@users.noreply.github.com> Date: Mon, 29 Jul 2024 14:37:03 -0700 Subject: [PATCH] Enable v2 message attachments via toggle in internal settings --- .../InternalSettingsViewController.swift | 7 ++++++ .../TSResource/AttachmentFeatureFlags.swift | 22 ++++++++++++++++--- SignalServiceKit/Util/FeatureFlags.swift | 3 +++ 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/Signal/src/ViewControllers/AppSettings/Internal/InternalSettingsViewController.swift b/Signal/src/ViewControllers/AppSettings/Internal/InternalSettingsViewController.swift index 0a3b5f771a..eaa80482af 100644 --- a/Signal/src/ViewControllers/AppSettings/Internal/InternalSettingsViewController.swift +++ b/Signal/src/ViewControllers/AppSettings/Internal/InternalSettingsViewController.swift @@ -91,6 +91,13 @@ class InternalSettingsViewController: OWSTableViewController2 { } )) + if FeatureFlags.v2MessageAttachmentsToggle && !AttachmentFeatureFlags.readMessages { + debugSection.add(.actionItem(withText: "DANGER!!! Enable encrypted message attachments (and exit)") { + AttachmentFeatureFlags.enableV2ForMessages() + fatalError("Intentionally crashing to restart app") + }) + } + if FeatureFlags.messageBackupFileAlpha { debugSection.add(.actionItem(withText: "Export Message Backup proto") { self.exportMessageBackupProto() diff --git a/SignalServiceKit/Messages/Attachments/V2/AttachmentManager/TSResource/AttachmentFeatureFlags.swift b/SignalServiceKit/Messages/Attachments/V2/AttachmentManager/TSResource/AttachmentFeatureFlags.swift index f8a1ced998..60b92b59bc 100644 --- a/SignalServiceKit/Messages/Attachments/V2/AttachmentManager/TSResource/AttachmentFeatureFlags.swift +++ b/SignalServiceKit/Messages/Attachments/V2/AttachmentManager/TSResource/AttachmentFeatureFlags.swift @@ -13,8 +13,24 @@ public enum AttachmentFeatureFlags { public static let readStories = true public static let writeStories = true - public static let readMessages = false - public static let writeMessages = false + public static var readMessages: Bool { + FeatureFlags.v2MessageAttachmentsForceEnable + || UserDefaults.standard.bool(forKey: enableForMessagesKey) + } + public static var writeMessages: Bool { + FeatureFlags.v2MessageAttachmentsForceEnable + || UserDefaults.standard.bool(forKey: enableForMessagesKey) + } - public static let incrementalMigration = false + public static var incrementalMigration: Bool { + FeatureFlags.v2MessageAttachmentsForceEnable + || UserDefaults.standard.bool(forKey: enableForMessagesKey) + } + + private static let enableForMessagesKey = "AttachmentFeatureFlags_enableForMessages" + + public static func enableV2ForMessages() { + guard FeatureFlags.v2MessageAttachmentsToggle else { return } + UserDefaults.standard.set(true, forKey: enableForMessagesKey) + } } diff --git a/SignalServiceKit/Util/FeatureFlags.swift b/SignalServiceKit/Util/FeatureFlags.swift index b0d17bd406..20b9e8d675 100644 --- a/SignalServiceKit/Util/FeatureFlags.swift +++ b/SignalServiceKit/Util/FeatureFlags.swift @@ -73,6 +73,9 @@ public class FeatureFlags: NSObject { public static let messageBackupFileAlpha = build.includes(.internal) public static let messageBackupFileAlphaRegistrationFlow = build.includes(.dev) + public static let v2MessageAttachmentsToggle = build.includes(.internal) + public static let v2MessageAttachmentsForceEnable = build.includes(.dev) + public static let callLinkCreate = build.includes(.dev) public static let callRaiseHandReceiveSupport = build.includes(.production)