28 lines
933 B
Swift
28 lines
933 B
Swift
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
|
||
}
|
||
}
|
||
}
|
||
}
|