mirror of
https://github.com/morgan9e/macos-stats
synced 2026-04-14 00:04:15 +09:00
feat: removed all logic from the Telemetry plugin since it's not used anyway. The toggle leaves for now since I have not decided what to do with that.
This commit is contained in:
@@ -11,83 +11,13 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
private struct Report: Codable {
|
|
||||||
let id: UUID
|
|
||||||
|
|
||||||
let version: String?
|
|
||||||
let modules: [String]
|
|
||||||
|
|
||||||
let device: String?
|
|
||||||
let os: String?
|
|
||||||
let language: String?
|
|
||||||
}
|
|
||||||
|
|
||||||
public class Telemetry {
|
public class Telemetry {
|
||||||
|
public static let shared = Telemetry()
|
||||||
|
|
||||||
public var isEnabled: Bool {
|
public var isEnabled: Bool {
|
||||||
get {
|
get { Store.shared.bool(key: "telemetry", defaultValue: true) }
|
||||||
self._isEnabled
|
set { Store.shared.set(key: "telemetry", value: newValue) }
|
||||||
}
|
|
||||||
set {
|
|
||||||
self.toggle(newValue)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private var url: URL = URL(string: "https://api.mac-stats.com/telemetry")!
|
public init() {}
|
||||||
|
|
||||||
private var _isEnabled: Bool = true
|
|
||||||
|
|
||||||
private let id: UUID
|
|
||||||
private let repeater = NSBackgroundActivityScheduler(identifier: "eu.exelban.Stats.Telemetry")
|
|
||||||
private var modules: UnsafePointer<[Module]>
|
|
||||||
|
|
||||||
public init(_ modules: UnsafePointer<[Module]>) {
|
|
||||||
self._isEnabled = Store.shared.bool(key: "telemetry", defaultValue: true)
|
|
||||||
self.id = UUID(uuidString: Store.shared.string(key: "telemetry_id", defaultValue: UUID().uuidString)) ?? UUID()
|
|
||||||
self.modules = modules
|
|
||||||
|
|
||||||
if !Store.shared.exist(key: "telemetry_id") {
|
|
||||||
Store.shared.set(key: "telemetry_id", value: self.id.uuidString)
|
|
||||||
self.toggle(self.isEnabled)
|
|
||||||
}
|
|
||||||
|
|
||||||
self.report()
|
|
||||||
}
|
|
||||||
|
|
||||||
@objc public func report() {
|
|
||||||
guard self.isEnabled else { return }
|
|
||||||
|
|
||||||
let obj: Report = Report(
|
|
||||||
id: self.id,
|
|
||||||
version: Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String,
|
|
||||||
modules: self.modules.pointee.filter({ $0.available && $0.enabled }).compactMap({ $0.name }),
|
|
||||||
device: SystemKit.shared.device.model.id,
|
|
||||||
os: SystemKit.shared.device.os?.version.getFullVersion(),
|
|
||||||
language: Locale.current.languageCode
|
|
||||||
)
|
|
||||||
let jsonData = try? JSONEncoder().encode(obj)
|
|
||||||
|
|
||||||
var request = URLRequest(url: self.url)
|
|
||||||
request.httpMethod = "POST"
|
|
||||||
request.httpBody = jsonData
|
|
||||||
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
|
|
||||||
|
|
||||||
let task = URLSession.shared.dataTask(with: request)
|
|
||||||
task.resume()
|
|
||||||
}
|
|
||||||
|
|
||||||
private func toggle(_ newValue: Bool) {
|
|
||||||
self._isEnabled = newValue
|
|
||||||
Store.shared.set(key: "telemetry", value: newValue)
|
|
||||||
|
|
||||||
self.repeater.invalidate()
|
|
||||||
|
|
||||||
if newValue {
|
|
||||||
self.repeater.repeats = true
|
|
||||||
self.repeater.interval = 60 * 60 * 24
|
|
||||||
self.repeater.schedule { (completion: @escaping NSBackgroundActivityScheduler.CompletionHandler) in
|
|
||||||
self.report()
|
|
||||||
completion(NSBackgroundActivityScheduler.Result.finished)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,6 @@ var modules: [Module] = [
|
|||||||
Bluetooth(),
|
Bluetooth(),
|
||||||
Clock()
|
Clock()
|
||||||
]
|
]
|
||||||
let telemetry: Telemetry = Telemetry(&modules)
|
|
||||||
|
|
||||||
@main
|
@main
|
||||||
class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDelegate {
|
class AppDelegate: NSObject, NSApplicationDelegate, UNUserNotificationCenterDelegate {
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ class ApplicationSettings: NSStackView {
|
|||||||
)
|
)
|
||||||
self.telemetryBtn = switchView(
|
self.telemetryBtn = switchView(
|
||||||
action: #selector(self.toggleTelemetry),
|
action: #selector(self.toggleTelemetry),
|
||||||
state: telemetry.isEnabled
|
state: Telemetry.shared.isEnabled
|
||||||
)
|
)
|
||||||
|
|
||||||
scrollView.stackView.addArrangedSubview(PreferencesSection([
|
scrollView.stackView.addArrangedSubview(PreferencesSection([
|
||||||
@@ -182,7 +182,7 @@ class ApplicationSettings: NSStackView {
|
|||||||
|
|
||||||
internal func viewWillAppear() {
|
internal func viewWillAppear() {
|
||||||
self.startAtLoginBtn?.state = LaunchAtLogin.isEnabled ? .on : .off
|
self.startAtLoginBtn?.state = LaunchAtLogin.isEnabled ? .on : .off
|
||||||
self.telemetryBtn?.state = telemetry.isEnabled ? .on : .off
|
self.telemetryBtn?.state = Telemetry.shared.isEnabled ? .on : .off
|
||||||
|
|
||||||
var idx = self.updateSelector?.indexOfSelectedItem ?? 0
|
var idx = self.updateSelector?.indexOfSelectedItem ?? 0
|
||||||
if let items = self.updateSelector?.menu?.items {
|
if let items = self.updateSelector?.menu?.items {
|
||||||
@@ -296,7 +296,7 @@ class ApplicationSettings: NSStackView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@objc private func toggleTelemetry(_ sender: NSButton) {
|
@objc private func toggleTelemetry(_ sender: NSButton) {
|
||||||
telemetry.isEnabled = sender.state == NSControl.StateValue.on
|
Telemetry.shared.isEnabled = sender.state == NSControl.StateValue.on
|
||||||
}
|
}
|
||||||
|
|
||||||
@objc private func toggleCombinedModules(_ sender: NSButton) {
|
@objc private func toggleCombinedModules(_ sender: NSButton) {
|
||||||
|
|||||||
@@ -400,12 +400,12 @@ private class SetupView_4: NSStackView {
|
|||||||
|
|
||||||
container.addRow(with: [self.option(
|
container.addRow(with: [self.option(
|
||||||
tag: 1,
|
tag: 1,
|
||||||
state: telemetry.isEnabled,
|
state: Telemetry.shared.isEnabled,
|
||||||
text: localizedString("Share anonymous telemetry data")
|
text: localizedString("Share anonymous telemetry data")
|
||||||
)])
|
)])
|
||||||
container.addRow(with: [self.option(
|
container.addRow(with: [self.option(
|
||||||
tag: 2,
|
tag: 2,
|
||||||
state: !telemetry.isEnabled,
|
state: !Telemetry.shared.isEnabled,
|
||||||
text: localizedString("Do not share anonymous telemetry data")
|
text: localizedString("Do not share anonymous telemetry data")
|
||||||
)])
|
)])
|
||||||
|
|
||||||
@@ -427,7 +427,7 @@ private class SetupView_4: NSStackView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@objc private func toggle(_ sender: NSButton) {
|
@objc private func toggle(_ sender: NSButton) {
|
||||||
telemetry.isEnabled = sender.tag == 1
|
Telemetry.shared.isEnabled = sender.tag == 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user