Prechádzať zdrojové kódy

use correct registry keys for onedrive detection

Armin Schrenk 2 rokov pred
rodič
commit
a3492b9ea3

+ 10 - 6
src/main/java/org/cryptomator/common/locationpresets/OneDriveWindowsLocationPresetsProvider.java

@@ -1,7 +1,11 @@
 package org.cryptomator.common.locationpresets;
 
 import org.cryptomator.integrations.common.OperatingSystem;
+import org.cryptomator.integrations.locationpresets.LocationPreset;
+import org.cryptomator.integrations.locationpresets.LocationPresetsProvider;
 import org.jetbrains.annotations.Blocking;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
@@ -19,22 +23,22 @@ import static org.cryptomator.integrations.common.OperatingSystem.Value.WINDOWS;
 @OperatingSystem(WINDOWS)
 public final class OneDriveWindowsLocationPresetsProvider implements LocationPresetsProvider {
 
+	private static final Logger LOG = LoggerFactory.getLogger(OneDriveWindowsLocationPresetsProvider.class);
 	private static final String REGSTR_TOKEN = "REG_SZ";
 	private static final String REG_ONEDRIVE_ACCOUNTS = "HKEY_CURRENT_USER\\Software\\Microsoft\\OneDrive\\Accounts\\";
 
 	@Override
 	public Stream<LocationPreset> getLocations() {
 		try {
-
-			var accounts = queryRegistry(REG_ONEDRIVE_ACCOUNTS, List.of(), l -> l.startsWith(REG_ONEDRIVE_ACCOUNTS)).toList();
+			var accountRegKeys = queryRegistry(REG_ONEDRIVE_ACCOUNTS, List.of(), l -> l.startsWith(REG_ONEDRIVE_ACCOUNTS)).toList();
 			var cloudLocations = new ArrayList<LocationPreset>();
-			for (var account : accounts) {
-				var path = queryRegistry(REG_ONEDRIVE_ACCOUNTS + account, List.of("/v", "UserFolder"), l -> l.contains("UserFolder")).map(result -> result.substring(result.indexOf(REGSTR_TOKEN) + REGSTR_TOKEN.length()).trim()) //
+			for (var accountRegKey : accountRegKeys) {
+				var path = queryRegistry(accountRegKey, List.of("/v", "UserFolder"), l -> l.contains("UserFolder")).map(result -> result.substring(result.indexOf(REGSTR_TOKEN) + REGSTR_TOKEN.length()).trim()) //
 						.map(Path::of) //
 						.findFirst().orElseThrow();
 				var name = "OneDrive"; //we assume personal oneDrive account by default
-				if (!account.equals("Personal")) {
-					name = queryRegistry(REG_ONEDRIVE_ACCOUNTS + account, List.of("/v", "DisplayName"), l -> l.contains("DisplayName")).map(result -> result.substring(result.indexOf(REGSTR_TOKEN) + REGSTR_TOKEN.length()).trim()) //
+				if (!accountRegKey.endsWith("Personal")) {
+					name = queryRegistry(accountRegKey, List.of("/v", "DisplayName"), l -> l.contains("DisplayName")).map(result -> result.substring(result.indexOf(REGSTR_TOKEN) + REGSTR_TOKEN.length()).trim()) //
 							.map("OneDrive - "::concat).findFirst().orElseThrow();
 				}
 				cloudLocations.add(new LocationPreset(name, path));