84 lines
3.1 KiB
Swift
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
|