refresh home
This commit is contained in:
parent
c8d71996d9
commit
d64457ad35
@ -4,23 +4,28 @@ 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
|
||||
}
|
||||
|
||||
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
|
||||
self.isRefreshing = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -16,7 +16,9 @@ struct NewHomeTab: View {
|
||||
if viewModel.isLoading {
|
||||
ProgressView("Загрузка ленты...")
|
||||
} else {
|
||||
ScrollView {
|
||||
RefreshableScrollView(isRefreshing: $viewModel.isRefreshing, onRefresh: {
|
||||
viewModel.refreshData()
|
||||
}) {
|
||||
HStack(alignment: .top, spacing: 6) {
|
||||
LazyVStack(spacing: 6) {
|
||||
ForEach(column1Posts) { post in
|
||||
|
||||
Reference in New Issue
Block a user