From bd78721e333506c0ae3daee3b91e987260409593 Mon Sep 17 00:00:00 2001 From: Yair <39923744+yaira2@users.noreply.github.com> Date: Thu, 23 Nov 2023 16:47:53 -0500 Subject: [PATCH] Feature: Only show Google Drive under cloud drives (#14041) --- src/Files.App/Data/Models/AppModel.cs | 10 ++++++++++ src/Files.App/Services/RemovableDrivesService.cs | 5 +++++ .../Utils/Cloud/Detector/GoogleDriveCloudDetector.cs | 5 ++++- .../Services/Settings/IAppSettingsService.cs | 2 -- 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/Files.App/Data/Models/AppModel.cs b/src/Files.App/Data/Models/AppModel.cs index f41da4bf19b8..0381a20e2d25 100644 --- a/src/Files.App/Data/Models/AppModel.cs +++ b/src/Files.App/Data/Models/AppModel.cs @@ -71,5 +71,15 @@ public bool ForceProcessTermination get => forceProcessTermination; set => SetProperty(ref forceProcessTermination, value); } + + private string googleDrivePath = string.Empty; + /// + /// Gets or sets a value indicating the path for Google Drive. + /// + public string GoogleDrivePath + { + get => googleDrivePath; + set => SetProperty(ref googleDrivePath, value); + } } } diff --git a/src/Files.App/Services/RemovableDrivesService.cs b/src/Files.App/Services/RemovableDrivesService.cs index 136cfda06ead..06748cd2c51f 100644 --- a/src/Files.App/Services/RemovableDrivesService.cs +++ b/src/Files.App/Services/RemovableDrivesService.cs @@ -19,6 +19,7 @@ public IStorageDeviceWatcher CreateWatcher() public async IAsyncEnumerable GetDrivesAsync() { var list = DriveInfo.GetDrives(); + var googleDrivePath = App.AppModel.GoogleDrivePath; foreach (var drive in list) { @@ -41,6 +42,10 @@ public async IAsyncEnumerable GetDrivesAsync() var label = DriveHelpers.GetExtendedDriveLabel(drive); var driveItem = await DriveItem.CreateFromPropertiesAsync(res.Result, drive.Name.TrimEnd('\\'), label, type, thumbnail); + // Don't add here because Google Drive is already displayed under cloud drives + if (drive.Name == googleDrivePath) + continue; + App.Logger.LogInformation($"Drive added: {driveItem.Path}, {driveItem.Type}"); yield return driveItem; diff --git a/src/Files.App/Utils/Cloud/Detector/GoogleDriveCloudDetector.cs b/src/Files.App/Utils/Cloud/Detector/GoogleDriveCloudDetector.cs index d62104da8e06..3e47ca19082e 100644 --- a/src/Files.App/Utils/Cloud/Detector/GoogleDriveCloudDetector.cs +++ b/src/Files.App/Utils/Cloud/Detector/GoogleDriveCloudDetector.cs @@ -1,7 +1,6 @@ // Copyright (c) 2023 Files Community // Licensed under the MIT License. See the LICENSE. -using Files.Core.Utils.Cloud; using Microsoft.Data.Sqlite; using System.IO; using Windows.Storage; @@ -57,6 +56,8 @@ await FilesystemTasks.Wrap(() => StorageFile.GetFileFromPathAsync(Path.Combine(a var folder = await StorageFolder.GetFolderFromPathAsync(path); string title = reader["title"]?.ToString() ?? folder.Name; + App.AppModel.GoogleDrivePath = path; + yield return new CloudProvider(CloudProviders.GoogleDrive) { Name = $"Google Drive ({title})", @@ -77,6 +78,8 @@ await FilesystemTasks.Wrap(() => StorageFile.GetFileFromPathAsync(Path.Combine(a string title = reader["name"]?.ToString() ?? folder.Name; string iconPath = Path.Combine(Environment.GetEnvironmentVariable("ProgramFiles"), "Google", "Drive File Stream", "drive_fs.ico"); + App.AppModel.GoogleDrivePath = path; + StorageFile iconFile = await FilesystemTasks.Wrap(() => StorageFile.GetFileFromPathAsync(iconPath).AsTask()); yield return new CloudProvider(CloudProviders.GoogleDrive) diff --git a/src/Files.Core/Services/Settings/IAppSettingsService.cs b/src/Files.Core/Services/Settings/IAppSettingsService.cs index 25e4600e4c52..981e8788a321 100644 --- a/src/Files.Core/Services/Settings/IAppSettingsService.cs +++ b/src/Files.Core/Services/Settings/IAppSettingsService.cs @@ -1,8 +1,6 @@ // Copyright (c) 2023 Files Community // Licensed under the MIT License. See the LICENSE. -using System.ComponentModel; - namespace Files.Core.Services.Settings { public interface IAppSettingsService : IBaseSettingsService, INotifyPropertyChanged