Attempt to fix stale tabs losing info
This commit is contained in:
@@ -49,16 +49,28 @@ class TabController
|
||||
tabs.append(tab)
|
||||
}
|
||||
|
||||
// Title observation
|
||||
// Title observation: update snapshot and notify delegate.
|
||||
tab.titleObservation = tab.webView.observe(\.title, changeHandler: { [weak tab, weak self] (webView, change) in
|
||||
if let tab = tab, let self = self, let delegate = self.controllerDelegate {
|
||||
guard let tab = tab else { return }
|
||||
if let newTitle = webView.title, !newTitle.isEmpty {
|
||||
tab._tabInfo.title = newTitle
|
||||
}
|
||||
if let self = self, let delegate = self.controllerDelegate {
|
||||
delegate.tabController(self, didUpdateTitle: webView.title ?? "", forTab: tab)
|
||||
}
|
||||
})
|
||||
|
||||
// URL observation: persist the latest URL in the snapshot.
|
||||
tab.urlObservation = tab.webView.observe(\.url, changeHandler: { [weak tab] (webView, change) in
|
||||
guard let tab = tab else { return }
|
||||
tab._tabInfo.urlString = webView.url?.absoluteString ?? tab._tabInfo.urlString
|
||||
})
|
||||
|
||||
// Favicon Observation
|
||||
tab.faviconObservation = tab.$favicon.receive(on: RunLoop.main).sink { [weak tab, weak self] val in
|
||||
if let tab = tab, let self = self, let delegate = self.controllerDelegate {
|
||||
guard let tab = tab else { return }
|
||||
tab._tabInfo.faviconData = val?.pngData()
|
||||
if let self = self, let delegate = self.controllerDelegate {
|
||||
delegate.tabController(self, didUpdateFavicon: val, forTab: tab)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user