diff --git a/ios/RocketChat Watch App/AppView.swift b/ios/RocketChat Watch App/AppView.swift index 9dccccea6..c17827eac 100644 --- a/ios/RocketChat Watch App/AppView.swift +++ b/ios/RocketChat Watch App/AppView.swift @@ -1,8 +1,9 @@ import SwiftUI struct AppView: View { + @Storage(.currentServer) private var currentURL: URL? + @Dependency private var database: ServersDatabase - @Dependency private var stateProvider: StateProviding @StateObject private var router: AppRouter @@ -22,24 +23,17 @@ struct AppView: View { .environment(\.managedObjectContext, database.viewContext) } } - .onChange(of: router.route) { newValue in - switch newValue { - case .roomList(let server): - stateProvider.update(to: .loggedIn(server)) - case .serverList, .loading: - stateProvider.update(to: .loggedOut) - } - } .onAppear { loadRoute() } } private func loadRoute() { - switch stateProvider.state { - case .loggedIn(let server): + if let currentURL, let server = database.server(url: currentURL) { router.route(to: .roomList(server)) - case .loggedOut: + } else if database.servers().count == 1, let server = database.servers().first { + router.route(to: .roomList(server)) + } else { router.route(to: .serverList) } } diff --git a/ios/RocketChat Watch App/Providers/StateProvider.swift b/ios/RocketChat Watch App/Providers/StateProvider.swift deleted file mode 100644 index 6f4cda320..000000000 --- a/ios/RocketChat Watch App/Providers/StateProvider.swift +++ /dev/null @@ -1,37 +0,0 @@ -import Foundation - -enum AppState { - case loggedIn(Server) - case loggedOut -} - -protocol StateProviding { - var state: AppState { get } - - func update(to state: AppState) -} - -final class StateProvider: StateProviding { - @Storage(.currentServer) private var currentURL: URL? - - @Dependency private var database: ServersDatabase - - var state: AppState { - if let currentURL, let server = database.server(url: currentURL) { - return .loggedIn(server) - } else if database.servers().count == 1, let server = database.servers().first { - return .loggedIn(server) - } else { - return .loggedOut - } - } - - func update(to state: AppState) { - switch state { - case .loggedIn(let server): - currentURL = server.url - case .loggedOut: - break - } - } -} diff --git a/ios/RocketChat Watch App/RocketChatApp.swift b/ios/RocketChat Watch App/RocketChatApp.swift index b83a16082..4de9ddd24 100644 --- a/ios/RocketChat Watch App/RocketChatApp.swift +++ b/ios/RocketChat Watch App/RocketChatApp.swift @@ -11,7 +11,6 @@ struct RocketChat_Watch_AppApp: App { private func registerDependencies() { Store.register(AppRouting.self, factory: router) Store.register(ServersDatabase.self, factory: DefaultDatabase()) - Store.register(StateProviding.self, factory: StateProvider()) Store.register(ServersLoading.self, factory: ServersLoader(session: .default)) Store.register(MessagesLoading.self, factory: MessagesLoader()) Store.register(RoomsLoading.self, factory: RoomsLoader()) diff --git a/ios/RocketChatRN.xcodeproj/project.pbxproj b/ios/RocketChatRN.xcodeproj/project.pbxproj index 088cd8fa5..f24f0ec76 100644 --- a/ios/RocketChatRN.xcodeproj/project.pbxproj +++ b/ios/RocketChatRN.xcodeproj/project.pbxproj @@ -81,7 +81,6 @@ 1E4AFC172B5AF09C00E2AA7D /* Store.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E4AFC162B5AF09C00E2AA7D /* Store.swift */; }; 1E4AFC1B2B5AFC6A00E2AA7D /* Publisher+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E4AFC1A2B5AFC6A00E2AA7D /* Publisher+Extensions.swift */; }; 1E4AFC212B5B1AA000E2AA7D /* AppView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E4AFC202B5B1AA000E2AA7D /* AppView.swift */; }; - 1E4AFC252B5B1DA300E2AA7D /* StateProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E4AFC242B5B1DA300E2AA7D /* StateProvider.swift */; }; 1E4AFC272B5B23C600E2AA7D /* RetryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E4AFC262B5B23C600E2AA7D /* RetryView.swift */; }; 1E51D962251263CD00DC95DE /* MessageType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E51D961251263CD00DC95DE /* MessageType.swift */; }; 1E51D965251263D600DC95DE /* NotificationType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E51D964251263D600DC95DE /* NotificationType.swift */; }; @@ -394,7 +393,6 @@ 1E4AFC162B5AF09C00E2AA7D /* Store.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Store.swift; sourceTree = ""; }; 1E4AFC1A2B5AFC6A00E2AA7D /* Publisher+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Publisher+Extensions.swift"; sourceTree = ""; }; 1E4AFC202B5B1AA000E2AA7D /* AppView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppView.swift; sourceTree = ""; }; - 1E4AFC242B5B1DA300E2AA7D /* StateProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StateProvider.swift; sourceTree = ""; }; 1E4AFC262B5B23C600E2AA7D /* RetryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RetryView.swift; sourceTree = ""; }; 1E51D961251263CD00DC95DE /* MessageType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageType.swift; sourceTree = ""; }; 1E51D964251263D600DC95DE /* NotificationType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationType.swift; sourceTree = ""; }; @@ -692,14 +690,6 @@ path = Requests; sourceTree = ""; }; - 1E4AFC232B5B1D9C00E2AA7D /* Providers */ = { - isa = PBXGroup; - children = ( - 1E4AFC242B5B1DA300E2AA7D /* StateProvider.swift */, - ); - path = Providers; - sourceTree = ""; - }; 1E76CBC425152A7F0067298C /* Shared */ = { isa = PBXGroup; children = ( @@ -818,7 +808,6 @@ 1ED0388F2B507B4C00C007D4 /* RocketChat Watch App */ = { isa = PBXGroup; children = ( - 1E4AFC232B5B1D9C00E2AA7D /* Providers */, 1EDFD0FB2B589FC4002FEE5F /* DependencyInjection */, 1EDFD0F82B589B82002FEE5F /* Loaders */, 1E29A31E2B5871BE0093C03C /* Formatters */, @@ -1916,7 +1905,6 @@ 1E29A2CC2B5857F50093C03C /* RoomListView.swift in Sources */, 1E29A31A2B5868EE0093C03C /* MessageViewModel.swift in Sources */, 1ED033C42B55C65C004F4930 /* AppRouter.swift in Sources */, - 1E4AFC252B5B1DA300E2AA7D /* StateProvider.swift in Sources */, 1ED033B02B55B25A004F4930 /* Database.swift in Sources */, 1E9A71712B59CC1300477BA2 /* Attachment.swift in Sources */, 1E29A30A2B585B370093C03C /* Data+Extensions.swift in Sources */,