import Foundation import Combine class NewHomeTabViewModel: ObservableObject { @Published var posts: [Post] = [] @Published var isLoading = true private var hasLoadedData = false func fetchDataIfNeeded() { // Загружаем данные только если они еще не были загружены guard !hasLoadedData else { return } isLoading = true PostService.shared.fetchAllPosts { [weak self] fetchedPosts in // Используем weak self чтобы избежать циклов сильных ссылок guard let self = self else { return } // Обновляем UI в основном потоке DispatchQueue.main.async { self.posts = fetchedPosts self.isLoading = false self.hasLoadedData = true } } } }