Skip to content

Commit

Permalink
Migrate to Defaults for Privacy & About tabs (#360)
Browse files Browse the repository at this point in the history
* refractor: migrate from AppStorage to Defaults in Privacy and About tabs

* refractor: use binding to set autoChecksForUpdates

* fix: unable to set updater

* fix: automaticallyDownloadsUpdates in GlobalContext is wrong

* perf: improve code

* perf: add updater in Configuration for easy outside use

---------

Co-authored-by: Tisfeng <[email protected]>
Co-authored-by: Lava <[email protected]>
  • Loading branch information
3 people authored Jan 28, 2024
1 parent f822299 commit 4ff44c0
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 14 deletions.
6 changes: 4 additions & 2 deletions Easydict/Feature/Configuration/Configuration.swift
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,14 @@ let kHideMenuBarIconKey = "EZConfiguration_kHideMenuBarIconKey"
@DefaultsWrapper(.launchAtStartup)
var launchAtStartup: Bool

let updater = GlobalContext.shared.updaterController.updater

var automaticallyChecksForUpdates: Bool {
get {
GlobalContext.shared.updaterController.updater.automaticallyDownloadsUpdates
updater.automaticallyChecksForUpdates
}
set {
GlobalContext.shared.updaterController.updater.automaticallyDownloadsUpdates = newValue
updater.automaticallyChecksForUpdates = newValue
logSettings(["automatically_checks_for_updates": newValue])
}
}
Expand Down
6 changes: 2 additions & 4 deletions Easydict/NewApp/View/MenuItemView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,7 @@ final class MenuItemStore: ObservableObject {
@Published var canCheckForUpdates = false

init() {
GlobalContext.shared
.updaterController
.updater
Configuration.shared.updater
.publisher(for: \.canCheckForUpdates)
.assign(to: &$canCheckForUpdates)
}
Expand Down Expand Up @@ -171,7 +169,7 @@ struct MenuItemView: View {
private var checkUpdateItem: some View {
Button("check_updates") {
NSLog("检查更新")
GlobalContext.shared.updaterController.updater.checkForUpdates()
Configuration.shared.updater.checkForUpdates()
}.disabled(!store.canCheckForUpdates)
}

Expand Down
23 changes: 20 additions & 3 deletions Easydict/NewApp/View/SettingView/Tabs/AboutTab.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
// Copyright © 2023 izual. All rights reserved.
//

import Defaults
import SwiftUI

@available(macOS 13, *)
Expand All @@ -20,7 +21,7 @@ struct AboutTab: View {
.font(.system(size: 26, weight: .semibold))
Text("current_version") + Text(verbatim: " \(version)")
.font(.system(size: 14))
Toggle("auto_check_update", isOn: $autoChecksForUpdates)
Toggle("auto_check_update", isOn: $checkUpdaterViewModel.autoChecksForUpdates)
Text(verbatim: "(") + Text("lastest_version") + Text(verbatim: " \(lastestVersion ?? version))")

HStack {
Expand All @@ -45,8 +46,8 @@ struct AboutTab: View {
}
}

@AppStorage("EZConfiguration_kAutomaticallyChecksForUpdatesKey")
private var autoChecksForUpdates = false
@StateObject private var checkUpdaterViewModel = CheckUpdaterViewModel()

@State
private var lastestVersion: String?
private var appName: String {
Expand All @@ -56,6 +57,22 @@ struct AboutTab: View {
private var version: String {
Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String ?? ""
}

class CheckUpdaterViewModel: ObservableObject {
private let updater = Configuration.shared.updater

@Published var autoChecksForUpdates = true {
didSet {
updater.automaticallyChecksForUpdates = autoChecksForUpdates
}
}

init() {
updater
.publisher(for: \.automaticallyChecksForUpdates)
.assign(to: &$autoChecksForUpdates)
}
}
}

@available(macOS 13, *)
Expand Down
8 changes: 3 additions & 5 deletions Easydict/NewApp/View/SettingView/Tabs/PrivacyTab.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
// Copyright © 2023 izual. All rights reserved.
//

import Defaults
import SwiftUI

@available(macOS 13, *)
Expand Down Expand Up @@ -33,11 +34,8 @@ struct PrivacyTab: View {
.formStyle(.grouped)
}

@AppStorage("EZConfiguration_kAllowCrashLogKey")
private var allowCollectCrashLog = true

@AppStorage("EZConfiguration_kAllowAnalyticsKey")
private var allowCollectAnalytics = true
@Default(.allowCrashLog) private var allowCollectCrashLog
@Default(.allowAnalytics) private var allowCollectAnalytics
}

@available(macOS 13, *)
Expand Down

0 comments on commit 4ff44c0

Please sign in to comment.