diff --git a/ApplicationLibrary/Views/Profile/EditProfileView.swift b/ApplicationLibrary/Views/Profile/EditProfileView.swift index 65598ec..25043c0 100644 --- a/ApplicationLibrary/Views/Profile/EditProfileView.swift +++ b/ApplicationLibrary/Views/Profile/EditProfileView.swift @@ -166,6 +166,7 @@ public struct EditProfileView: View { #else try await ProfileUpdateTask.configure() #endif + try await profile.onProfileUpdated() } catch { alert = Alert(error) return diff --git a/Library/Database/Profile+Update.swift b/Library/Database/Profile+Update.swift index c3bed66..c64be83 100644 --- a/Library/Database/Profile+Update.swift +++ b/Library/Database/Profile+Update.swift @@ -13,8 +13,26 @@ public extension Profile { if let error { throw error } - try write(remoteContent) lastUpdated = Date() try await ProfileManager.update(self) + do { + let oldContent = try read() + if oldContent == remoteContent { + return + } + } catch {} + try write(remoteContent) + try await onProfileUpdated() } + + nonisolated func onProfileUpdated() async throws { + if await SharedPreferences.selectedProfileID.get() == id { + if let profile = try? await ExtensionProfile.load() { + if profile.status == .connected { + try LibboxNewStandaloneCommandClient()!.serviceReload() + } + } + } + } + }