Gemini/Gemini/NavigationManager.swift

39 lines
833 B
Swift

//
// NavigationManager.swift
// Gemini
//
// Created by Shadowfacts on 7/14/20.
//
import Foundation
class NavigationManager: NSObject, ObservableObject {
@Published var currentURL: URL
@Published var backStack = [URL]()
@Published var forwardStack = [URL]()
init(url: URL) {
self.currentURL = url
}
func changeURL(_ url: URL) {
backStack.append(currentURL)
currentURL = url
forwardStack = []
}
@objc func back() {
guard !backStack.isEmpty else { return }
forwardStack.insert(currentURL, at: 0)
currentURL = backStack.removeLast()
}
@objc func forward() {
guard !forwardStack.isEmpty else { return }
backStack.append(currentURL)
currentURL = forwardStack.removeFirst()
}
}