Migrate to Swift 4.

pull/1/head
Matthew Chen 6 years ago
parent 916d55c55d
commit 28e26e1f75

@ -10,7 +10,8 @@ import SignalServiceKit
* Signal is actually two services - textSecure for messages and red phone (for calls).
* AccountManager delegates to both.
*/
class AccountManager: NSObject {
@objc
public class AccountManager: NSObject {
let TAG = "[AccountManager]"
let textSecureAccountManager: TSAccountManager
@ -22,7 +23,8 @@ class AccountManager: NSObject {
return PushManager.shared()
}
required init(textSecureAccountManager: TSAccountManager, preferences: OWSPreferences) {
@objc
public required init(textSecureAccountManager: TSAccountManager, preferences: OWSPreferences) {
self.networkManager = textSecureAccountManager.networkManager
self.textSecureAccountManager = textSecureAccountManager
self.preferences = preferences

@ -12,10 +12,12 @@ public protocol ReturnToCallViewControllerDelegate: class {
@objc
public class ReturnToCallViewController: UIViewController {
@objc
public weak var delegate: ReturnToCallViewControllerDelegate?
let returnToCallLabel = UILabel()
@objc
public func startAnimating() {
NotificationCenter.default.addObserver(self, selector: #selector(didTapStatusBar(notification:)), name: .TappedStatusBar, object: nil)
self.returnToCallLabel.layer.removeAllAnimations()
@ -27,6 +29,7 @@ public class ReturnToCallViewController: UIViewController {
completion: { _ in self.returnToCallLabel.alpha = 1 })
}
@objc
public func stopAnimating() {
NotificationCenter.default.removeObserver(self, name: .TappedStatusBar, object: nil)
self.returnToCallLabel.layer.removeAllAnimations()

@ -7,16 +7,20 @@ import Foundation
@objc
public class ContactShareViewModel: NSObject {
@objc
public let dbRecord: OWSContact
@objc
public var avatarImageData: Data? {
didSet {
self.cachedAvatarImage = nil
}
}
var cachedAvatarImage: UIImage?
var avatarImage: UIImage? {
private var cachedAvatarImage: UIImage?
@objc
public var avatarImage: UIImage? {
if self.cachedAvatarImage != nil {
return self.cachedAvatarImage
}
@ -29,6 +33,7 @@ public class ContactShareViewModel: NSObject {
return cachedAvatarImage
}
@objc
public required init(contactShareRecord: OWSContact, avatarImageData: Data?) {
self.dbRecord = contactShareRecord
self.avatarImageData = avatarImageData
@ -71,6 +76,7 @@ public class ContactShareViewModel: NSObject {
// MARK: Delegated -> dbRecord
@objc
public var name: OWSContactName {
get {
return dbRecord.name
@ -80,6 +86,7 @@ public class ContactShareViewModel: NSObject {
}
}
@objc
public var addresses: [OWSContactAddress] {
get {
return dbRecord.addresses
@ -89,6 +96,7 @@ public class ContactShareViewModel: NSObject {
}
}
@objc
public var emails: [OWSContactEmail] {
get {
return dbRecord.emails
@ -98,6 +106,7 @@ public class ContactShareViewModel: NSObject {
}
}
@objc
public var phoneNumbers: [OWSContactPhoneNumber] {
get {
return dbRecord.phoneNumbers
@ -107,30 +116,37 @@ public class ContactShareViewModel: NSObject {
}
}
@objc
public func systemContactsWithSignalAccountPhoneNumbers(_ contactsManager: ContactsManagerProtocol) -> [String] {
return dbRecord.systemContactsWithSignalAccountPhoneNumbers(contactsManager)
}
@objc
public func systemContactPhoneNumbers(_ contactsManager: ContactsManagerProtocol) -> [String] {
return dbRecord.systemContactPhoneNumbers(contactsManager)
}
@objc
public func e164PhoneNumbers() -> [String] {
return dbRecord.e164PhoneNumbers()
}
@objc
public var displayName: String {
return dbRecord.name.displayName
}
@objc
public var ows_isValid: Bool {
return dbRecord.ows_isValid()
}
@objc
public var isProfileAvatar: Bool {
return dbRecord.isProfileAvatar
}
@objc
public func cnContact(mergedWithExistingContact existingContact: Contact) -> CNContact? {
guard let newCNContact = OWSContacts.systemContact(for: self.dbRecord, imageData: self.avatarImageData) else {
@ -141,6 +157,7 @@ public class ContactShareViewModel: NSObject {
return existingContact.buildCNContact(mergedWithNewContact: newCNContact)
}
@objc
public func copy(withName name: OWSContactName) -> ContactShareViewModel {
// TODO move the `copy` logic into the view model?
@ -149,6 +166,7 @@ public class ContactShareViewModel: NSObject {
return ContactShareViewModel(contactShareRecord: newDbRecord, avatarImageData: self.avatarImageData)
}
@objc
public func newContact(withName name: OWSContactName) -> ContactShareViewModel {
// TODO move the `newContact` logic into the view model?

@ -6,30 +6,35 @@ import Foundation
import UIKit
@objc
protocol NavBarLayoutDelegate: class {
public protocol NavBarLayoutDelegate: class {
func navBarCallLayoutDidChange(navbar: OWSNavigationBar)
}
@objc
class OWSNavigationBar: UINavigationBar {
public class OWSNavigationBar: UINavigationBar {
weak var navBarLayoutDelegate: NavBarLayoutDelegate?
@objc
public weak var navBarLayoutDelegate: NavBarLayoutDelegate?
let navbarWithoutStatusHeight: CGFloat = 44
@objc
public let navbarWithoutStatusHeight: CGFloat = 44
var callBannerHeight: CGFloat {
@objc
public var callBannerHeight: CGFloat {
return OWSWindowManagerCallScreenHeight()
}
var statusBarHeight: CGFloat {
@objc
public var statusBarHeight: CGFloat {
return CurrentAppContext().statusBarHeight
}
var fullWidth: CGFloat {
@objc
public var fullWidth: CGFloat {
return UIScreen.main.bounds.size.width
}
required init?(coder aDecoder: NSCoder) {
public required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
@ -54,7 +59,7 @@ class OWSNavigationBar: UINavigationBar {
self.navBarLayoutDelegate?.navBarCallLayoutDidChange(navbar: self)
}
override func sizeThatFits(_ size: CGSize) -> CGSize {
public override func sizeThatFits(_ size: CGSize) -> CGSize {
guard OWSWindowManager.shared().hasCall() else {
return super.sizeThatFits(size)
}
@ -69,7 +74,7 @@ class OWSNavigationBar: UINavigationBar {
}
}
override func layoutSubviews() {
public override func layoutSubviews() {
guard OWSWindowManager.shared().hasCall() else {
super.layoutSubviews()
return

@ -4,12 +4,14 @@
import Foundation
@objc
public extension UIDevice {
var supportsCallKit: Bool {
return ProcessInfo().isOperatingSystemAtLeast(OperatingSystemVersion(majorVersion: 10, minorVersion: 0, patchVersion: 0))
}
var isIPhoneX: Bool {
@objc
public var isIPhoneX: Bool {
switch UIScreen.main.nativeBounds.height {
case 1136:
// iPhone 5 or 5S or 5C

@ -15,6 +15,7 @@ public class ModalActivityIndicatorViewController: OWSViewController {
let canCancel: Bool
@objc
public var wasCancelled: Bool = false
var activityIndicator: UIActivityIndicatorView?
@ -35,6 +36,7 @@ public class ModalActivityIndicatorViewController: OWSViewController {
super.init(nibName: nil, bundle: nil)
}
@objc
public class func present(fromViewController: UIViewController,
canCancel: Bool, backgroundBlock : @escaping (ModalActivityIndicatorViewController) -> Void) {
SwiftAssertIsOnMainThread(#function)
@ -50,6 +52,7 @@ public class ModalActivityIndicatorViewController: OWSViewController {
}
}
@objc
public func dismiss(completion : @escaping () -> Void) {
SwiftAssertIsOnMainThread(#function)

@ -13,8 +13,8 @@ public class AudioActivity: NSObject {
return "<\(self.logTag) audioDescription: \"\(audioDescription)\">"
}
public
init(audioDescription: String) {
@objc
public init(audioDescription: String) {
self.audioDescription = audioDescription
}
@ -27,7 +27,7 @@ public class AudioActivity: NSObject {
public class OWSAudioSession: NSObject {
// Force singleton access
public static let shared = OWSAudioSession()
@objc public static let shared = OWSAudioSession()
private override init() {}
private let avAudioSession = AVAudioSession.sharedInstance()
@ -35,6 +35,7 @@ public class OWSAudioSession: NSObject {
// Respects hardware mute switch, plays through external speaker, mixes with backround audio
// appropriate for foreground sound effects.
@objc
public func startAmbientAudioActivity(_ audioActivity: AudioActivity) {
Logger.debug("\(logTag) in \(#function)")
@ -56,6 +57,7 @@ public class OWSAudioSession: NSObject {
}
// Ignores hardware mute switch, plays through external speaker
@objc
public func startPlaybackAudioActivity(_ audioActivity: AudioActivity) {
Logger.debug("\(logTag) in \(#function)")
@ -71,6 +73,7 @@ public class OWSAudioSession: NSObject {
}
}
@objc
public func startRecordingAudioActivity(_ audioActivity: AudioActivity) -> Bool {
Logger.debug("\(logTag) in \(#function)")
@ -90,6 +93,7 @@ public class OWSAudioSession: NSObject {
}
}
@objc
public func startAudioActivity(_ audioActivity: AudioActivity) {
Logger.debug("\(logTag) in \(#function) with \(audioActivity)")
@ -99,6 +103,7 @@ public class OWSAudioSession: NSObject {
self.currentActivities.append(Weak(value: audioActivity))
}
@objc
public func endAudioActivity(_ audioActivity: AudioActivity) {
Logger.debug("\(logTag) in \(#function) with audioActivity: \(audioActivity)")
@ -171,6 +176,7 @@ public class OWSAudioSession: NSObject {
* This must be called before any audio tracks are added to the peerConnection, else we'll start recording before all
* our signaling is set up.
*/
@objc
public func configureRTCAudio() {
Logger.info("\(logTag) in \(#function)")
rtcAudioSession.useManualAudio = true
@ -180,6 +186,7 @@ public class OWSAudioSession: NSObject {
* Because we useManualAudio with our RTCAudioSession, we have to start/stop the recording audio session ourselves.
* See header for details on manual audio.
*/
@objc
public var isRTCAudioEnabled: Bool {
get {
return rtcAudioSession.isAudioEnabled

@ -20,6 +20,7 @@ public class DeviceSleepManager: NSObject {
let TAG = "[DeviceSleepManager]"
@objc
public static let sharedInstance = DeviceSleepManager()
private class SleepBlock: CustomDebugStringConvertible {
@ -57,6 +58,7 @@ public class DeviceSleepManager: NSObject {
ensureSleepBlocking()
}
@objc
public func addBlock(blockObject: NSObject) {
SwiftAssertIsOnMainThread(#function)
@ -65,6 +67,7 @@ public class DeviceSleepManager: NSObject {
ensureSleepBlocking()
}
@objc
public func removeBlock(blockObject: NSObject) {
SwiftAssertIsOnMainThread(#function)

@ -7,14 +7,17 @@ public class AnyLRUCache: NSObject {
let backingCache: LRUCache<NSObject, NSObject>
@objc
public init(maxSize: Int) {
backingCache = LRUCache(maxSize: maxSize)
}
@objc
public func get(key: NSObject) -> NSObject? {
return self.backingCache.get(key: key)
}
@objc
public func set(key: NSObject, value: NSObject) {
self.backingCache.set(key: key, value: value)
}

Loading…
Cancel
Save