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}