Enhance download notifications and settings; add support for live activities

- Updated notification body to use proper German quotation marks for download failure alerts.
- Refactored audio interruption handling in PlayerEngine to utilize MainActor.assumeIsolated for better performance.
- Introduced nonisolated properties for support and downloads directories in ProgressSyncManager.
- Improved FullHistoryView and MainView with additional toolbar items and alerts for download failures.
- Added new toggles in SettingsView for parallel downloads and mobile data usage.
- Created new color assets for the DownloadWidgetExtension and updated widget appearance.
- Implemented Info.plist for DownloadWidgetExtension to support widget functionality.
- Enabled live activities support in iOS Info.plist.
This commit is contained in:
Scarriffle
2026-06-08 19:32:54 +02:00
parent f053f1d320
commit 134482bb4a
23 changed files with 1104 additions and 224 deletions

View File

@@ -10,6 +10,8 @@ struct SettingsView: View {
@AppStorage("libraryLayout") private var layoutRaw: String = LibraryLayout.grid.rawValue
@AppStorage("autoRefreshOnLaunch") private var autoRefreshOnLaunch: Bool = true
@AppStorage("historyEnabled") private var historyEnabled: Bool = false
@AppStorage("downloadsParallel") private var downloadsParallel: Bool = true
@AppStorage("downloadsOverMobile") private var downloadsOverMobile: Bool = true
@State private var showLogoutConfirm: Bool = false
@State private var showHistoryDisableConfirm: Bool = false
@@ -226,10 +228,12 @@ struct SettingsView: View {
Text("\(app.downloads.downloadedItems.count) Einträge")
.foregroundStyle(.secondary)
}
Toggle("Parallel herunterladen", isOn: $downloadsParallel)
Toggle("Download über Mobilnetz erlauben", isOn: $downloadsOverMobile)
} header: {
Text("Downloads")
} footer: {
Text("Heruntergeladene Hörbücher und Folgen können einzeln über das Kontextmenü gelöscht werden.")
Text("Parallel lädt alle Tracks eines Hörbuchs gleichzeitig — schneller, aber höhere Server- und Netzlast. Bei deaktiviertem Mobilnetz starten Downloads erst wenn WLAN verfügbar ist.")
}
}
@@ -346,8 +350,13 @@ struct SettingsView: View {
private var aboutPane: some View {
Form {
LabeledContent("Version", value: appVersion)
LabeledContent("Heruntergeladen", value: "\(app.downloads.downloadedItems.count) Einträge")
Section("Downloads") {
Toggle("Parallel herunterladen", isOn: $downloadsParallel)
LabeledContent("Heruntergeladen", value: "\(app.downloads.downloadedItems.count) Einträge")
}
Section("Über") {
LabeledContent("Version", value: appVersion)
}
}
.formStyle(.grouped)
}