mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-07-06 04:37:59 +02:00
fix(ios): use security-scoped bookmarks for download directory persistence
- Switch iOS bookmark creation from .minimalBookmark to .withSecurityScope - Add .withSecurityScope option when resolving bookmarks - Add downloadDirectoryBookmark field to AppSettings for persisting iOS bookmarks - Resolve bookmark and startAccessingIosBookmark before queue processing - Guarantee stopAccessingIosBookmark cleanup via try/finally - Create bookmark on folder pick in both setup screen and download settings - Clear bookmark when switching to SAF mode or iOS path normalization - Fix stale bottom sheet context usage (ctx -> context) in download settings
This commit is contained in:
@@ -11,6 +11,7 @@ class AppSettings {
|
||||
final String audioQuality;
|
||||
final String filenameFormat;
|
||||
final String downloadDirectory;
|
||||
final String downloadDirectoryBookmark;
|
||||
final String storageMode; // 'app' or 'saf'
|
||||
final String downloadTreeUri; // SAF persistable tree URI
|
||||
final bool autoFallback;
|
||||
@@ -89,6 +90,7 @@ class AppSettings {
|
||||
this.audioQuality = 'LOSSLESS',
|
||||
this.filenameFormat = '{title} - {artist}',
|
||||
this.downloadDirectory = '',
|
||||
this.downloadDirectoryBookmark = '',
|
||||
this.storageMode = 'app',
|
||||
this.downloadTreeUri = '',
|
||||
this.autoFallback = true,
|
||||
@@ -153,6 +155,7 @@ class AppSettings {
|
||||
String? audioQuality,
|
||||
String? filenameFormat,
|
||||
String? downloadDirectory,
|
||||
String? downloadDirectoryBookmark,
|
||||
String? storageMode,
|
||||
String? downloadTreeUri,
|
||||
bool? autoFallback,
|
||||
@@ -213,6 +216,8 @@ class AppSettings {
|
||||
audioQuality: audioQuality ?? this.audioQuality,
|
||||
filenameFormat: filenameFormat ?? this.filenameFormat,
|
||||
downloadDirectory: downloadDirectory ?? this.downloadDirectory,
|
||||
downloadDirectoryBookmark:
|
||||
downloadDirectoryBookmark ?? this.downloadDirectoryBookmark,
|
||||
storageMode: storageMode ?? this.storageMode,
|
||||
downloadTreeUri: downloadTreeUri ?? this.downloadTreeUri,
|
||||
autoFallback: autoFallback ?? this.autoFallback,
|
||||
|
||||
@@ -11,6 +11,7 @@ AppSettings _$AppSettingsFromJson(Map<String, dynamic> json) => AppSettings(
|
||||
audioQuality: json['audioQuality'] as String? ?? 'LOSSLESS',
|
||||
filenameFormat: json['filenameFormat'] as String? ?? '{title} - {artist}',
|
||||
downloadDirectory: json['downloadDirectory'] as String? ?? '',
|
||||
downloadDirectoryBookmark: json['downloadDirectoryBookmark'] as String? ?? '',
|
||||
storageMode: json['storageMode'] as String? ?? 'app',
|
||||
downloadTreeUri: json['downloadTreeUri'] as String? ?? '',
|
||||
autoFallback: json['autoFallback'] as bool? ?? true,
|
||||
@@ -86,6 +87,7 @@ Map<String, dynamic> _$AppSettingsToJson(
|
||||
'audioQuality': instance.audioQuality,
|
||||
'filenameFormat': instance.filenameFormat,
|
||||
'downloadDirectory': instance.downloadDirectory,
|
||||
'downloadDirectoryBookmark': instance.downloadDirectoryBookmark,
|
||||
'storageMode': instance.storageMode,
|
||||
'downloadTreeUri': instance.downloadTreeUri,
|
||||
'autoFallback': instance.autoFallback,
|
||||
|
||||
Reference in New Issue
Block a user