mirror of
https://github.com/kiwix/kiwix-apple.git
synced 2025-09-26 05:18:31 -04:00
Merge branch 'feature/24-localization' of https://github.com/tvision251/apple into feature/24-localization
This commit is contained in:
commit
d6affef6d6
@ -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")
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user