53 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Swift
		
	
	
	
	
	
import SwiftUI
 | 
						|
 | 
						|
struct HomeTab: View {
 | 
						|
    @State private var posts: [Post] = []
 | 
						|
    @State private var isLoading = true
 | 
						|
    @State private var isRefreshing = false
 | 
						|
    
 | 
						|
    var onScroll: ((CGPoint) -> Void)?
 | 
						|
 | 
						|
    var body: some View {
 | 
						|
        VStack {
 | 
						|
            if isLoading {
 | 
						|
                ProgressView("Загрузка ленты...")
 | 
						|
            } else {
 | 
						|
                RefreshableScrollView(
 | 
						|
                    isRefreshing: $isRefreshing,
 | 
						|
                    onRefresh: { fetchData() },
 | 
						|
                    onScroll: onScroll
 | 
						|
                ) {
 | 
						|
                    LazyVStack(spacing: 24) {
 | 
						|
                        ForEach(posts) { post in
 | 
						|
                            PostDetailView(post: post)
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
        }
 | 
						|
        .onAppear {
 | 
						|
            if posts.isEmpty {
 | 
						|
                fetchData(isInitialLoad: true)
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    private func fetchData(isInitialLoad: Bool = false) {
 | 
						|
        if isInitialLoad {
 | 
						|
            isLoading = true
 | 
						|
        } else {
 | 
						|
            isRefreshing = true
 | 
						|
        }
 | 
						|
        
 | 
						|
        PostService.shared.fetchAllPosts { fetchedPosts in
 | 
						|
            self.posts = fetchedPosts
 | 
						|
            
 | 
						|
            if isInitialLoad {
 | 
						|
                print("content updated")
 | 
						|
                self.isLoading = false
 | 
						|
            }
 | 
						|
            self.isRefreshing = false
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |