Signal-iOS/Signal/src/ViewControllers/DebugUI/DebugUICalling.swift
2023-05-12 21:05:25 -07:00

84 lines
3.1 KiB
Swift

//
// Copyright 2017 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
//
import SignalMessaging
import SignalServiceKit
import SignalUI
#if USE_DEBUG_UI
class DebugUICalling: DebugUIPage, Dependencies {
let name = "Calling"
func section(thread: TSThread?) -> OWSTableSection? {
guard let contactThread = thread as? TSContactThread else {
owsFailDebug("Calling is only valid for contact thread, got thread: \(String(describing: thread))")
return nil
}
let sectionItems = [
OWSTableItem(title: "Send 'hangup' for old call") { [weak self] in
guard let strongSelf = self else { return }
let kFakeCallId = UInt64(12345)
var hangupMessage: SSKProtoCallMessageHangup
do {
let hangupBuilder = SSKProtoCallMessageHangup.builder(id: kFakeCallId)
hangupMessage = try hangupBuilder.build()
} catch {
owsFailDebug("could not build proto")
return
}
let callMessage = Self.databaseStorage.read {
OWSOutgoingCallMessage(
thread: contactThread,
hangupMessage: hangupMessage,
destinationDeviceId: nil,
transaction: $0
)
}
strongSelf.messageSender.sendMessage(.promise, callMessage.asPreparer).done {
Logger.debug("Successfully sent hangup call message to \(contactThread.contactAddress)")
}.catch { error in
Logger.error("failed to send hangup call message to \(contactThread.contactAddress) with error: \(error)")
}
},
OWSTableItem(title: "Send 'busy' for old call") { [weak self] in
guard let strongSelf = self else { return }
let kFakeCallId = UInt64(12345)
var busyMessage: SSKProtoCallMessageBusy
do {
let busyBuilder = SSKProtoCallMessageBusy.builder(id: kFakeCallId)
busyMessage = try busyBuilder.build()
} catch {
owsFailDebug("Couldn't build proto")
return
}
let callMessage = Self.databaseStorage.read {
OWSOutgoingCallMessage(
thread: contactThread,
busyMessage: busyMessage,
destinationDeviceId: nil,
transaction: $0)
}
strongSelf.messageSender.sendMessage(.promise, callMessage.asPreparer).done {
Logger.debug("Successfully sent busy call message to \(contactThread.contactAddress)")
}.catch { error in
Logger.error("failed to send busy call message to \(contactThread.contactAddress) with error: \(error)")
}
}
]
return OWSTableSection(title: "Call Debug", items: sectionItems)
}
}
#endif