Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit bfa547cd authored by alperozturk's avatar alperozturk
Browse files

add updateShareInformation

parent 39b1265a
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ import com.nextcloud.android.sso.api.EmptyResponse
import com.owncloud.android.lib.resources.shares.OCShare
import it.niedermann.owncloud.notes.share.model.CreateShareRequest
import it.niedermann.owncloud.notes.share.model.CreateShareResponse
import it.niedermann.owncloud.notes.share.model.UpdateShareInformationRequest
import it.niedermann.owncloud.notes.share.model.UpdateShareRequest
import it.niedermann.owncloud.notes.shared.model.OcsResponse
import retrofit2.Call
@@ -12,6 +13,7 @@ import retrofit2.http.DELETE
import retrofit2.http.GET
import retrofit2.http.PATCH
import retrofit2.http.POST
import retrofit2.http.Path
import retrofit2.http.Query

interface ShareAPI {
@@ -43,4 +45,10 @@ interface ShareAPI {

    @POST("shares")
    fun addShare(@Body request: CreateShareRequest): Call<OcsResponse<CreateShareResponse>>

    @PATCH("shares/{shareId}")
    fun updateShareInfo(
        @Path("shareId") shareId: Long,
        @Body request: UpdateShareInformationRequest
    ): Call<OcsResponse<CreateShareResponse>>
}
+25 −13
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ import it.niedermann.owncloud.notes.share.dialog.ExpirationDatePickerDialogFragm
import it.niedermann.owncloud.notes.share.helper.SharingMenuHelper
import it.niedermann.owncloud.notes.share.repository.ShareRepository
import it.niedermann.owncloud.notes.shared.util.DisplayUtils
import it.niedermann.owncloud.notes.shared.util.clipboard.ClipboardUtil
import it.niedermann.owncloud.notes.shared.util.extensions.getParcelableArgument
import it.niedermann.owncloud.notes.shared.util.extensions.getSerializableArgument
import kotlinx.coroutines.Dispatchers
@@ -524,21 +525,32 @@ class NoteShareDetailActivity : BrandedActivity(),
    }

    private fun updateShare() {
        /*
        fileOperationsHelper?.updateShareInformation(
            share,
            permission,
            binding.shareProcessHideDownloadCheckbox.isChecked,
        lifecycleScope.launch(Dispatchers.IO) {
            val ssoAcc =
                SingleAccountHelper.getCurrentSingleSignOnAccount(this@NoteShareDetailActivity)

            if (share == null) {
                Log_OC.d(TAG, "Share is null cannot updateShare")
                return@launch
            }

            repository.updateShareInformation(
                ssoAcc,
                share!!.id,
                binding.shareProcessEnterPassword.text.toString().trim(),
                chosenExpDateInMills,
                permission,
                binding.shareProcessHideDownloadCheckbox.isChecked,
                "", // TODO: Check note?
                binding.shareProcessChangeName.text.toString().trim()
            )

        // copy the share link if available
            withContext(Dispatchers.Main) {
                if (!TextUtils.isEmpty(share?.shareLink)) {
            ClipboardUtil.copyToClipboard(this, share?.shareLink)
                    ClipboardUtil.copyToClipboard(this@NoteShareDetailActivity, share?.shareLink)
                }
            }
        }
         */
    }

    /**
+0 −31
Original line number Diff line number Diff line
@@ -5,149 +5,118 @@ import com.google.gson.annotations.SerializedName

data class CreateShareResponse(
    @Expose
    @JvmField
    val id: String,

    @Expose
    @JvmField
    @SerializedName("share_type")
    val shareType: Long,

    @Expose
    @JvmField
    @SerializedName("uid_owner")
    val uidOwner: String,

    @Expose
    @JvmField
    @SerializedName("displayname_owner")
    val displaynameOwner: String,

    @Expose
    @JvmField
    val permissions: Long,

    @Expose
    @JvmField
    @SerializedName("can_edit")
    val canEdit: Boolean,

    @Expose
    @JvmField
    @SerializedName("can_delete")
    val canDelete: Boolean,

    @Expose
    @JvmField
    val stime: Long,

    @Expose
    @JvmField
    @SerializedName("uid_file_owner")
    val uidFileOwner: String,

    @Expose
    @JvmField
    val note: String,

    @Expose
    @JvmField
    val label: String,

    @Expose
    @JvmField
    @SerializedName("displayname_file_owner")
    val displaynameFileOwner: String,

    @Expose
    @JvmField
    val path: String,

    @Expose
    @JvmField
    @SerializedName("item_type")
    val itemType: String,

    @Expose
    @JvmField
    @SerializedName("item_permissions")
    val itemPermissions: Long,

    @Expose
    @JvmField
    @SerializedName("is-mount-root")
    val isMountRoot: Boolean,

    @Expose
    @JvmField
    @SerializedName("mount-type")
    val mountType: String,

    @Expose
    @JvmField
    val mimetype: String,

    @Expose
    @JvmField
    @SerializedName("has_preview")
    val hasPreview: Boolean,

    @Expose
    @JvmField
    @SerializedName("storage_id")
    val storageId: String,

    @Expose
    @JvmField
    val storage: Long,

    @Expose
    @JvmField
    @SerializedName("item_source")
    val itemSource: Long,

    @Expose
    @JvmField
    @SerializedName("file_source")
    val fileSource: Long,

    @Expose
    @JvmField
    @SerializedName("file_parent")
    val fileParent: Long,

    @Expose
    @JvmField
    @SerializedName("file_target")
    val fileTarget: String,

    @Expose
    @JvmField
    @SerializedName("item_size")
    val itemSize: Long,

    @Expose
    @JvmField
    @SerializedName("item_mtime")
    val itemMtime: Long,

    @Expose
    @JvmField
    @SerializedName("share_with")
    val shareWith: String,

    @Expose
    @JvmField
    @SerializedName("share_with_displayname")
    val shareWithDisplayname: String,

    @Expose
    @JvmField
    @SerializedName("mail_send")
    val mailSend: Long,

    @Expose
    @JvmField
    @SerializedName("hide_download")
    val hideDownload: Long,
)
+27 −0
Original line number Diff line number Diff line
package it.niedermann.owncloud.notes.share.model

import com.google.gson.annotations.Expose
import com.google.gson.annotations.SerializedName

data class UpdateShareInformationRequest(
    @Expose
    @SerializedName("shareId") val shareId: String,

    @Expose
    @SerializedName("password") val password: String? = null,

    @Expose
    @SerializedName("expireDate") val expireDate: String? = null,

    @Expose
    @SerializedName("permissions") val permissions: Int? = null,

    @Expose
    @SerializedName("hideDownload") val hideDownload: Boolean? = null,

    @Expose
    @SerializedName("note") val note: String? = null,

    @Expose
    @SerializedName("label") val label: String? = null
)
+46 −0
Original line number Diff line number Diff line
package it.niedermann.owncloud.notes.share.repository

import android.content.Context
import android.icu.text.SimpleDateFormat
import android.util.Log
import com.nextcloud.android.sso.api.EmptyResponse
import com.nextcloud.android.sso.model.SingleSignOnAccount
@@ -12,10 +13,13 @@ import it.niedermann.owncloud.notes.persistence.ApiProvider
import it.niedermann.owncloud.notes.persistence.NotesRepository
import it.niedermann.owncloud.notes.persistence.entity.Note
import it.niedermann.owncloud.notes.share.model.CreateShareRequest
import it.niedermann.owncloud.notes.share.model.UpdateShareInformationRequest
import it.niedermann.owncloud.notes.share.model.UpdateShareRequest
import it.niedermann.owncloud.notes.shared.model.ApiVersion
import org.json.JSONArray
import org.json.JSONObject
import java.util.Date
import java.util.Locale

class ShareRepository(private val applicationContext: Context) {

@@ -211,4 +215,46 @@ class ShareRepository(private val applicationContext: Context) {

        return response.isSuccessful
    }

    fun updateShareInformation(
        account: SingleSignOnAccount,
        shareId: Long,
        password: String? = null,
        expirationDateMillis: Long? = null,
        permissions: Int? = null,
        hideFileDownload: Boolean? = null,
        note: String? = null,
        label: String? = null
    ): Boolean {
        val shareAPI = apiProvider.getShareAPI(applicationContext, account)

        val expirationDate = expirationDateMillis?.let {
            SimpleDateFormat("yyyy-MM-dd", Locale.US).format(Date(it))
        }

        val requestBody = UpdateShareInformationRequest(
            shareId = shareId.toString(),
            password = password,
            expireDate = expirationDate,
            permissions = permissions,
            hideDownload = hideFileDownload,
            note = note,
            label = label
        )

        return try {
            val call = shareAPI.updateShareInfo(shareId, requestBody)
            val response = call.execute()
            if (response.isSuccessful) {
                Log.d("UpdateShare", "Share updated successfully: ${response.body()}")
            } else {
                Log.e("UpdateShare", "Failed to update share: ${response.errorBody()?.string()}")
            }
            response.isSuccessful
        } catch (e: Exception) {
            Log.e("UpdateShare", "Exception while updating share", e)
            false
        }
    }

}