This commit is contained in:
世界
2023-09-24 13:23:39 +08:00
parent 58bc9baa05
commit e65680dd55
4 changed files with 38 additions and 28 deletions
@@ -6,14 +6,14 @@ import Library
public class UIProfileUpdateTask: BGAppRefreshTask { public class UIProfileUpdateTask: BGAppRefreshTask {
private static let taskSchedulerPermittedIdentifier = "\(FilePath.packageName).update_profiles" private static let taskSchedulerPermittedIdentifier = "\(FilePath.packageName).update_profiles"
private static var registered = false private actor Register {
private var registered = false
public static func configure() async throws { func configure() async throws {
if !registered { if !registered {
let success = BGTaskScheduler.shared.register(forTaskWithIdentifier: taskSchedulerPermittedIdentifier, using: nil) { task in let success = BGTaskScheduler.shared.register(forTaskWithIdentifier: taskSchedulerPermittedIdentifier, using: nil) { task in
NSLog("profile update task started") NSLog("profile update task started")
Task { Task {
await getAndupdateProfiles(task) await UIProfileUpdateTask.getAndupdateProfiles(task)
} }
} }
if !success { if !success {
@@ -28,6 +28,12 @@ import Library
} }
try scheduleUpdate(ProfileUpdateTask.calculateEarliestBeginDate(profiles)) try scheduleUpdate(ProfileUpdateTask.calculateEarliestBeginDate(profiles))
} }
}
private static let register = Register()
public static func configure() async throws {
try await register.configure()
}
private nonisolated static func getAndupdateProfiles(_ task: BGTask) async { private nonisolated static func getAndupdateProfiles(_ task: BGTask) async {
let profiles: [Profile] let profiles: [Profile]
@@ -170,6 +170,7 @@ public struct EditProfileView: View {
do { do {
try await Task.sleep(nanoseconds: UInt64(100 * Double(NSEC_PER_MSEC))) try await Task.sleep(nanoseconds: UInt64(100 * Double(NSEC_PER_MSEC)))
try await profile.updateRemoteProfile() try await profile.updateRemoteProfile()
await performCallback()
} catch { } catch {
alert = Alert(error) alert = Alert(error)
} }
@@ -34,7 +34,7 @@ public struct ProfileView: View {
public init() {} public init() {}
public var body: some View { public var body: some View {
viewBuilder { VStack {
if isLoading { if isLoading {
ProgressView().onAppear { ProgressView().onAppear {
Task { Task {
@@ -222,6 +222,9 @@ public struct ProfileView: View {
isLoading = false isLoading = false
} }
do { do {
if !profileList.isEmpty {
profileList.removeAll()
}
profileList = try await ProfileManager.list() profileList = try await ProfileManager.list()
} catch { } catch {
alert = Alert(error) alert = Alert(error)