/
githubmirror
/
Files
Обзор
Документация
Войти
/
githubmirror
/
Files
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Files.App/ViewModels/UserControls/Previews/TextPreviewViewModel.cs
74 строки
2 KB
yair100
Code Quality: Use FileExtensionHelpers.IsTextFile for text previews (#18152)
13 фев 2026, 02:22
Не верифицирован
13 фев 2026, 02:22
a0f22a3
Код
Авторство
О чём код?
// Copyright (c) Files Community // Licensed under the MIT License. using Files.App.UserControls.FilePreviews; using Files.App.ViewModels.Properties; namespace Files.App.ViewModels.Previews { public sealed partial class TextPreviewViewModel : BasePreviewModel { private string textValue; public string TextValue { get => textValue; private set => SetProperty(ref textValue, value); } public TextPreviewViewModel(ListedItem item) : base(item) { } public async override Task<List<FileProperty>> LoadPreviewAndDetailsAsync() { var details = new List<FileProperty>(); try { var text = TextValue ?? await ReadFileAsTextAsync(Item.ItemFile); details.Add(GetFileProperty("PropertyLineCount", text.Split('\n').Length)); details.Add(GetFileProperty("PropertyWordCount", text.Split(new[] { ' ', '\n' }, StringSplitOptions.RemoveEmptyEntries).Length)); TextValue = text.Left(Constants.PreviewPane.TextCharacterLimit); } catch (Exception e) { Debug.WriteLine(e); } return details; } public static async Task<TextPreview> TryLoadAsTextAsync(ListedItem item) { string extension = item.FileExtension?.ToLowerInvariant(); if (ExcludedExtensions(extension) || item.FileSizeBytes is 0 or > Constants.PreviewPane.TryLoadAsTextSizeLimit) return null; try { item.ItemFile = await StorageFileExtensions.DangerousGetFileFromPathAsync(item.ItemPath); var text = await ReadFileAsTextAsync(item.ItemFile); bool isBinaryFile = text.Contains("\0\0\0\0", StringComparison.Ordinal); if (isBinaryFile) return null; var model = new TextPreviewViewModel(item) { TextValue = text }; await model.LoadAsync(); return new TextPreview(model); } catch { return null; } } private static bool ExcludedExtensions(string extension) => extension is ".iso"; } }