import Foundation extension HomeView { @MainActor func toggleFavoriteStore(storeId: String, storeName: String) async { guard favoriteRequestStoreIds.contains(storeId) == false else { return } guard appState.session.isAuthenticated else { SnackbarCenter.shared.show(title: "Faça login para favoritar lojas.", style: .warning, icon: "person.crop.circle.badge.exclamationmark", duration: 2.5) return } let isFavorite = appState.favorites.storeIds.contains(storeId) favoriteRequestStoreIds.insert(storeId) defer { favoriteRequestStoreIds.remove(storeId) } do { let response = try await ApiService().setStoreFavorite(storeId: storeId, isFavorite: isFavorite == false) guard response.error == false, let result = response.result else { let message = response.message ?? "Não foi possível atualizar seus favoritos." SnackbarCenter.shared.show(title: message, style: .error, icon: "xmark.octagon.fill", duration: 3.5) return } appState.favorites.storeIds = Set(result.favorites) let successTitle = isFavorite ? "\(storeName) removida dos favoritos." : "\(storeName) adicionada aos favoritos." let successIcon = isFavorite ? "heart.slash.fill" : "heart.fill" SnackbarCenter.shared.show(title: successTitle, style: .success, icon: successIcon, duration: 2.2) } catch { let message: String if let networkError = error as? NetworkError { message = networkError.errorDescription ?? "Não foi possível atualizar seus favoritos." } else if let serviceError = error as? ApiServiceError { message = serviceError.errorDescription ?? "Não foi possível atualizar seus favoritos." } else { message = "Não foi possível atualizar seus favoritos." } SnackbarCenter.shared.show(title: message, style: .error, icon: "xmark.octagon.fill", duration: 3.5) } } }