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
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user