diff --git a/library/src/androidTest/java/com/nextcloud/android/lib/resources/users/GenerateAppPasswordRemoteOperationIT.java b/library/src/androidTest/java/com/nextcloud/android/lib/resources/users/GenerateAppPasswordRemoteOperationIT.java index 685002ec7..f0c282e82 100644 --- a/library/src/androidTest/java/com/nextcloud/android/lib/resources/users/GenerateAppPasswordRemoteOperationIT.java +++ b/library/src/androidTest/java/com/nextcloud/android/lib/resources/users/GenerateAppPasswordRemoteOperationIT.java @@ -42,7 +42,7 @@ public void generateAppPassword() { client.setCredentials(newOwnCloudCredentials); - assertTrue(new ReadFolderRemoteOperation("/").execute(client).isSuccess()); + assertTrue(new ReadFolderRemoteOperation("/").execute(nextcloudClient).isSuccess()); // using app password to generate new password should fail assertFalse(new GenerateAppPasswordRemoteOperation().execute(client).isSuccess()); diff --git a/library/src/androidTest/java/com/owncloud/android/AbstractIT.java b/library/src/androidTest/java/com/owncloud/android/AbstractIT.java index 4aa0cb1b1..23b7c4c76 100644 --- a/library/src/androidTest/java/com/owncloud/android/AbstractIT.java +++ b/library/src/androidTest/java/com/owncloud/android/AbstractIT.java @@ -72,6 +72,7 @@ public abstract class AbstractIT { public static OwnCloudClient client; public static OwnCloudClient client2; protected static NextcloudClient nextcloudClient; + protected static NextcloudClient nextcloudClient2; protected static Context context; protected static Uri url; @@ -98,10 +99,15 @@ public static void beforeAll() throws InterruptedException, // and blocks all other clients, e.g. 3rd party apps using this lib OwnCloudClientManagerFactory.setUserAgent("Mozilla/5.0 (Android) Nextcloud-android/3.13.0"); + // Account 1 client = OwnCloudClientFactory.createOwnCloudClient(url, context, true); client.setCredentials(new OwnCloudBasicCredentials(loginName, password)); client.setUserId(loginName); // for test same as userId + String userId = loginName; // for test same as userId + String credentials = Credentials.basic(loginName, password); + nextcloudClient = new NextcloudClient(url, userId, credentials, context); + // second user to test internal sharing String loginName2 = arguments.getString("TEST_SERVER_USERNAME2"); String password2 = arguments.getString("TEST_SERVER_PASSWORD2"); @@ -110,9 +116,8 @@ public static void beforeAll() throws InterruptedException, client2.setCredentials(new OwnCloudBasicCredentials(loginName2, password2)); client2.setUserId(loginName2); // for test same as userId - String userId = loginName; // for test same as userId - String credentials = Credentials.basic(loginName, password); - nextcloudClient = new NextcloudClient(url, userId, credentials, context); + String credentials2 = Credentials.basic(loginName2, password2); + nextcloudClient2 = new NextcloudClient(url, loginName2, credentials2, context); waitForServer(client, url); testConnection(); @@ -264,12 +269,12 @@ public static File extractAsset(String fileName, Context context) throws IOExcep @After public void after() { - removeOnClient(client); - removeOnClient(client2); + removeOnClient(nextcloudClient); + removeOnClient(nextcloudClient2); } - private void removeOnClient(OwnCloudClient client) { - final var result = new ReadFolderRemoteOperation("/").execute(client); + private void removeOnClient(NextcloudClient nextcloudClient) { + final var result = new ReadFolderRemoteOperation("/").execute(nextcloudClient); assertTrue(result.getLogMessage(context), result.isSuccess()); for (Object object : result.getData()) { diff --git a/library/src/androidTest/java/com/owncloud/android/FileIT.java b/library/src/androidTest/java/com/owncloud/android/FileIT.java index a3e87e196..72c1f7b70 100644 --- a/library/src/androidTest/java/com/owncloud/android/FileIT.java +++ b/library/src/androidTest/java/com/owncloud/android/FileIT.java @@ -26,6 +26,7 @@ import com.owncloud.android.lib.resources.status.NextcloudVersion; import com.owncloud.android.lib.resources.status.OCCapability; +import org.jetbrains.annotations.NotNull; import org.junit.Test; import java.util.ArrayList; @@ -43,7 +44,7 @@ public void testCreateFolderSuccess() { assertTrue(new CreateFolderRemoteOperation(path, true).execute(client).isSuccess()); // verify folder - assertTrue(new ReadFolderRemoteOperation(path).execute(client).isSuccess()); + assertTrue(new ReadFolderRemoteOperation(path).execute(nextcloudClient).isSuccess()); // remove folder assertTrue(new RemoveFileRemoteOperation(path).execute(client).isSuccess()); @@ -71,7 +72,7 @@ public void testCreateNonExistingSubFolder() { assertTrue(new CreateFolderRemoteOperation(path, true).execute(client).isSuccess()); // verify folder - assertTrue(new ReadFolderRemoteOperation(path).execute(client).isSuccess()); + assertTrue(new ReadFolderRemoteOperation(path).execute(nextcloudClient).isSuccess()); // remove folder assertTrue(new RemoveFileRemoteOperation(top).execute(client).isSuccess()); @@ -94,17 +95,17 @@ public void testZeroSharees() { // create & verify folder String path = "/testFolder/"; assertTrue(new CreateFolderRemoteOperation(path, true).execute(client).isSuccess()); - assertTrue(new ReadFolderRemoteOperation(path).execute(client).isSuccess()); + assertTrue(new ReadFolderRemoteOperation(path).execute(nextcloudClient).isSuccess()); // verify - RemoteOperationResult result = new ReadFolderRemoteOperation("/").execute(client); + RemoteOperationResult<@NotNull List> result = new ReadFolderRemoteOperation("/").execute(nextcloudClient); assertTrue(result.isSuccess()); - RemoteFile parentFolder = (RemoteFile) result.getData().get(0); + RemoteFile parentFolder = result.getResultData().get(0); assertEquals("/", parentFolder.getRemotePath()); - for (int i = 1; i < result.getData().size(); i++) { - RemoteFile child = (RemoteFile) result.getData().get(i); + for (int i = 1; i < result.getResultData().size(); i++) { + RemoteFile child = (RemoteFile) result.getResultData().get(i); if (path.equals(child.getRemotePath())) { assertEquals(0, child.getSharees().length); @@ -117,7 +118,7 @@ public void testShareViaLinkSharees() { // create & verify folder String path = "/testFolder/"; assertTrue(new CreateFolderRemoteOperation(path, true).execute(client).isSuccess()); - assertTrue(new ReadFolderRemoteOperation(path).execute(client).isSuccess()); + assertTrue(new ReadFolderRemoteOperation(path).execute(nextcloudClient).isSuccess()); // share folder assertTrue(new CreateShareRemoteOperation(path, @@ -129,7 +130,7 @@ public void testShareViaLinkSharees() { .execute(client).isSuccess()); // verify - final var result = new ReadFolderRemoteOperation("/").execute(client); + final var result = new ReadFolderRemoteOperation("/").execute(nextcloudClient); assertTrue(result.isSuccess()); RemoteFile parentFolder = (RemoteFile) result.getData().get(0); @@ -149,7 +150,7 @@ public void testShareToGroupSharees() { // create & verify folder String path = "/testFolder/"; assertTrue(new CreateFolderRemoteOperation(path, true).execute(client).isSuccess()); - assertTrue(new ReadFolderRemoteOperation(path).execute(client).isSuccess()); + assertTrue(new ReadFolderRemoteOperation(path).execute(nextcloudClient).isSuccess()); ShareeUser sharee = new ShareeUser("users", "", ShareType.GROUP); @@ -169,7 +170,7 @@ public void testShareToGroupSharees() { .execute(client).isSuccess()); // verify - RemoteOperationResult result = new ReadFolderRemoteOperation("/").execute(client); + RemoteOperationResult result = new ReadFolderRemoteOperation("/").execute(nextcloudClient); assertTrue(result.isSuccess()); RemoteFile parentFolder = (RemoteFile) result.getData().get(0); @@ -190,7 +191,7 @@ public void testOneSharees() { // create & verify folder String path = "/testFolder/"; assertTrue(new CreateFolderRemoteOperation(path, true).execute(client).isSuccess()); - assertTrue(new ReadFolderRemoteOperation(path).execute(client).isSuccess()); + assertTrue(new ReadFolderRemoteOperation(path).execute(nextcloudClient).isSuccess()); ShareeUser sharee = new ShareeUser("user1", "User One", ShareType.USER); @@ -204,7 +205,7 @@ public void testOneSharees() { .execute(client).isSuccess()); // verify - RemoteOperationResult result = new ReadFolderRemoteOperation("/").execute(client); + RemoteOperationResult result = new ReadFolderRemoteOperation("/").execute(nextcloudClient); assertTrue(result.isSuccess()); RemoteFile parentFolder = (RemoteFile) result.getData().get(0); @@ -225,7 +226,7 @@ public void testTwoShareesOnParent() { // create & verify folder String path = "/testFolder/"; assertTrue(new CreateFolderRemoteOperation(path, true).execute(client).isSuccess()); - assertTrue(new ReadFolderRemoteOperation(path).execute(client).isSuccess()); + assertTrue(new ReadFolderRemoteOperation(path).execute(nextcloudClient).isSuccess()); List sharees = new ArrayList<>(); sharees.add(new ShareeUser("user1", "User One", ShareType.USER)); @@ -249,7 +250,7 @@ public void testTwoShareesOnParent() { .execute(client).isSuccess()); // verify - RemoteOperationResult result = new ReadFolderRemoteOperation("/").execute(client); + RemoteOperationResult result = new ReadFolderRemoteOperation("/").execute(nextcloudClient); assertTrue(result.isSuccess()); RemoteFile parentFolder = (RemoteFile) result.getData().get(0); @@ -273,7 +274,7 @@ public void testTwoSharees() { // create & verify folder String path = "/testFolder/"; assertTrue(new CreateFolderRemoteOperation(path, true).execute(client).isSuccess()); - assertTrue(new ReadFolderRemoteOperation(path).execute(client).isSuccess()); + assertTrue(new ReadFolderRemoteOperation(path).execute(nextcloudClient).isSuccess()); List sharees = new ArrayList<>(); sharees.add(new ShareeUser("user1", "User One", ShareType.USER)); @@ -297,7 +298,7 @@ public void testTwoSharees() { .execute(client).isSuccess()); // verify - RemoteOperationResult result = new ReadFolderRemoteOperation(path).execute(client); + RemoteOperationResult result = new ReadFolderRemoteOperation(path).execute(nextcloudClient); assertTrue(result.isSuccess()); RemoteFile folder = (RemoteFile) result.getData().get(0); @@ -315,7 +316,7 @@ public void testLocalID() { String path = "/testFolder/"; assertTrue(new CreateFolderRemoteOperation(path, true).execute(client).isSuccess()); - RemoteOperationResult result = new ReadFolderRemoteOperation(path).execute(client); + RemoteOperationResult result = new ReadFolderRemoteOperation(path).execute(nextcloudClient); assertTrue(result.isSuccess()); RemoteFile folder = (RemoteFile) result.getData().get(0); diff --git a/library/src/androidTest/java/com/owncloud/android/lib/resources/files/ReadFolderRemoteOperationIT.kt b/library/src/androidTest/java/com/owncloud/android/lib/resources/files/ReadFolderRemoteOperationIT.kt index 17b804192..d7823f736 100644 --- a/library/src/androidTest/java/com/owncloud/android/lib/resources/files/ReadFolderRemoteOperationIT.kt +++ b/library/src/androidTest/java/com/owncloud/android/lib/resources/files/ReadFolderRemoteOperationIT.kt @@ -9,11 +9,19 @@ package com.owncloud.android.lib.resources.files import com.nextcloud.test.RandomStringGenerator import com.owncloud.android.AbstractIT -import com.owncloud.android.lib.resources.files.model.RemoteFile +import com.owncloud.android.lib.common.network.WebdavEntry import com.owncloud.android.lib.resources.status.NextcloudVersion import com.owncloud.android.lib.resources.tags.CreateTagRemoteOperation import com.owncloud.android.lib.resources.tags.GetTagsRemoteOperation +import com.owncloud.android.lib.resources.tags.GetTagsRemoteOperationIT.Companion.TAG_URL import com.owncloud.android.lib.resources.tags.PutTagRemoteOperation +import junit.framework.TestCase +import org.apache.commons.httpclient.HttpStatus +import org.apache.jackrabbit.webdav.client.methods.PropPatchMethod +import org.apache.jackrabbit.webdav.property.DavPropertyNameSet +import org.apache.jackrabbit.webdav.property.DavPropertySet +import org.apache.jackrabbit.webdav.property.DefaultDavProperty +import org.apache.jackrabbit.webdav.xml.Namespace import org.junit.Assert.assertEquals import org.junit.Assert.assertTrue import org.junit.Test @@ -24,6 +32,7 @@ class ReadFolderRemoteOperationIT : AbstractIT() { } @Test + @Suppress("LongMethod") fun readRemoteFolderWithContent() { val remotePath = "/test/" @@ -37,65 +46,96 @@ class ReadFolderRemoteOperationIT : AbstractIT() { .isSuccess ) - var result = ReadFolderRemoteOperation(remotePath).execute(client) + var result = ReadFolderRemoteOperation(remotePath).execute(nextcloudClient) assertTrue(result.isSuccess) - assertEquals(2, result.data.size) + assertEquals(2, result.resultData.size) // tag testing only on NC27+ testOnlyOnServer(NextcloudVersion.nextcloud_27) // Folder - var remoteFolder = result.data[0] as RemoteFile + var remoteFolder = result.resultData[0] assertEquals(remotePath, remoteFolder.remotePath) - assertEquals(0, remoteFolder.tags?.size) + assertEquals(0, remoteFolder.tags.size) // File - var remoteFile = result.data[1] as RemoteFile + var remoteFile = result.resultData[1] assertEquals(remotePath + "1.txt", remoteFile.remotePath) - assertEquals(0, remoteFile.tags?.size) + assertEquals(0, remoteFile.tags.size) // create tag - val tag1 = "a" + RandomStringGenerator.make(TAG_LENGTH) - val tag2 = "b" + RandomStringGenerator.make(TAG_LENGTH) - assertTrue(CreateTagRemoteOperation(tag1).execute(nextcloudClient).isSuccess) - assertTrue(CreateTagRemoteOperation(tag2).execute(nextcloudClient).isSuccess) + val name1 = "a" + RandomStringGenerator.make(TAG_LENGTH) + val color1 = "#001122" + + val name2 = "b" + RandomStringGenerator.make(TAG_LENGTH) + + assertTrue(CreateTagRemoteOperation(name1).execute(nextcloudClient).isSuccess) + assertTrue(CreateTagRemoteOperation(name2).execute(nextcloudClient).isSuccess) // list tags val tags = GetTagsRemoteOperation().execute(client).resultData + val tag1 = tags.find { it.name == name1 } + val tag2 = tags.find { it.name == name2 } + + // add color + val newProps = DavPropertySet() + newProps.add( + DefaultDavProperty( + "nc:color", + color1.replace("#", ""), + Namespace.getNamespace(WebdavEntry.NAMESPACE_NC) + ) + ) + val propPatchMethod = + PropPatchMethod( + client2.baseUri.toString() + TAG_URL + tag1?.id, + newProps, + DavPropertyNameSet() + ) + val propPatchStatus = client2.executeMethod(propPatchMethod) + propPatchMethod.releaseConnection() + TestCase.assertEquals(HttpStatus.SC_MULTI_STATUS, propPatchStatus) // add tag assertTrue( PutTagRemoteOperation( - tags[0].id, + tag1?.id.orEmpty(), remoteFile.localId ).execute(nextcloudClient).isSuccess ) assertTrue( PutTagRemoteOperation( - tags[1].id, + tag2?.id.orEmpty(), remoteFile.localId ).execute(nextcloudClient).isSuccess ) // check again - result = ReadFolderRemoteOperation(remotePath).execute(client) + result = ReadFolderRemoteOperation(remotePath).execute(nextcloudClient) assertTrue(result.isSuccess) - assertEquals(2, result.data.size) + assertEquals(2, result.resultData.size) // Folder - remoteFolder = result.data[0] as RemoteFile + remoteFolder = result.resultData[0] assertEquals(remotePath, remoteFolder.remotePath) - assertEquals(0, remoteFolder.tags?.size) + assertEquals(0, remoteFolder.tags.size) // File - remoteFile = result.data[1] as RemoteFile + remoteFile = result.resultData[1] assertEquals(remotePath + "1.txt", remoteFile.remotePath) - assertEquals(2, remoteFile.tags?.size) + assertEquals(2, remoteFile.tags.size) + + remoteFile.tags.sortBy { it?.name } + + // tag1 + val resultTag1 = remoteFile.tags[0] + assertEquals(name1, resultTag1?.name) + assertEquals(color1, resultTag1?.color) - remoteFile.tags?.sortBy { it?.name } - assertEquals(tag1, remoteFile.tags?.get(0)?.name) - assertEquals(tag2, remoteFile.tags?.get(1)?.name) + // tag2 + val resultTag2 = remoteFile.tags[1] + assertEquals(name2, resultTag2?.name) } } diff --git a/library/src/androidTest/java/com/owncloud/android/lib/resources/files/UploadFileRemoteOperationIT.kt b/library/src/androidTest/java/com/owncloud/android/lib/resources/files/UploadFileRemoteOperationIT.kt index 24ffc4659..dcfa91933 100644 --- a/library/src/androidTest/java/com/owncloud/android/lib/resources/files/UploadFileRemoteOperationIT.kt +++ b/library/src/androidTest/java/com/owncloud/android/lib/resources/files/UploadFileRemoteOperationIT.kt @@ -66,7 +66,7 @@ class UploadFileRemoteOperationIT : AbstractIT() { ) // ReadFolderRemoteOperation - var result2 = ReadFolderRemoteOperation(remotePath).execute(client) + var result2 = ReadFolderRemoteOperation(remotePath).execute(nextcloudClient) assertTrue(result2.isSuccess) remoteFile = result2.data[0] as RemoteFile diff --git a/library/src/androidTest/java/com/owncloud/android/lib/resources/tags/DeleteTagRemoteOperationIT.kt b/library/src/androidTest/java/com/owncloud/android/lib/resources/tags/DeleteTagRemoteOperationIT.kt index 452922c22..ce3d15789 100644 --- a/library/src/androidTest/java/com/owncloud/android/lib/resources/tags/DeleteTagRemoteOperationIT.kt +++ b/library/src/androidTest/java/com/owncloud/android/lib/resources/tags/DeleteTagRemoteOperationIT.kt @@ -54,7 +54,7 @@ class DeleteTagRemoteOperationIT : AbstractIT() { ) // verify the tag is on the folder - var rootMetadata = ReadFolderRemoteOperation("/").execute(client) + var rootMetadata = ReadFolderRemoteOperation("/").execute(nextcloudClient) var folderTags = (rootMetadata.data as ArrayList) .find { it.remotePath == folder } @@ -70,7 +70,7 @@ class DeleteTagRemoteOperationIT : AbstractIT() { ) // verify the tag is no longer on the folder - rootMetadata = ReadFolderRemoteOperation("/").execute(client) + rootMetadata = ReadFolderRemoteOperation("/").execute(nextcloudClient) folderTags = (rootMetadata.data as ArrayList) .find { it.remotePath == folder } diff --git a/library/src/androidTest/java/com/owncloud/android/lib/resources/tags/GetTagsRemoteOperationIT.kt b/library/src/androidTest/java/com/owncloud/android/lib/resources/tags/GetTagsRemoteOperationIT.kt index 6df323fde..e30d7f371 100644 --- a/library/src/androidTest/java/com/owncloud/android/lib/resources/tags/GetTagsRemoteOperationIT.kt +++ b/library/src/androidTest/java/com/owncloud/android/lib/resources/tags/GetTagsRemoteOperationIT.kt @@ -13,7 +13,6 @@ import com.owncloud.android.lib.common.network.WebdavEntry import com.owncloud.android.lib.resources.files.CreateFolderRemoteOperation import com.owncloud.android.lib.resources.files.ReadFileRemoteOperation import com.owncloud.android.lib.resources.files.ReadFolderRemoteOperation -import com.owncloud.android.lib.resources.files.model.RemoteFile import com.owncloud.android.lib.resources.status.NextcloudVersion import junit.framework.TestCase.assertEquals import junit.framework.TestCase.assertNotNull @@ -123,9 +122,9 @@ class GetTagsRemoteOperationIT : AbstractIT() { ) // read metadata - val rootMetadata = ReadFolderRemoteOperation("/").execute(client) + val rootMetadata = ReadFolderRemoteOperation("/").execute(nextcloudClient) val tags = - (rootMetadata.data as ArrayList) + rootMetadata.resultData .find { it.remotePath == tagFolder } ?.tags tags?.sortBy { it?.color } diff --git a/library/src/main/java/com/owncloud/android/lib/resources/files/ReadFolderRemoteOperation.kt b/library/src/main/java/com/owncloud/android/lib/resources/files/ReadFolderRemoteOperation.kt index b08eca2db..dd84ca3b2 100644 --- a/library/src/main/java/com/owncloud/android/lib/resources/files/ReadFolderRemoteOperation.kt +++ b/library/src/main/java/com/owncloud/android/lib/resources/files/ReadFolderRemoteOperation.kt @@ -7,6 +7,11 @@ */ package com.owncloud.android.lib.resources.files +import androidx.core.net.toUri +import at.bitfire.dav4jvm.DavCollection +import at.bitfire.dav4jvm.Response +import com.nextcloud.common.NextcloudClient +import com.nextcloud.common.WebDavUtils import com.owncloud.android.lib.common.OwnCloudClient import com.owncloud.android.lib.common.network.WebdavEntry import com.owncloud.android.lib.common.network.WebdavUtils @@ -14,6 +19,7 @@ import com.owncloud.android.lib.common.operations.RemoteOperation import com.owncloud.android.lib.common.operations.RemoteOperationResult import com.owncloud.android.lib.common.utils.Log_OC import com.owncloud.android.lib.resources.files.model.RemoteFile +import okhttp3.HttpUrl.Companion.toHttpUrl import org.apache.commons.httpclient.HttpStatus import org.apache.jackrabbit.webdav.DavConstants import org.apache.jackrabbit.webdav.MultiStatus @@ -21,10 +27,10 @@ import org.apache.jackrabbit.webdav.client.methods.PropFindMethod class ReadFolderRemoteOperation( private val remotePath: String -) : RemoteOperation() { +) : RemoteOperation>() { @Deprecated("Deprecated in Java") @Suppress("TooGenericExceptionCaught", "DEPRECATION") - override fun run(client: OwnCloudClient): RemoteOperationResult { + override fun run(client: OwnCloudClient): RemoteOperationResult> { var query: PropFindMethod? = null val result = @@ -39,7 +45,7 @@ class ReadFolderRemoteOperation( if (status == HttpStatus.SC_MULTI_STATUS || status == HttpStatus.SC_OK) { val folderAndFiles = readData(query.responseBodyAsMultiStatus, client) - RemoteOperationResult(true, query).apply { data = folderAndFiles } + RemoteOperationResult>(true, query).apply { resultData = folderAndFiles } } else { client.exhaustResponse(query.responseBodyAsStream) RemoteOperationResult(false, query) @@ -56,12 +62,49 @@ class ReadFolderRemoteOperation( return result.also { log(it) } } - fun isMultiStatus(status: Int): Boolean = status == HttpStatus.SC_MULTI_STATUS + @Suppress("SpreadOperator", "Detekt.TooGenericExceptionCaught") + override fun run(client: NextcloudClient): RemoteOperationResult> { + WebDavUtils.registerCustomFactories() + + val result: MutableList = mutableListOf() + val location = client.getFilesDavUri(remotePath).toHttpUrl() + + val davCollection = DavCollection(client.disabledRedirectClient(), location) + val filesDavUri = client.getFilesDavUri("/").toUri() + + try { + davCollection.propfind(depth = 1, *WebDavUtils.PROPERTYSETS.ALL) { response, hrefRelation -> + if (response.isSuccess()) { + when (hrefRelation) { + Response.HrefRelation.MEMBER -> { + result.add(WebDavUtils.parseResponse(response, filesDavUri)) + } + + Response.HrefRelation.SELF, Response.HrefRelation.OTHER -> { + result.add(WebDavUtils.parseResponse(response, filesDavUri)) + } + + else -> {} + } + } + } + + return if (result == null) { + RemoteOperationResult>(RemoteOperationResult.ResultCode.UNKNOWN_ERROR) + } else { + RemoteOperationResult>(RemoteOperationResult.ResultCode.OK).apply { + resultData = result + } + } + } catch (e: Exception) { + return RemoteOperationResult>(e) + } + } private fun readData( remoteData: MultiStatus, client: OwnCloudClient - ): ArrayList { + ): ArrayList { val responses = remoteData.responses val davUriPath = client.filesDavUri.encodedPath.orEmpty() @@ -69,7 +112,7 @@ class ReadFolderRemoteOperation( } @Suppress("DEPRECATION") - private fun log(result: RemoteOperationResult) { + private fun log(result: RemoteOperationResult>) { val message = "Synchronized $remotePath: ${result.logMessage}" when { result.isSuccess -> Log_OC.i(TAG, message) diff --git a/library/src/main/java/com/owncloud/android/lib/resources/files/webdav/NCTags.kt b/library/src/main/java/com/owncloud/android/lib/resources/files/webdav/NCTags.kt index c7d861d0c..77634040e 100644 --- a/library/src/main/java/com/owncloud/android/lib/resources/files/webdav/NCTags.kt +++ b/library/src/main/java/com/owncloud/android/lib/resources/files/webdav/NCTags.kt @@ -79,16 +79,12 @@ class NCTags private constructor( while (!(eventType == XmlPullParser.END_TAG && parser.depth == depth)) { if (eventType != XmlPullParser.TEXT) { when (parser.propertyName().toString()) { - "http://nextcloud.org/ns:id" -> { - id = readText(parser).orEmpty() - } - - "http://nextcloud.org/ns:name" -> { + "http://nextcloud.org/ns:system-tag" -> { + color = "#" + parser.getAttributeValue("http://nextcloud.org/ns", "color") + id = parser.getAttributeValue("http://owncloud.org/ns", "id") name = readText(parser).orEmpty() - } - "http://nextcloud.org/ns:color" -> { - color = readText(parser).orEmpty() + return Tag(id, name, color) } } }