Set provide location default to 30 seconds

Don't delete routes unless doing a factory reset
Close route recorder modal when finished
This commit is contained in:
Garth Vander Houwen 2024-04-21 20:36:29 -07:00
parent 2054511936
commit d780f103ad
6 changed files with 19 additions and 8 deletions

View file

@ -86,7 +86,7 @@ extension UserDefaults {
@UserDefault(.provideLocation, defaultValue: false)
static var provideLocation: Bool
@UserDefault(.provideLocationInterval, defaultValue: 0)
@UserDefault(.provideLocationInterval, defaultValue: 30)
static var provideLocationInterval: Int
@UserDefault(.mapLayer, defaultValue: .standard)

View file

@ -106,14 +106,24 @@ public func deleteUserMessages(user: UserEntity, context: NSManagedObjectContext
}
}
public func clearCoreDataDatabase(context: NSManagedObjectContext) {
public func clearCoreDataDatabase(context: NSManagedObjectContext, includeRoutes: Bool) {
let persistenceController = PersistenceController.shared.container
for i in 0...persistenceController.managedObjectModel.entities.count-1 {
let entity = persistenceController.managedObjectModel.entities[i]
let query = NSFetchRequest<NSFetchRequestResult>(entityName: entity.name!)
let deleteRequest = NSBatchDeleteRequest(fetchRequest: query)
var deleteRequest = NSBatchDeleteRequest(fetchRequest: query)
let entityName = entity.name ?? "UNK"
if includeRoutes {
deleteRequest = NSBatchDeleteRequest(fetchRequest: query)
} else if !includeRoutes {
if !(entityName.contains("RouteEntity") || entityName.contains("LocationEntity")) {
print(entity.name?.lowercased())
deleteRequest = NSBatchDeleteRequest(fetchRequest: query)
}
}
do {
try context.executeAndMergeChanges(using: deleteRequest)
} catch let error as NSError {

View file

@ -232,7 +232,7 @@ struct Connect: View {
if bleManager.connectedPeripheral != nil && bleManager.connectedPeripheral.peripheral.state == CBPeripheralState.connected {
bleManager.disconnectPeripheral()
}
clearCoreDataDatabase(context: context)
clearCoreDataDatabase(context: context, includeRoutes: false)
let radio = bleManager.peripherals.first(where: { $0.peripheral.identifier.uuidString == selectedPeripherialId })
if radio != nil {

View file

@ -75,7 +75,7 @@ struct AppSettings: View {
) {
Button("Erase all app data?", role: .destructive) {
bleManager.disconnectPeripheral()
clearCoreDataDatabase(context: context)
clearCoreDataDatabase(context: context, includeRoutes: true)
context.refreshAllObjects()
UserDefaults.standard.reset()
}

View file

@ -153,7 +153,7 @@ struct DeviceConfig: View {
if bleManager.sendNodeDBReset(fromUser: node!.user!, toUser: node!.user!) {
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
bleManager.disconnectPeripheral()
clearCoreDataDatabase(context: context)
clearCoreDataDatabase(context: context, includeRoutes: false)
}
} else {
@ -178,7 +178,7 @@ struct DeviceConfig: View {
if bleManager.sendFactoryReset(fromUser: node!.user!, toUser: node!.user!) {
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
bleManager.disconnectPeripheral()
clearCoreDataDatabase(context: context)
clearCoreDataDatabase(context: context, includeRoutes: false)
}
} else {
print("Factory Reset Failed")

View file

@ -248,6 +248,7 @@ struct RouteRecorder: View {
let nsError = error as NSError
print("💥 Error Saving RouteEntity from the Route Recorder \(nsError)")
}
isShowingDetails = false
} label: {
Label("finish", systemImage: "flag.checkered")
}