Merge branch 'feature/24-localization' of https://github.com/tvision251/apple into feature/24-localization

This commit is contained in:
tvision106 2023-11-20 10:11:22 -05:00
commit d6affef6d6
3 changed files with 6 additions and 6 deletions

View File

@ -62,7 +62,6 @@ extension Color {
extension Notification.Name {
static let alert = Notification.Name("alert")
static let externalLink = Notification.Name("externalLink")
static let openFiles = Notification.Name("openFiles")
static let openURL = Notification.Name("openURL")
static let toggleSidebar = Notification.Name("toggleSidebar")

View File

@ -45,6 +45,7 @@ class BrowserViewModel: NSObject, ObservableObject,
@Published private(set) var outlineItems = [OutlineItem]()
@Published private(set) var outlineItemTree = [OutlineItem]()
@Published private(set) var url: URL?
@Published var externalLink: URL?
let tabID: NSManagedObjectID?
let webView: WKWebView
@ -179,7 +180,7 @@ class BrowserViewModel: NSObject, ObservableObject,
} else if url.isKiwixURL {
decisionHandler(.allow)
} else if url.scheme == "http" || url.scheme == "https" {
NotificationCenter.default.post(name: .externalLink, object: nil, userInfo: ["url": url])
externalLink = url
decisionHandler(.cancel)
} else if url.scheme == "geo" {
if FeatureFlags.map {

View File

@ -11,12 +11,11 @@ import SwiftUI
import Defaults
struct ExternalLinkHandler: ViewModifier {
@EnvironmentObject private var browserViewModel: BrowserViewModel
@State private var isAlertPresented = false
@State private var activeAlert: ActiveAlert?
@State private var activeSheet: ActiveSheet?
private let externalLink = NotificationCenter.default.publisher(for: .externalLink)
enum ActiveAlert {
case ask(url: URL)
case notLoading
@ -28,8 +27,9 @@ struct ExternalLinkHandler: ViewModifier {
}
func body(content: Content) -> some View {
content.onReceive(externalLink) { notification in
guard let url = notification.userInfo?["url"] as? URL else { return }
content.onChange(of: browserViewModel.externalLink) { url in
defer { browserViewModel.externalLink = nil }
guard let url = url else { return }
switch Defaults[.externalLinkLoadingPolicy] {
case .alwaysAsk:
isAlertPresented = true