parent
66f0ba6891
commit
6784ed7fdf
|
@ -24,3 +24,17 @@ struct ConfirmReblogKey: PreferenceKey {
|
||||||
struct TimelineSyncModeKey: PreferenceKey {
|
struct TimelineSyncModeKey: PreferenceKey {
|
||||||
static var defaultValue: TimelineSyncMode { .icloud }
|
static var defaultValue: TimelineSyncMode { .icloud }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct InAppSafariKey: PreferenceKey {
|
||||||
|
static var defaultValue: Bool {
|
||||||
|
#if targetEnvironment(macCatalyst) || os(visionOS)
|
||||||
|
false
|
||||||
|
#else
|
||||||
|
if ProcessInfo.processInfo.isiOSAppOnMac {
|
||||||
|
false
|
||||||
|
} else {
|
||||||
|
true
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ import UIKit
|
||||||
|
|
||||||
extension PreferenceStore {
|
extension PreferenceStore {
|
||||||
func migrate(from legacy: LegacyPreferences) {
|
func migrate(from legacy: LegacyPreferences) {
|
||||||
let migrations: [any MigrationProtocol] = [
|
var migrations: [any MigrationProtocol] = [
|
||||||
Migration(from: \.theme.theme, to: \.$theme),
|
Migration(from: \.theme.theme, to: \.$theme),
|
||||||
Migration(from: \.pureBlackDarkMode, to: \.$pureBlackDarkMode),
|
Migration(from: \.pureBlackDarkMode, to: \.$pureBlackDarkMode),
|
||||||
Migration(from: \.accentColor, to: \.$accentColor),
|
Migration(from: \.accentColor, to: \.$accentColor),
|
||||||
|
@ -41,8 +41,6 @@ extension PreferenceStore {
|
||||||
Migration(from: \.attachmentAltBadgeInverted, to: \.$attachmentAltBadgeInverted),
|
Migration(from: \.attachmentAltBadgeInverted, to: \.$attachmentAltBadgeInverted),
|
||||||
|
|
||||||
Migration(from: \.openLinksInApps, to: \.$openLinksInApps),
|
Migration(from: \.openLinksInApps, to: \.$openLinksInApps),
|
||||||
Migration(from: \.useInAppSafari, to: \.$useInAppSafari),
|
|
||||||
Migration(from: \.inAppSafariAutomaticReaderMode, to: \.$inAppSafariAutomaticReaderMode),
|
|
||||||
Migration(from: \.expandAllContentWarnings, to: \.$expandAllContentWarnings),
|
Migration(from: \.expandAllContentWarnings, to: \.$expandAllContentWarnings),
|
||||||
Migration(from: \.collapseLongPosts, to: \.$collapseLongPosts),
|
Migration(from: \.collapseLongPosts, to: \.$collapseLongPosts),
|
||||||
Migration(from: \.oppositeCollapseKeywords, to: \.$oppositeCollapseKeywords),
|
Migration(from: \.oppositeCollapseKeywords, to: \.$oppositeCollapseKeywords),
|
||||||
|
@ -65,6 +63,12 @@ extension PreferenceStore {
|
||||||
Migration(from: \.hasShownLocalTimelineDescription, to: \.$hasShownLocalTimelineDescription),
|
Migration(from: \.hasShownLocalTimelineDescription, to: \.$hasShownLocalTimelineDescription),
|
||||||
Migration(from: \.hasShownFederatedTimelineDescription, to: \.$hasShownFederatedTimelineDescription),
|
Migration(from: \.hasShownFederatedTimelineDescription, to: \.$hasShownFederatedTimelineDescription),
|
||||||
]
|
]
|
||||||
|
#if !targetEnvironment(macCatalyst) && !os(visionOS)
|
||||||
|
migrations.append(contentsOf: [
|
||||||
|
Migration(from: \.useInAppSafari, to: \.$useInAppSafari),
|
||||||
|
Migration(from: \.inAppSafariAutomaticReaderMode, to: \.$inAppSafariAutomaticReaderMode),
|
||||||
|
] as [any MigrationProtocol])
|
||||||
|
#endif
|
||||||
|
|
||||||
for migration in migrations {
|
for migration in migrations {
|
||||||
migration.migrate(from: legacy, to: self)
|
migration.migrate(from: legacy, to: self)
|
||||||
|
|
|
@ -44,7 +44,7 @@ public final class PreferenceStore: ObservableObject, Codable {
|
||||||
|
|
||||||
// MARK: Behavior
|
// MARK: Behavior
|
||||||
@Preference<TrueKey> public var openLinksInApps
|
@Preference<TrueKey> public var openLinksInApps
|
||||||
@Preference<TrueKey> public var useInAppSafari
|
@Preference<InAppSafariKey> public var useInAppSafari
|
||||||
@Preference<FalseKey> public var inAppSafariAutomaticReaderMode
|
@Preference<FalseKey> public var inAppSafariAutomaticReaderMode
|
||||||
@Preference<FalseKey> public var expandAllContentWarnings
|
@Preference<FalseKey> public var expandAllContentWarnings
|
||||||
@Preference<TrueKey> public var collapseLongPosts
|
@Preference<TrueKey> public var collapseLongPosts
|
||||||
|
|
|
@ -58,13 +58,15 @@ struct BehaviorPrefsView: View {
|
||||||
Toggle(isOn: $preferences.openLinksInApps) {
|
Toggle(isOn: $preferences.openLinksInApps) {
|
||||||
Text("Open Links in Apps")
|
Text("Open Links in Apps")
|
||||||
}
|
}
|
||||||
#if !os(visionOS)
|
#if !targetEnvironment(macCatalyst) && !os(visionOS)
|
||||||
Toggle(isOn: $preferences.useInAppSafari) {
|
if !ProcessInfo.processInfo.isiOSAppOnMac {
|
||||||
Text("Use In-App Safari")
|
Toggle(isOn: $preferences.useInAppSafari) {
|
||||||
|
Text("Use In-App Safari")
|
||||||
|
}
|
||||||
|
Toggle(isOn: $preferences.inAppSafariAutomaticReaderMode) {
|
||||||
|
Text("Always Use Reader Mode in In-App Safari")
|
||||||
|
}.disabled(!preferences.useInAppSafari)
|
||||||
}
|
}
|
||||||
Toggle(isOn: $preferences.inAppSafariAutomaticReaderMode) {
|
|
||||||
Text("Always Use Reader Mode in In-App Safari")
|
|
||||||
}.disabled(!preferences.useInAppSafari)
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
.appGroupedListRowBackground()
|
.appGroupedListRowBackground()
|
||||||
|
|
|
@ -47,10 +47,11 @@ extension TuskerNavigationDelegate {
|
||||||
|
|
||||||
func selected(url: URL, allowResolveStatuses: Bool = true, allowUniversalLinks: Bool = true) {
|
func selected(url: URL, allowResolveStatuses: Bool = true, allowUniversalLinks: Bool = true) {
|
||||||
func openSafari() {
|
func openSafari() {
|
||||||
#if os(visionOS)
|
#if targetEnvironment(macCatalyst) || os(visionOS)
|
||||||
UIApplication.shared.open(url)
|
UIApplication.shared.open(url)
|
||||||
#else
|
#else
|
||||||
if Preferences.shared.useInAppSafari,
|
if !ProcessInfo.processInfo.isiOSAppOnMac,
|
||||||
|
Preferences.shared.useInAppSafari,
|
||||||
url.scheme == "https" || url.scheme == "http" {
|
url.scheme == "https" || url.scheme == "http" {
|
||||||
let config = SFSafariViewController.Configuration()
|
let config = SFSafariViewController.Configuration()
|
||||||
config.entersReaderIfAvailable = Preferences.shared.inAppSafariAutomaticReaderMode
|
config.entersReaderIfAvailable = Preferences.shared.inAppSafariAutomaticReaderMode
|
||||||
|
|
Loading…
Reference in New Issue