33 lines
833 B
Swift
33 lines
833 B
Swift
import Foundation
|
|
import Combine
|
|
|
|
class NewHomeTabViewModel: ObservableObject {
|
|
@Published var posts: [Post] = []
|
|
@Published var isLoading = true
|
|
@Published var isRefreshing = false
|
|
|
|
private var hasLoadedData = false
|
|
|
|
func fetchDataIfNeeded() {
|
|
guard !hasLoadedData else { return }
|
|
refreshData()
|
|
}
|
|
|
|
func refreshData() {
|
|
DispatchQueue.main.async {
|
|
self.isRefreshing = true
|
|
}
|
|
|
|
PostService.shared.fetchAllPosts { [weak self] fetchedPosts in
|
|
guard let self = self else { return }
|
|
|
|
DispatchQueue.main.async {
|
|
self.posts = fetchedPosts
|
|
self.isLoading = false
|
|
self.hasLoadedData = true
|
|
self.isRefreshing = false
|
|
}
|
|
}
|
|
}
|
|
}
|