| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import SwiftUI
- import Swinject
- enum Screen: Identifiable {
- case home
- case settings
- case onboarding
- case authorizedRoot
- case login
- case requestPermissions
- var id: Int { String(reflecting: self).hashValue }
- }
- extension Screen {
- func view(resolver: Resolver) -> AnyView {
- switch self {
- case .home:
- return Home.Builder(resolver: resolver).buildView().asAny()
- case .settings:
- return Settings.Builder(resolver: resolver).buildView().asAny()
- case .onboarding:
- return Onboarding.Builder(resolver: resolver).buildView().asAny()
- case .authorizedRoot:
- return AuthotizedRoot.Builder(resolver: resolver).buildView().asAny()
- case .login:
- return Login.Builder(resolver: resolver).buildView().asAny()
- case .requestPermissions:
- return RequestPermissions.Builder(resolver: resolver).buildView().asAny()
- }
- }
- func tab(resolver: Resolver) -> AuthotizedRoot.Tab {
- let tabView = view(resolver: resolver)
- switch self {
- case .home:
- return .init(
- rootScreen: self,
- view: tabView,
- image: Image(systemName: "house"),
- text: Text("Home")
- )
- case .settings:
- return .init(
- rootScreen: self,
- view: tabView,
- image: Image(systemName: "gear"),
- text: Text("Settings")
- )
- case .onboarding, .login, .requestPermissions, .authorizedRoot:
- fatalError("Tab for this screen \(self) did not specified")
- }
- }
- func modal(resolver: Resolver) -> Main.Modal {
- .init(screen: self, view: view(resolver: resolver))
- }
- }
|