import SwiftUI #if !os(tvOS) struct SearchView: View { @State private var viewModel = SearchViewModel() var body: some View { ScrollView { if viewModel.isSearching { ProgressView("搜索中...") .frame(maxWidth: .infinity, minHeight: 300) } else if let error = viewModel.error { VStack(spacing: 16) { Image(systemName: "exclamationmark.triangle") .font(.system(size: 48)) .foregroundStyle(.secondary) Text(error) .foregroundStyle(.secondary) } .frame(maxWidth: .infinity, minHeight: 300) } else if viewModel.hasSearched && viewModel.results.isEmpty { VStack(spacing: 12) { Image(systemName: "magnifyingglass") .font(.system(size: 48)) .foregroundStyle(.secondary) Text("未找到相关内容") .foregroundStyle(.secondary) } .frame(maxWidth: .infinity, minHeight: 300) } else if !viewModel.results.isEmpty { ContentGridView(items: viewModel.results) .padding() if viewModel.currentPage < viewModel.totalPages { ProgressView() .padding() .task { await viewModel.loadMore() } } } else { // 搜索提示 VStack(spacing: 16) { Image(systemName: "magnifyingglass") .font(.system(size: 48)) .foregroundStyle(.tertiary) Text("输入关键词搜索影片") .foregroundStyle(.secondary) } .frame(maxWidth: .infinity, minHeight: 300) } } .navigationTitle("搜索") .navigationDestination(for: ContentItem.self) { item in DetailView(item: item) } .searchable(text: $viewModel.query, prompt: "搜索电影、电视剧...") .onSubmit(of: .search) { Task { await viewModel.search() } } } } #endif