From b8055a94dff7751ae549ee1470d6b65a25d4ac32 Mon Sep 17 00:00:00 2001 From: Milan Labus <107197194+MilanLabuss@users.noreply.github.com> Date: Wed, 6 Nov 2024 18:25:58 +0000 Subject: [PATCH] IMPROVE: updated fetchNewestAlert function to be async (#370) * IMPROVE: updated fetchNewestAlert function to be async * PR suggestions --------- Co-authored-by: Mikaela Caron --- .../MainView/ViewModels/MainTabViewModel.swift | 15 +++++++-------- .../Shared/MainView/Views/MainTabView.swift | 4 +++- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Basic-Car-Maintenance/Shared/MainView/ViewModels/MainTabViewModel.swift b/Basic-Car-Maintenance/Shared/MainView/ViewModels/MainTabViewModel.swift index b2729d70..66704a8f 100644 --- a/Basic-Car-Maintenance/Shared/MainView/ViewModels/MainTabViewModel.swift +++ b/Basic-Car-Maintenance/Shared/MainView/ViewModels/MainTabViewModel.swift @@ -14,7 +14,7 @@ class MainTabViewModel { @MainActor var alert: AlertItem? /// Update the UI once a new alert is sent - func fetchNewestAlert(ignoring acknowledgedAlerts: [String]) { + func fetchNewestAlert(ignoring acknowledgedAlerts: [String]) async { var query = Firestore .firestore() @@ -27,14 +27,10 @@ class MainTabViewModel { .whereField(FirestoreField.id, notIn: acknowledgedAlerts) } - query.getDocuments { [weak self] snapshot, error in - guard let self, - error == nil, - let documents = snapshot?.documents else { - return - } + do { + let snapshot = try await query.getDocuments() - let newAlert = documents + let newAlert = snapshot.documents .compactMap { do { return try $0.data(as: AlertItem.self) @@ -50,6 +46,9 @@ class MainTabViewModel { self.alert = newAlert } } + + } catch { + print("Error getting documents: \(error)") } } } diff --git a/Basic-Car-Maintenance/Shared/MainView/Views/MainTabView.swift b/Basic-Car-Maintenance/Shared/MainView/Views/MainTabView.swift index 2967873b..704c723b 100644 --- a/Basic-Car-Maintenance/Shared/MainView/Views/MainTabView.swift +++ b/Basic-Car-Maintenance/Shared/MainView/Views/MainTabView.swift @@ -93,7 +93,9 @@ struct MainTabView: View { } } .onAppear { - viewModel.fetchNewestAlert(ignoring: acknowledgedAlerts.map(\.id)) + Task { @MainActor in + await viewModel.fetchNewestAlert(ignoring: acknowledgedAlerts.map(\.id)) + } } .onChange(of: viewModel.alert) { _, newValue in guard let id = newValue?.id else { return }