chore(repo): iOS-App als ios/ ins Hauptrepo uebernehmen
Calendarr-IOS wird mit vollstaendiger Historie als Unterverzeichnis ios/ eingebunden. Damit liegen Server, Web, Android und iOS in einem gemeinsamen Repo. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
import AppIntents
|
||||
import WidgetKit
|
||||
import CalendarrCore
|
||||
|
||||
/// One calendar option in a complication's configuration.
|
||||
struct WatchCalendarEntity: AppEntity, Identifiable {
|
||||
let id: String
|
||||
let name: String
|
||||
|
||||
static var typeDisplayRepresentation: TypeDisplayRepresentation = "Kalender"
|
||||
static var defaultQuery = WatchCalendarEntityQuery()
|
||||
|
||||
var displayRepresentation: DisplayRepresentation {
|
||||
DisplayRepresentation(title: LocalizedStringResource(stringLiteral: name))
|
||||
}
|
||||
}
|
||||
|
||||
/// Reads the calendars from this watch's App Group container, so configuration
|
||||
/// needs no network call and no phone.
|
||||
struct WatchCalendarEntityQuery: EntityQuery {
|
||||
func entities(for identifiers: [String]) async throws -> [WatchCalendarEntity] {
|
||||
let wanted = Set(identifiers)
|
||||
return SnapshotStore().readCalendars()
|
||||
.filter { wanted.contains($0.id) }
|
||||
.map { WatchCalendarEntity(id: $0.id, name: $0.name) }
|
||||
}
|
||||
|
||||
func suggestedEntities() async throws -> [WatchCalendarEntity] {
|
||||
SnapshotStore().readCalendars().map { WatchCalendarEntity(id: $0.id, name: $0.name) }
|
||||
}
|
||||
}
|
||||
|
||||
/// Per-complication override of the calendar selection. The in-app toggles are
|
||||
/// the primary path — intent configuration on a watch face is awkward to
|
||||
/// operate — so an empty selection means "whatever the app is set to".
|
||||
struct WatchCalendarSelectionIntent: WidgetConfigurationIntent {
|
||||
static var title: LocalizedStringResource = "Kalender auswählen"
|
||||
static var description = IntentDescription("Leer = die Auswahl aus der Watch-App.")
|
||||
|
||||
// Must be optional: WidgetConfigurationIntent requires optional parameter
|
||||
// types, and the watchOS SDK enforces it where iOS lets a bare array pass.
|
||||
@Parameter(title: "Kalender")
|
||||
var selectedCalendars: [WatchCalendarEntity]?
|
||||
}
|
||||
Reference in New Issue
Block a user