crossmate

A collaborative crossword app for iOS
Log | Files | Refs | LICENSE

ExternalBrowseView.swift (1330B)


      1 import SwiftUI
      2 
      3 struct ExternalBrowseView: View {
      4     let onSelected: (String) -> Void
      5     let excludedDates: Set<Date>
      6 
      7     @Environment(NYTAuthService.self) private var nytAuth
      8     @State private var provider: ExternalPuzzleProvider = .newYorkTimes
      9 
     10     var body: some View {
     11         VStack(spacing: 0) {
     12             if nytAuth.canAttemptNYTFetch {
     13                 Picker("Provider", selection: $provider) {
     14                     ForEach(ExternalPuzzleProvider.allCases) { provider in
     15                         Text(provider.title).tag(provider)
     16                     }
     17                 }
     18                 .pickerStyle(.menu)
     19                 .buttonStyle(.bordered)
     20                 .fixedSize()
     21                 .frame(maxWidth: .infinity)
     22                 .padding(.horizontal)
     23                 .padding(.top)
     24                 .padding(.bottom, 8)
     25             }
     26 
     27             switch provider {
     28             case .newYorkTimes:
     29                 NYTBrowseView(
     30                     onSelected: onSelected,
     31                     excludedDates: excludedDates
     32                 )
     33             }
     34         }
     35     }
     36 }
     37 
     38 private enum ExternalPuzzleProvider: String, CaseIterable, Identifiable {
     39     case newYorkTimes
     40 
     41     var id: String { rawValue }
     42 
     43     var title: String {
     44         switch self {
     45         case .newYorkTimes: "New York Times"
     46         }
     47     }
     48 }