Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Stinsen
- import SwiftUI
- final class MainCoordinator: NavigationCoordinatable {
- static let Notifications: NotificationCenter = {
- NotificationCenter()
- }()
- let stack = NavigationStack(initial: \MainCoordinator.login)
- @Root
- var login = makeLogin
- @Root
- var home = makeHome
- init() {
- Self.Notifications.addObserver(self, selector: #selector(didReceiveLogin), name: .init(rawValue: "login"), object: nil)
- Self.Notifications.addObserver(self, selector: #selector(didReceiveLogout), name: .init(rawValue: "logout"), object: nil)
- }
- @objc
- func didReceiveLogin() {
- root(\.home)
- }
- @objc
- func didReceiveLogout() {
- root(\.login)
- }
- func makeLogin() -> LoginCoordinator {
- LoginCoordinator()
- }
- func makeHome() -> HomeCoordinator {
- HomeCoordinator()
- }
- }
- final class LoginCoordinator: NavigationCoordinatable {
- let stack = NavigationStack(initial: \LoginCoordinator.start)
- @Root
- var start = makeStart
- @ViewBuilder
- func makeStart() -> some View {
- VStack {
- Text("Press below to login!")
- Button {
- MainCoordinator.Notifications.post(name: .init(rawValue: "login"), object: nil)
- } label: {
- Text("Login")
- }
- }
- }
- }
- final class HomeCoordinator: NavigationCoordinatable {
- let stack = NavigationStack(initial: \HomeCoordinator.start)
- @Root
- var start = makeStart
- @ViewBuilder
- func makeStart() -> some View {
- VStack {
- Text("Home")
- Button {
- MainCoordinator.Notifications.post(name: .init(rawValue: "logout"), object: nil)
- } label: {
- Text("Logout")
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment