mirror of
https://github.com/seemoo-lab/openhaystack.git
synced 2026-08-20 03:56:14 +00:00
Don't save preview data to keychain + get rid of shared controller instances
This commit is contained in:
@@ -10,18 +10,20 @@ import Foundation
|
||||
import SwiftUI
|
||||
|
||||
class AccessoryController: ObservableObject {
|
||||
static let shared = AccessoryController()
|
||||
|
||||
@Published var accessories: [Accessory]
|
||||
var selfObserver: AnyCancellable?
|
||||
var listElementsObserver = [AnyCancellable]()
|
||||
|
||||
init() {
|
||||
self.accessories = KeychainController.loadAccessoriesFromKeychain()
|
||||
init(accessories: [Accessory]) {
|
||||
self.accessories = accessories
|
||||
initAccessoryObserver()
|
||||
initObserver()
|
||||
}
|
||||
|
||||
convenience init() {
|
||||
self.init(accessories: KeychainController.loadAccessoriesFromKeychain())
|
||||
}
|
||||
|
||||
func initAccessoryObserver() {
|
||||
self.selfObserver = self.objectWillChange.sink { _ in
|
||||
// objectWillChange is called before the values are actually changed,
|
||||
@@ -45,19 +47,13 @@ class AccessoryController: ObservableObject {
|
||||
})
|
||||
}
|
||||
|
||||
init(accessories: [Accessory]) {
|
||||
self.accessories = accessories
|
||||
initAccessoryObserver()
|
||||
initObserver()
|
||||
}
|
||||
|
||||
func save() throws {
|
||||
try KeychainController.storeInKeychain(accessories: self.accessories)
|
||||
}
|
||||
|
||||
func updateWithDecryptedReports(devices: [FindMyDevice]) {
|
||||
// Assign last locations
|
||||
for device in FindMyController.shared.devices {
|
||||
for device in devices {
|
||||
if let idx = self.accessories.firstIndex(where: { $0.id == Int(device.deviceId) }) {
|
||||
self.objectWillChange.send()
|
||||
let accessory = self.accessories[idx]
|
||||
@@ -91,3 +87,9 @@ class AccessoryController: ObservableObject {
|
||||
return accessory
|
||||
}
|
||||
}
|
||||
|
||||
class AccessoryControllerPreview: AccessoryController {
|
||||
override func save() {
|
||||
// don't allow saving dummy data to keychain
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ import SwiftUI
|
||||
|
||||
struct ManageAccessoriesView: View {
|
||||
|
||||
@ObservedObject var accessoryController = AccessoryController.shared
|
||||
@EnvironmentObject var accessoryController: AccessoryController
|
||||
var accessories: [Accessory] {
|
||||
return self.accessoryController.accessories
|
||||
}
|
||||
|
||||
@@ -12,7 +12,8 @@ import SwiftUI
|
||||
struct OpenHaystackMainView: View {
|
||||
|
||||
@State var loading = false
|
||||
@ObservedObject var accessoryController = AccessoryController.shared
|
||||
@EnvironmentObject var accessoryController: AccessoryController
|
||||
@EnvironmentObject var findMyController: FindMyController
|
||||
var accessories: [Accessory] {
|
||||
return self.accessoryController.accessories
|
||||
}
|
||||
@@ -169,7 +170,7 @@ struct OpenHaystackMainView: View {
|
||||
self.isLoading = true
|
||||
}
|
||||
|
||||
FindMyController.shared.fetchReports(for: accessories, with: tokenData) { result in
|
||||
findMyController.fetchReports(for: accessories, with: tokenData) { result in
|
||||
switch result {
|
||||
case .failure(let error):
|
||||
os_log(.error, "Downloading reports failed %@", error.localizedDescription)
|
||||
@@ -365,12 +366,11 @@ struct OpenHaystackMainView: View {
|
||||
}
|
||||
|
||||
struct OpenHaystackMainView_Previews: PreviewProvider {
|
||||
|
||||
static var accessories: [Accessory] = PreviewData.accessories
|
||||
|
||||
static var accessoryController = AccessoryControllerPreview(accessories: PreviewData.accessories) as AccessoryController
|
||||
|
||||
static var previews: some View {
|
||||
OpenHaystackMainView(accessoryController: AccessoryController(accessories: accessories))
|
||||
.frame(width: 800, height: 600, alignment: .center)
|
||||
OpenHaystackMainView()
|
||||
.environmentObject(accessoryController)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user