Files
Attractor/App/Tabs/TabController.swift
2021-02-15 18:54:32 -08:00

58 lines
1.4 KiB
Swift

//
// TabController.swift
// SBrowser
//
// Created by James Magahern on 7/30/20.
//
import Foundation
class TabController
{
@Published var tabs: [Tab] = []
@Published var activeTabIndex: Int = 0
var policyManager = ResourcePolicyManager()
init() {
// TODO: load tabs from disk.
_ = createNewTab(url: nil)
}
func tab(forURL url: URL) -> Tab? {
tabs.first { $0.url == url }
}
func tab(forIdentifier identifier: UUID) -> Tab? {
tabs.first { $0.identifier == identifier }
}
func createNewTab(url: URL?) -> Tab {
return self.createNewTab(url: url, webViewConfiguration: nil)
}
func createNewTab(url: URL?, webViewConfiguration: WKWebViewConfiguration?) -> Tab {
let tab = Tab(url: url, policyManager: policyManager, webViewConfiguration: webViewConfiguration)
tabs.append(tab)
return tab
}
func closeTab(_ tab: Tab) {
if let index = tabs.firstIndex(of: tab) {
tabs.remove(at: index)
if tabs.count > 0 {
if index < tabs.count {
activeTabIndex = index
} else {
activeTabIndex = tabs.count - 1
}
} else {
_ = createNewTab(url: nil)
activeTabIndex = 0
}
}
}
}