From 2ef000458fec93ce962ce3ce8144ab9c4b035665 Mon Sep 17 00:00:00 2001 From: neon443 <69979447+neon443@users.noreply.github.com> Date: Thu, 29 May 2025 18:32:54 +0100 Subject: [PATCH] minor concurrency improvements --- NearFuture/Views/ContentView.swift | 8 ++++---- NearFuture/Views/Settings/SettingsView.swift | 7 +++++-- Shared/Model/Events.swift | 4 ++-- Shared/Model/Settings.swift | 2 +- Shared/NearFutureApp.swift | 8 ++++---- 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/NearFuture/Views/ContentView.swift b/NearFuture/Views/ContentView.swift index 04adc0f..324a7bb 100644 --- a/NearFuture/Views/ContentView.swift +++ b/NearFuture/Views/ContentView.swift @@ -27,10 +27,10 @@ struct ContentView: View { var body: some View { TabView(selection: $selection) { HomeView(viewModel: viewModel, settingsModel: settingsModel) - .tabItem { - Label("Home", systemImage: "house") - } - .tag(Tab.home) + .tabItem { + Label("Home", systemImage: "house") + } + .tag(Tab.home) ArchiveView(viewModel: viewModel) .tabItem() { Label("Archive", systemImage: "tray.full") diff --git a/NearFuture/Views/Settings/SettingsView.swift b/NearFuture/Views/Settings/SettingsView.swift index 9c3fcd7..fb90138 100644 --- a/NearFuture/Views/Settings/SettingsView.swift +++ b/NearFuture/Views/Settings/SettingsView.swift @@ -95,8 +95,11 @@ struct SettingsView: View { List { if !settingsModel.notifsGranted { Button("Request Notifications") { - Task { - settingsModel.notifsGranted = await requestNotifs() + Task.detached { + let requestNotifsResult = await requestNotifs() + await MainActor.run { + settingsModel.notifsGranted = requestNotifsResult + } } } Text("\(Image(systemName: "xmark")) Notifications disabled for Near Future") diff --git a/Shared/Model/Events.swift b/Shared/Model/Events.swift index 331c85b..72f45d9 100644 --- a/Shared/Model/Events.swift +++ b/Shared/Model/Events.swift @@ -248,8 +248,8 @@ class EventViewModel: ObservableObject, @unchecked Sendable { updateSyncStatus() loadEvents() - Task { - await checkPendingNotifs(getNotifs()) + Task.detached { + await self.checkPendingNotifs(self.getNotifs()) } WidgetCenter.shared.reloadAllTimelines()//reload all widgets when saving events objectWillChange.send() diff --git a/Shared/Model/Settings.swift b/Shared/Model/Settings.swift index eae28ad..58c14b2 100644 --- a/Shared/Model/Settings.swift +++ b/Shared/Model/Settings.swift @@ -76,7 +76,7 @@ class SettingsViewModel: ObservableObject { self.device = getDevice() if load { loadSettings() - Task { + Task.detached { let requestResult = await requestNotifs() await MainActor.run { self.notifsGranted = requestResult diff --git a/Shared/NearFutureApp.swift b/Shared/NearFutureApp.swift index 94c1bca..e01dbbb 100644 --- a/Shared/NearFutureApp.swift +++ b/Shared/NearFutureApp.swift @@ -11,13 +11,13 @@ import SwiftData @main struct NearFutureApp: App { @StateObject var settingsModel: SettingsViewModel = SettingsViewModel() - var body: some Scene { - WindowGroup { + var body: some Scene { + WindowGroup { ContentView( viewModel: EventViewModel(), settingsModel: settingsModel ) .tint(settingsModel.settings.tint.color) - } - } + } + } }