WallpaperGrid.swift

1.1 KB · raw

1import SwiftUI23struct WallpaperGrid: View {4    let wallpapers: [Wallpaper]5    @ObservedObject var appState: AppState6    let onEndReached: (() -> Void)?7    8    var body: some View {9        ScrollView {10            LazyVGrid(columns: [GridItem(.adaptive(minimum: 140), spacing: 12)], spacing: 12) {11                ForEach(wallpapers) { wallpaper in12                    WallpaperItem(wallpaper: wallpaper) {13                        Task {14                            await appState.setWallpaper(wallpaper)15                        }16                    }17                    .onAppear {18                        if wallpaper == wallpapers.last {19                            onEndReached?()20                        }21                    }22                }23            }24            .padding(12)25            26            if appState.isLoading && !appState.wallpapers.isEmpty {27                ProgressView()28                    .padding()29            }30        }31        .refreshable {32            await appState.fetchWallpapers(reset: true, refreshing: true)33        }34    }35}