1
0
mirror of https://github.com/owncloud/android-library.git synced 2025-06-07 16:06:08 +00:00

Fixed some bugs on how to create shares.

This commit is contained in:
Fernando Sanz 2021-08-31 08:52:55 +02:00
parent 45fb12df0e
commit 037a2b30df
2 changed files with 34 additions and 6 deletions

View File

@ -24,7 +24,7 @@
package com.owncloud.android.lib.resources.shares package com.owncloud.android.lib.resources.shares
import java.io.File import com.owncloud.android.lib.resources.shares.responses.ItemType
/** /**
* Contains the data of a Share from the Share API * Contains the data of a Share from the Share API
@ -38,6 +38,7 @@ data class RemoteShare(
var shareWith: String = "", var shareWith: String = "",
var path: String = "", var path: String = "",
var token: String = "", var token: String = "",
var itemType: String = "",
var sharedWithDisplayName: String = "", var sharedWithDisplayName: String = "",
var sharedWithAdditionalInfo: String = "", var sharedWithAdditionalInfo: String = "",
var name: String = "", var name: String = "",
@ -46,7 +47,7 @@ data class RemoteShare(
var permissions: Int = DEFAULT_PERMISSION, var permissions: Int = DEFAULT_PERMISSION,
var sharedDate: Long = INIT_SHARED_DATE, var sharedDate: Long = INIT_SHARED_DATE,
var expirationDate: Long = INIT_EXPIRATION_DATE_IN_MILLIS, var expirationDate: Long = INIT_EXPIRATION_DATE_IN_MILLIS,
var isFolder: Boolean = path.endsWith(File.separator) var isFolder: Boolean = (itemType == ItemType.FOLDER.fileValue)
) { ) {
companion object { companion object {

View File

@ -23,34 +23,57 @@
package com.owncloud.android.lib.resources.shares.responses package com.owncloud.android.lib.resources.shares.responses
import com.owncloud.android.lib.common.network.WebdavUtils
import com.owncloud.android.lib.resources.shares.RemoteShare import com.owncloud.android.lib.resources.shares.RemoteShare
import com.owncloud.android.lib.resources.shares.RemoteShare.Companion.DEFAULT_PERMISSION import com.owncloud.android.lib.resources.shares.RemoteShare.Companion.DEFAULT_PERMISSION
import com.owncloud.android.lib.resources.shares.RemoteShare.Companion.INIT_EXPIRATION_DATE_IN_MILLIS import com.owncloud.android.lib.resources.shares.RemoteShare.Companion.INIT_EXPIRATION_DATE_IN_MILLIS
import com.owncloud.android.lib.resources.shares.RemoteShare.Companion.INIT_SHARED_DATE import com.owncloud.android.lib.resources.shares.RemoteShare.Companion.INIT_SHARED_DATE
import com.owncloud.android.lib.resources.shares.ShareType import com.owncloud.android.lib.resources.shares.ShareType
import com.squareup.moshi.Json
import com.squareup.moshi.JsonClass import com.squareup.moshi.JsonClass
import java.io.File import java.io.File
@JsonClass(generateAdapter = true) @JsonClass(generateAdapter = true)
data class ShareItem( data class ShareItem(
val id: String? = null, val id: String? = null,
@Json(name = "share_with")
val shareWith: String? = null, val shareWith: String? = null,
val path: String? = null, val path: String? = null,
val token: String? = null, val token: String? = null,
@Json(name = "item_type")
val itemType: String? = null,
@Json(name = "share_with_displayname")
val sharedWithDisplayName: String? = null, val sharedWithDisplayName: String? = null,
@Json(name = "share_with_additional_info")
val sharedWithAdditionalInfo: String? = null, val sharedWithAdditionalInfo: String? = null,
val name: String? = null, val name: String? = null,
@Json(name = "url")
val shareLink: String? = null, val shareLink: String? = null,
@Json(name = "share_type")
val shareType: Int? = null, val shareType: Int? = null,
val permissions: Int? = null, val permissions: Int? = null,
@Json(name = "stime")
val sharedDate: Long? = null, val sharedDate: Long? = null,
val expirationDate: Long? = null,
@Json(name = "expiration")
val expirationDate: String? = null,
) { ) {
fun toRemoteShare() = RemoteShare( fun toRemoteShare() = RemoteShare(
id = id ?: "0", id = id ?: "0",
shareWith = shareWith.orEmpty(), shareWith = shareWith.orEmpty(),
path = path.orEmpty(), path = if (itemType == ItemType.FOLDER.fileValue) path.plus(File.separator) else path.orEmpty(),
token = token.orEmpty(), token = token.orEmpty(),
itemType = itemType.orEmpty(),
sharedWithDisplayName = sharedWithDisplayName.orEmpty(), sharedWithDisplayName = sharedWithDisplayName.orEmpty(),
sharedWithAdditionalInfo = sharedWithAdditionalInfo.orEmpty(), sharedWithAdditionalInfo = sharedWithAdditionalInfo.orEmpty(),
name = name.orEmpty(), name = name.orEmpty(),
@ -58,7 +81,11 @@ data class ShareItem(
shareType = ShareType.values().firstOrNull { it.value == shareType } ?: ShareType.UNKNOWN, shareType = ShareType.values().firstOrNull { it.value == shareType } ?: ShareType.UNKNOWN,
permissions = permissions ?: DEFAULT_PERMISSION, permissions = permissions ?: DEFAULT_PERMISSION,
sharedDate = sharedDate ?: INIT_SHARED_DATE, sharedDate = sharedDate ?: INIT_SHARED_DATE,
expirationDate = expirationDate ?: INIT_EXPIRATION_DATE_IN_MILLIS, expirationDate = expirationDate?.let {
isFolder = path?.endsWith(File.separator) ?: false WebdavUtils.parseResponseDate(it)?.time
} ?: INIT_EXPIRATION_DATE_IN_MILLIS,
isFolder = itemType?.equals(ItemType.FOLDER.fileValue) ?: false
) )
} }
enum class ItemType(val fileValue: String) { FILE("file"), FOLDER("folder") }