fix: simplify nullable check in pathpicker.

This commit is contained in:
Dong Bin
2025-02-27 16:34:23 +08:00
parent 95525fcdbb
commit 60046f4ef1

View File

@@ -204,10 +204,10 @@ public class PathPicker : TemplatedControl
nameof(FilePickerFileTypes.ImagePng) => FilePickerFileTypes.ImagePng, nameof(FilePickerFileTypes.ImagePng) => FilePickerFileTypes.ImagePng,
nameof(FilePickerFileTypes.ImageWebp) => FilePickerFileTypes.ImageWebp, nameof(FilePickerFileTypes.ImageWebp) => FilePickerFileTypes.ImageWebp,
nameof(FilePickerFileTypes.TextPlain) => FilePickerFileTypes.TextPlain, nameof(FilePickerFileTypes.TextPlain) => FilePickerFileTypes.TextPlain,
_ => parse() _ => Parse()
}; };
FilePickerFileType parse() FilePickerFileType Parse()
{ {
var list = str.Split(','); var list = str.Split(',');
return new FilePickerFileType(list.First()) return new FilePickerFileType(list.First())
@@ -248,7 +248,7 @@ public class PathPicker : TemplatedControl
FileTypeFilter = ParseFileTypes(FileFilter) FileTypeFilter = ParseFileTypes(FileFilter)
}; };
var resFiles = await storageProvider.OpenFilePickerAsync(filePickerOpenOptions); var resFiles = await storageProvider.OpenFilePickerAsync(filePickerOpenOptions);
UpdateSelectedPaths(resFiles.Select(x => x.TryGetLocalPath()).ToArray()!); UpdateSelectedPaths(resFiles.Select(x => x.TryGetLocalPath()).ToArray());
break; break;
case UsePickerTypes.SaveFile: case UsePickerTypes.SaveFile:
FilePickerSaveOptions filePickerSaveOptions = new() FilePickerSaveOptions filePickerSaveOptions = new()
@@ -263,9 +263,7 @@ public class PathPicker : TemplatedControl
var path = (await storageProvider.SaveFilePickerAsync(filePickerSaveOptions)) var path = (await storageProvider.SaveFilePickerAsync(filePickerSaveOptions))
?.TryGetLocalPath(); ?.TryGetLocalPath();
UpdateSelectedPaths(string.IsNullOrEmpty(path) UpdateSelectedPaths([path]);
? Array.Empty<string>()
: [path]);
break; break;
case UsePickerTypes.OpenFolder: case UsePickerTypes.OpenFolder:
FolderPickerOpenOptions folderPickerOpenOptions = new() FolderPickerOpenOptions folderPickerOpenOptions = new()
@@ -277,7 +275,7 @@ public class PathPicker : TemplatedControl
SuggestedFileName = SuggestedFileName SuggestedFileName = SuggestedFileName
}; };
var resFolder = await storageProvider.OpenFolderPickerAsync(folderPickerOpenOptions); var resFolder = await storageProvider.OpenFolderPickerAsync(folderPickerOpenOptions);
UpdateSelectedPaths(resFolder.Select(x => x.TryGetLocalPath()).ToArray()!); UpdateSelectedPaths(resFolder.Select(x => x.TryGetLocalPath()).ToArray());
break; break;
default: default:
throw new ArgumentOutOfRangeException(); throw new ArgumentOutOfRangeException();
@@ -298,9 +296,10 @@ public class PathPicker : TemplatedControl
} }
} }
private void UpdateSelectedPaths(IReadOnlyList<string> newList) private void UpdateSelectedPaths(IReadOnlyList<string?> newList)
{ {
if (newList.Count != 0 || IsClearSelectionOnCancel && newList.Count == 0) var nonNullList = newList.Where(x => x is not null).Select(x => x!).ToList();
SelectedPaths = newList; if (nonNullList.Count != 0 || IsClearSelectionOnCancel && nonNullList.Count == 0)
SelectedPaths = nonNullList;
} }
} }