mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-28 23:32:41 +00:00
Pause the voicebroadcast recording if the homeserver is not reachable
This commit is contained in:
parent
fdf1839b12
commit
6f019b8918
2 changed files with 47 additions and 8 deletions
|
@ -100,14 +100,8 @@ final class AppCoordinator: NSObject, AppCoordinatorType {
|
|||
|
||||
if AppDelegate.theDelegate().isOffline {
|
||||
self.splitViewCoordinator?.showAppStateIndicator(with: VectorL10n.networkOfflineTitle, icon: UIImage(systemName: "wifi.slash"))
|
||||
|
||||
// Pause voice broadcast recording without sending pending events.
|
||||
VoiceBroadcastRecorderProvider.shared.pauseRecordingOnError()
|
||||
} else {
|
||||
self.splitViewCoordinator?.hideAppStateIndicator()
|
||||
|
||||
// Send pause voice broadcast event.
|
||||
VoiceBroadcastRecorderProvider.shared.pauseRecording()
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -32,6 +32,9 @@ import Foundation
|
|||
coordinatorsForEventIdentifiers.removeAll()
|
||||
}
|
||||
}
|
||||
didSet {
|
||||
sessionState = session?.state
|
||||
}
|
||||
}
|
||||
private var coordinatorsForEventIdentifiers = [String: VoiceBroadcastRecorderCoordinator]() {
|
||||
didSet {
|
||||
|
@ -49,9 +52,19 @@ import Foundation
|
|||
|
||||
// MARK: Private
|
||||
private var currentEventIdentifier: String?
|
||||
private var sessionState: MXSessionState?
|
||||
|
||||
private var sessionStateDidChangeObserver: Any?
|
||||
|
||||
// MARK: - Setup
|
||||
private override init() { }
|
||||
private override init() {
|
||||
super.init()
|
||||
self.registerNotificationObservers()
|
||||
}
|
||||
|
||||
deinit {
|
||||
unregisterNotificationObservers()
|
||||
}
|
||||
|
||||
// MARK: - Public
|
||||
|
||||
|
@ -121,4 +134,36 @@ import Foundation
|
|||
coordinator = nil
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Notification handling
|
||||
|
||||
private func registerNotificationObservers() {
|
||||
self.sessionStateDidChangeObserver = NotificationCenter.default.addObserver(forName: NSNotification.Name.mxSessionStateDidChange, object: session, queue: nil) { [weak self] notification in
|
||||
guard let self else { return }
|
||||
guard let concernedSession = notification.object as? MXSession, self.session === concernedSession else { return }
|
||||
|
||||
self.update(sessionState: concernedSession.state)
|
||||
}
|
||||
}
|
||||
|
||||
private func unregisterNotificationObservers() {
|
||||
if let observer = self.sessionStateDidChangeObserver {
|
||||
NotificationCenter.default.removeObserver(observer)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Session state
|
||||
private func update(sessionState: MXSessionState) {
|
||||
let oldState = self.sessionState
|
||||
self.sessionState = sessionState
|
||||
|
||||
switch (oldState, sessionState) {
|
||||
case (_, .homeserverNotReachable):
|
||||
pauseRecordingOnError()
|
||||
case (_, .running):
|
||||
pauseRecording()
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue