Signal-iOS/Signal/src/ViewControllers/DebugUI/DebugUIProfile.swift
2024-04-25 12:21:25 -05:00

65 lines
2.6 KiB
Swift

//
// Copyright 2017 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import SignalServiceKit
import SignalUI
#if USE_DEBUG_UI
class DebugUIProfile: DebugUIPage, Dependencies {
let name = "Profile"
func section(thread aThread: TSThread?) -> OWSTableSection? {
let sectionItems = [
OWSTableItem(title: "Clear Profile Whitelist") {
Self.profileManagerImpl.clearProfileWhitelist()
},
OWSTableItem(title: "Log Profile Whitelist") {
Self.profileManagerImpl.logProfileWhitelist()
},
OWSTableItem(title: "Log Profile Key") {
let localProfileKey = Self.profileManagerImpl.localProfileKey()
Logger.info("localProfileKey: \(localProfileKey.keyData.hexadecimalString)")
},
OWSTableItem(title: "Regenerate Profile/ProfileKey") {
Self.profileManagerImpl.debug_regenerateLocalProfileWithSneakyTransaction()
},
OWSTableItem(title: "Send Profile Key Message") { [weak self] in
guard let self else { return }
guard let aThread = aThread else {
owsFailDebug("Missing thread.")
return
}
let message = Self.databaseStorage.read { OWSProfileKeyMessage(thread: aThread, transaction: $0) }
Task {
do {
let preparedMessage = PreparedOutgoingMessage.preprepared(transientMessageWithoutAttachments: message)
try await self.messageSender.sendMessage(preparedMessage)
Logger.info("Successfully sent profile key message to thread: \(String(describing: aThread))")
} catch {
owsFailDebug("Failed to send profile key message to thread: \(String(describing: aThread))")
}
}
},
OWSTableItem(title: "Re-upload Profile") {
Self.profileManagerImpl.reuploadLocalProfile(authedAccount: .implicit())
},
OWSTableItem(title: "Fetch Local Profile") {
Task {
let profileFetcher = SSKEnvironment.shared.profileFetcherRef
let localAci = DependenciesBridge.shared.tsAccountManager.localIdentifiersWithMaybeSneakyTransaction!.aci
_ = try? await profileFetcher.fetchProfile(for: localAci)
}
}
].compactMap { $0 }
return OWSTableSection(title: "Profile", items: sectionItems)
}
}
#endif