From 6e6cbe2a611203ef651878dbfe97eb7ce5fda516 Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Sat, 9 Nov 2024 18:43:29 +0100 Subject: documents: Allow many methods to take a path, not just a name Can't create entries with "/" in for the other backends, so they will resolve the path. documents would not. Change that so they are more similar. --- .../documents/DocumentTreeAndroidTest.kt | 30 +++++++++++++ .../cleversync/io/documents/DocumentDirectory.kt | 50 +++++++++++++++++++++- 2 files changed, 78 insertions(+), 2 deletions(-) (limited to 'libs/documents/src') diff --git a/libs/documents/src/androidTest/java/org/the_jk/cleversync/documents/DocumentTreeAndroidTest.kt b/libs/documents/src/androidTest/java/org/the_jk/cleversync/documents/DocumentTreeAndroidTest.kt index c9e0782..accd0db 100644 --- a/libs/documents/src/androidTest/java/org/the_jk/cleversync/documents/DocumentTreeAndroidTest.kt +++ b/libs/documents/src/androidTest/java/org/the_jk/cleversync/documents/DocumentTreeAndroidTest.kt @@ -148,6 +148,36 @@ class DocumentTreeAndroidTest : TreeAbstractTest() { runTest { super.unicodeFilename() } } + @Test + override fun openDirInDir() { + runTest { super.openDirInDir() } + } + + @Test + override fun openFileInDir() { + runTest { super.openFileInDir() } + } + + @Test + override fun createDirInDir() { + runTest { super.createDirInDir() } + } + + @Test + override fun createFileInDir() { + runTest { super.createFileInDir() } + } + + @Test + override fun removeDirInDir() { + runTest { super.removeDirInDir() } + } + + @Test + override fun removeFileInDir() { + runTest { super.removeFileInDir() } + } + override fun supportSymlinks() = false override fun idle() { diff --git a/libs/documents/src/main/java/org/the_jk/cleversync/io/documents/DocumentDirectory.kt b/libs/documents/src/main/java/org/the_jk/cleversync/io/documents/DocumentDirectory.kt index 23ffad9..613118d 100644 --- a/libs/documents/src/main/java/org/the_jk/cleversync/io/documents/DocumentDirectory.kt +++ b/libs/documents/src/main/java/org/the_jk/cleversync/io/documents/DocumentDirectory.kt @@ -62,13 +62,27 @@ internal open class DocumentDirectory( } override fun modifiableOpenDir(name: String): ModifiableDirectory? { - val childMetadata = findChild(name) ?: return null + val parts = name.split('/') + val childMetadata = findChild(parts[0]) ?: return null if (!childMetadata.isDir()) return null val childTreeUri = DocumentsContract.buildChildDocumentsUriUsingTree(treeUri, childMetadata.documentId) - return DocumentDirectory(contentResolver, childTreeUri, childMetadata, liveUpdateInterval) + var dir: ModifiableDirectory = + DocumentDirectory(contentResolver, childTreeUri, childMetadata, liveUpdateInterval) + for (i in 1.. 1) { + var dir: ModifiableDirectory = this + for (i in 0.. 1) { + var dir: ModifiableDirectory = this + for (i in 0.. 1) { + var dir: ModifiableDirectory = this + for (i in 0.. 1) { + var dir: ModifiableDirectory = this + for (i in 0.. 1) { + var dir: ModifiableDirectory = this + for (i in 0..