浏览代码

Add linux paths for Dropbox and OneDrive

Armin Schrenk 1 年之前
父节点
当前提交
a3d30612ec

+ 2 - 2
src/main/java/module-info.java

@@ -7,7 +7,7 @@ import org.cryptomator.common.locationpresets.ICloudMacLocationPresetsProvider;
 import org.cryptomator.common.locationpresets.ICloudWindowsLocationPresetsProvider;
 import org.cryptomator.common.locationpresets.LocationPresetsProvider;
 import org.cryptomator.common.locationpresets.MegaLocationPresetsProvider;
-import org.cryptomator.common.locationpresets.OneDriveMacLocationPresetsProvider;
+import org.cryptomator.common.locationpresets.OneDriveLocationPresetsProvider;
 import org.cryptomator.common.locationpresets.OneDriveWindowsLocationPresetsProvider;
 import org.cryptomator.common.locationpresets.PCloudLocationPresetsProvider;
 import org.cryptomator.integrations.tray.TrayMenuController;
@@ -56,5 +56,5 @@ open module org.cryptomator.desktop {
 			DropboxWindowsLocationPresetsProvider, ICloudMacLocationPresetsProvider, //
 			ICloudWindowsLocationPresetsProvider, GoogleDriveWindowsLocationPresetsProvider, //
 			GoogleDriveMacLocationPresetsProvider, PCloudLocationPresetsProvider, //
-			MegaLocationPresetsProvider, OneDriveMacLocationPresetsProvider, OneDriveWindowsLocationPresetsProvider;
+			MegaLocationPresetsProvider, OneDriveLocationPresetsProvider, OneDriveWindowsLocationPresetsProvider;
 }

+ 35 - 0
src/main/java/org/cryptomator/common/locationpresets/DropboxLinuxLocationPresetsProvider.java

@@ -0,0 +1,35 @@
+package org.cryptomator.common.locationpresets;
+
+import org.cryptomator.integrations.common.OperatingSystem;
+
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.regex.Pattern;
+import java.util.stream.Stream;
+import java.util.stream.StreamSupport;
+
+import static org.cryptomator.integrations.common.OperatingSystem.Value.LINUX;
+
+@OperatingSystem(LINUX)
+public final class DropboxLinuxLocationPresetsProvider implements LocationPresetsProvider {
+
+	private static final Path USER_HOME = LocationPresetsProvider.resolveLocation("~/.").toAbsolutePath();
+	private static final Pattern PATTERN = Pattern.compile("Dropbox \\(.+\\)");
+
+	@Override
+	public Stream<LocationPreset> getLocations() {
+		try (var dirStream = Files.newDirectoryStream(USER_HOME,"Dropbox*")){
+			return StreamSupport.stream(dirStream.spliterator(), false).flatMap(p -> {
+				var matcher = PATTERN.matcher(p.getFileName().toString());
+				if(matcher.matches() && Files.isDirectory(p)) {
+					return Stream.of(new LocationPreset(matcher.group(), p));
+				} else {
+					return Stream.of();
+				}
+			});
+		} catch (IOException e) {
+			return Stream.of();
+		}
+	}
+}

+ 3 - 1
src/main/java/org/cryptomator/common/locationpresets/OneDriveMacLocationPresetsProvider.java

@@ -7,11 +7,13 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.stream.Stream;
 
+import static org.cryptomator.integrations.common.OperatingSystem.Value.LINUX;
 import static org.cryptomator.integrations.common.OperatingSystem.Value.MAC;
 
 @OperatingSystem(MAC)
+@OperatingSystem(LINUX)
 @CheckAvailability
-public final class OneDriveMacLocationPresetsProvider implements LocationPresetsProvider {
+public final class OneDriveLocationPresetsProvider implements LocationPresetsProvider {
 
 
 	private static final Path LOCATION = LocationPresetsProvider.resolveLocation("~/OneDrive");