From e1de2607095bbf7944a0b191ff9976b8862a2d8d Mon Sep 17 00:00:00 2001
From: Juan Carlos Garrote <juanca_arrabal@hotmail.com>
Date: Thu, 18 May 2023 11:15:16 +0200
Subject: [PATCH] Send space param in public share creation request

---
 .../resources/shares/CreateRemoteShareOperation.kt   | 12 ++++++++++--
 .../lib/resources/shares/services/ShareService.kt    |  1 +
 .../shares/services/implementation/OCShareService.kt |  4 +++-
 3 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/CreateRemoteShareOperation.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/CreateRemoteShareOperation.kt
index fed12f83..6b5ef143 100644
--- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/CreateRemoteShareOperation.kt
+++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/CreateRemoteShareOperation.kt
@@ -3,7 +3,8 @@
  *   @author David A. Velasco
  *   @author David González Verdugo
  *   @author Fernando Sanz Velasco
- *   Copyright (C) 2021 ownCloud GmbH
+ *   @author Juan Carlos Garrote Gascón
+ *   Copyright (C) 2023 ownCloud GmbH
  *
  *   Permission is hereby granted, free of charge, to any person obtaining a copy
  *   of this software and associated documentation files (the "Software"), to deal
@@ -57,6 +58,7 @@ import java.util.Locale
  * @author David A. Velasco
  * @author David González Verdugo
  * @author Fernando Sanz Velasco
+ * @author Juan Carlos Garrote Gascón
  */
 
 /**
@@ -80,7 +82,8 @@ class CreateRemoteShareOperation(
     private val remoteFilePath: String,
     private val shareType: ShareType,
     private val shareWith: String,
-    private val permissions: Int
+    private val permissions: Int,
+    private val spaceId: String? = null,
 ) : RemoteOperation<ShareResponse>() {
 
     var name = "" // Name to set for the public link
@@ -145,6 +148,10 @@ class CreateRemoteShareOperation(
             formBodyBuilder.add(PARAM_NAME, name)
         }
 
+        if (spaceId != null) {
+            formBodyBuilder.add(PARAM_SPACE, spaceId)
+        }
+
         if (expirationDateInMillis > INIT_EXPIRATION_DATE_IN_MILLIS) {
             val dateFormat = SimpleDateFormat(FORMAT_EXPIRATION_DATE, Locale.getDefault())
             val expirationDate = Calendar.getInstance()
@@ -204,6 +211,7 @@ class CreateRemoteShareOperation(
         private const val PARAM_SHARE_WITH = "shareWith"
         private const val PARAM_PASSWORD = "password"
         private const val PARAM_PERMISSIONS = "permissions"
+        private const val PARAM_SPACE = "space"
 
         //Arguments - constant values
         private const val FORMAT_EXPIRATION_DATE = "yyyy-MM-dd"
diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/services/ShareService.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/services/ShareService.kt
index 53458c59..017d0164 100644
--- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/services/ShareService.kt
+++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/services/ShareService.kt
@@ -43,6 +43,7 @@ interface ShareService : Service {
         shareType: ShareType,
         shareWith: String,
         permissions: Int,
+        spaceId: String?,
         name: String,
         password: String,
         expirationDate: Long,
diff --git a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/services/implementation/OCShareService.kt b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/services/implementation/OCShareService.kt
index 96381b6a..681ba836 100644
--- a/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/services/implementation/OCShareService.kt
+++ b/owncloudComLibrary/src/main/java/com/owncloud/android/lib/resources/shares/services/implementation/OCShareService.kt
@@ -52,6 +52,7 @@ class OCShareService(override val client: OwnCloudClient) : ShareService {
         shareType: ShareType,
         shareWith: String,
         permissions: Int,
+        spaceId: String?,
         name: String,
         password: String,
         expirationDate: Long,
@@ -60,7 +61,8 @@ class OCShareService(override val client: OwnCloudClient) : ShareService {
             remoteFilePath,
             shareType,
             shareWith,
-            permissions
+            permissions,
+            spaceId,
         ).apply {
             this.name = name
             this.password = password