diff --git a/mobile-courier-app/Presentation/PackagesForWithdrawal/PackagesForWithdrawalView.swift b/mobile-courier-app/Presentation/PackagesForWithdrawal/PackagesForWithdrawalView.swift index 6f7ae97..b7bb078 100644 --- a/mobile-courier-app/Presentation/PackagesForWithdrawal/PackagesForWithdrawalView.swift +++ b/mobile-courier-app/Presentation/PackagesForWithdrawal/PackagesForWithdrawalView.swift @@ -18,14 +18,21 @@ struct PackagesForWithdrawalView: View { } } .onAppear { - Task { - await viewModel.getPackages() - } + getPackages() + } + .refreshable { + getPackages(forceUpdate: true) } .showRippleSpinner(isLoading: $viewModel.isLoading) .toast(message: $viewModel.toastMessage) } + private func getPackages(forceUpdate: Bool = false) { + Task { + await viewModel.getPackages(forceUpdate: forceUpdate) + } + } + @ViewBuilder private func content(for groupedPackages: [GroupedPackageEntity]) -> some View { if groupedPackages.isEmpty { diff --git a/mobile-courier-app/Presentation/PackagesForWithdrawal/PackagesForWithdrawalViewModel.swift b/mobile-courier-app/Presentation/PackagesForWithdrawal/PackagesForWithdrawalViewModel.swift index 7f52fb7..a77c0a4 100644 --- a/mobile-courier-app/Presentation/PackagesForWithdrawal/PackagesForWithdrawalViewModel.swift +++ b/mobile-courier-app/Presentation/PackagesForWithdrawal/PackagesForWithdrawalViewModel.swift @@ -19,15 +19,15 @@ final class PackagesForWithdrawalViewModel: ObservableObject { } @MainActor - func getPackages() async { - guard groupedPackagesEntity == nil else { return } + func getPackages(forceUpdate: Bool = false) async { + guard groupedPackagesEntity == nil || forceUpdate else { return } + + defer { isLoading = false } do { isLoading = true groupedPackagesEntity = try await packagesRepository.getPackagesForWithdrawl() - isLoading = false } catch { - isLoading = false toastMessage = error.localizedDescription } } diff --git a/mobile-courier-app/Presentation/WithdrawnPackages/WithdrawnPackagesView.swift b/mobile-courier-app/Presentation/WithdrawnPackages/WithdrawnPackagesView.swift index e6abfda..5197a53 100644 --- a/mobile-courier-app/Presentation/WithdrawnPackages/WithdrawnPackagesView.swift +++ b/mobile-courier-app/Presentation/WithdrawnPackages/WithdrawnPackagesView.swift @@ -18,14 +18,21 @@ struct WithdrawnPackagesView: View { } } .onAppear { - Task { - await viewModel.getPackages() - } + getPackages() + } + .refreshable { + getPackages(forceUpdate: true) } .showRippleSpinner(isLoading: $viewModel.isLoading) .toast(message: $viewModel.toastMessage) } + private func getPackages(forceUpdate: Bool = false) { + Task { + await viewModel.getPackages(forceUpdate: forceUpdate) + } + } + @ViewBuilder private func content(for groupedPackages: [GroupedPackageEntity]) -> some View { if groupedPackages.isEmpty { diff --git a/mobile-courier-app/Presentation/WithdrawnPackages/WithdrawnPackagesViewModel.swift b/mobile-courier-app/Presentation/WithdrawnPackages/WithdrawnPackagesViewModel.swift index 173b1b9..cb83c69 100644 --- a/mobile-courier-app/Presentation/WithdrawnPackages/WithdrawnPackagesViewModel.swift +++ b/mobile-courier-app/Presentation/WithdrawnPackages/WithdrawnPackagesViewModel.swift @@ -19,14 +19,15 @@ final class WithdrawnPackagesViewModel: ObservableObject { } @MainActor - func getPackages() async { - guard groupedPackagesEntity == nil else { return } + func getPackages(forceUpdate: Bool = false) async { + guard groupedPackagesEntity == nil || forceUpdate else { return } + + defer { isLoading = false } + do { isLoading = true groupedPackagesEntity = try await packagesRepository.getWithdrawnPackages() - isLoading = false } catch { - isLoading = false toastMessage = error.localizedDescription } }