mirror of https://github.com/oxen-io/session-ios
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.9 KiB
Swift
59 lines
1.9 KiB
Swift
3 years ago
|
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
|
||
|
|
||
|
import Foundation
|
||
|
import SessionUtilitiesKit
|
||
|
|
||
2 years ago
|
public class SessionEnvironment {
|
||
|
public static var shared: SessionEnvironment?
|
||
3 years ago
|
|
||
|
public let audioSession: OWSAudioSession
|
||
|
public let proximityMonitoringManager: OWSProximityMonitoringManager
|
||
|
public let windowManager: OWSWindowManager
|
||
|
public var isRequestingPermission: Bool
|
||
|
|
||
3 years ago
|
// Note: This property is configured after Environment is created.
|
||
|
public let callManager: Atomic<CallManagerProtocol?> = Atomic(nil)
|
||
|
|
||
3 years ago
|
// Note: This property is configured after Environment is created.
|
||
|
public let notificationsManager: Atomic<NotificationsProtocol?> = Atomic(nil)
|
||
|
|
||
|
public var isComplete: Bool {
|
||
|
(notificationsManager.wrappedValue != nil)
|
||
|
}
|
||
|
|
||
|
// MARK: - Initialization
|
||
|
|
||
|
public init(
|
||
|
audioSession: OWSAudioSession,
|
||
|
proximityMonitoringManager: OWSProximityMonitoringManager,
|
||
|
windowManager: OWSWindowManager
|
||
|
) {
|
||
|
self.audioSession = audioSession
|
||
|
self.proximityMonitoringManager = proximityMonitoringManager
|
||
|
self.windowManager = windowManager
|
||
|
self.isRequestingPermission = false
|
||
|
|
||
2 years ago
|
if SessionEnvironment.shared == nil {
|
||
|
SessionEnvironment.shared = self
|
||
3 years ago
|
}
|
||
|
}
|
||
|
|
||
|
// MARK: - Functions
|
||
|
|
||
|
public static func clearSharedForTests() {
|
||
|
shared = nil
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// MARK: - Objective C Support
|
||
|
|
||
|
@objc(SMKEnvironment)
|
||
3 years ago
|
public class SMKEnvironment: NSObject {
|
||
3 years ago
|
@objc public static let shared: SMKEnvironment = SMKEnvironment()
|
||
|
|
||
2 years ago
|
@objc public var audioSession: OWSAudioSession? { SessionEnvironment.shared?.audioSession }
|
||
|
@objc public var windowManager: OWSWindowManager? { SessionEnvironment.shared?.windowManager }
|
||
3 years ago
|
|
||
2 years ago
|
@objc public var isRequestingPermission: Bool { (SessionEnvironment.shared?.isRequestingPermission == true) }
|
||
3 years ago
|
}
|