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