Remove stateProvider
This commit is contained in:
parent
7b6852251e
commit
48de9ea5d2
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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())
|
||||
|
|
|
@ -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 = "<group>"; };
|
||||
1E4AFC1A2B5AFC6A00E2AA7D /* Publisher+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Publisher+Extensions.swift"; sourceTree = "<group>"; };
|
||||
1E4AFC202B5B1AA000E2AA7D /* AppView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppView.swift; sourceTree = "<group>"; };
|
||||
1E4AFC242B5B1DA300E2AA7D /* StateProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StateProvider.swift; sourceTree = "<group>"; };
|
||||
1E4AFC262B5B23C600E2AA7D /* RetryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RetryView.swift; sourceTree = "<group>"; };
|
||||
1E51D961251263CD00DC95DE /* MessageType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageType.swift; sourceTree = "<group>"; };
|
||||
1E51D964251263D600DC95DE /* NotificationType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationType.swift; sourceTree = "<group>"; };
|
||||
|
@ -692,14 +690,6 @@
|
|||
path = Requests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1E4AFC232B5B1D9C00E2AA7D /* Providers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
1E4AFC242B5B1DA300E2AA7D /* StateProvider.swift */,
|
||||
);
|
||||
path = Providers;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
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 */,
|
||||
|
|
Loading…
Reference in New Issue