Skip to content

Commit 2ef4188

Browse files
Merge pull request #16059 from nextcloud/fix/update-file-download-limit
fix: update file download limit
2 parents 655b601 + d76ed5a commit 2ef4188

File tree

5 files changed

+25
-59
lines changed

5 files changed

+25
-59
lines changed

app/src/main/java/com/nextcloud/utils/extensions/OCShareExtensions.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,15 @@ package com.nextcloud.utils.extensions
1010
import com.nextcloud.client.database.entity.ShareEntity
1111
import com.owncloud.android.lib.resources.shares.OCShare
1212

13+
fun OCShare?.remainingDownloadLimit(): Int? {
14+
val downloadLimit = this?.fileDownloadLimit ?: return null
15+
return if (downloadLimit.limit > 0) {
16+
downloadLimit.limit - downloadLimit.count
17+
} else {
18+
null
19+
}
20+
}
21+
1322
fun OCShare.hasFileRequestPermission(): Boolean = (isFolder && shareType?.isPublicOrMail() == true)
1423

1524
fun List<OCShare>.mergeDistinctByToken(other: List<OCShare>): List<OCShare> = (this + other).distinctBy { it.token }

app/src/main/java/com/owncloud/android/operations/GetFilesDownloadLimitOperation.kt

Lines changed: 0 additions & 30 deletions
This file was deleted.

app/src/main/java/com/owncloud/android/ui/adapter/LinkShareViewHolder.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import android.text.TextUtils
1818
import android.view.View
1919
import androidx.core.content.res.ResourcesCompat
2020
import androidx.recyclerview.widget.RecyclerView
21+
import com.nextcloud.utils.extensions.remainingDownloadLimit
2122
import com.nextcloud.utils.mdm.MDMConfig
2223
import com.owncloud.android.R
2324
import com.owncloud.android.databinding.FileDetailsShareLinkShareItemBinding
@@ -105,8 +106,8 @@ internal class LinkShareViewHolder(itemView: View) : RecyclerView.ViewHolder(ite
105106
}
106107

107108
val downloadLimit = publicShare.fileDownloadLimit
108-
if (downloadLimit != null && downloadLimit.limit > 0) {
109-
val remaining = downloadLimit.limit - downloadLimit.count
109+
if (downloadLimit != null) {
110+
val remaining = publicShare.remainingDownloadLimit() ?: return
110111
val text = context.resources.getQuantityString(
111112
R.plurals.share_download_limit_description,
112113
remaining,

app/src/main/java/com/owncloud/android/ui/fragment/FileDetailsSharingProcessFragment.kt

Lines changed: 13 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import com.nextcloud.client.di.Injectable
2020
import com.nextcloud.utils.extensions.getParcelableArgument
2121
import com.nextcloud.utils.extensions.getSerializableArgument
2222
import com.nextcloud.utils.extensions.isPublicOrMail
23+
import com.nextcloud.utils.extensions.remainingDownloadLimit
2324
import com.nextcloud.utils.extensions.setVisibilityWithAnimation
2425
import com.nextcloud.utils.extensions.setVisibleIf
2526
import com.owncloud.android.R
@@ -197,7 +198,6 @@ class FileDetailsSharingProcessFragment :
197198
setCheckboxStates()
198199
themeView()
199200
setVisibilitiesOfShareOption()
200-
toggleNextButtonAvailability(isAnySharePermissionChecked())
201201
logShareInfo()
202202
}
203203

@@ -491,15 +491,19 @@ class FileDetailsSharingProcessFragment :
491491
}
492492

493493
private fun updateFileDownloadLimitView() {
494-
if (canSetDownloadLimit()) {
495-
binding.shareProcessSetDownloadLimitSwitch.visibility = View.VISIBLE
494+
if (!canSetDownloadLimit()) {
495+
return
496+
}
496497

497-
val currentDownloadLimit = share?.fileDownloadLimit?.limit ?: capabilities.filesDownloadLimitDefault
498-
if (currentDownloadLimit > 0) {
499-
binding.shareProcessSetDownloadLimitSwitch.isChecked = true
500-
showFileDownloadLimitInput(true)
501-
binding.shareProcessSetDownloadLimitInput.setText("$currentDownloadLimit")
502-
}
498+
// user can set download limit thus no need to rely on current limit to show download limit
499+
showFileDownloadLimitInput(true)
500+
binding.shareProcessSetDownloadLimitSwitch.visibility = View.VISIBLE
501+
binding.shareProcessSetDownloadLimitInput.visibility = View.VISIBLE
502+
503+
val currentLimit = share?.remainingDownloadLimit() ?: return
504+
if (currentLimit > 0) {
505+
binding.shareProcessSetDownloadLimitSwitch.isChecked = true
506+
binding.shareProcessSetDownloadLimitInput.setText(currentLimit.toString())
503507
}
504508
}
505509

@@ -585,7 +589,6 @@ class FileDetailsSharingProcessFragment :
585589

586590
val isCustomPermissionSelected = (optionId == R.id.custom_permission_radio_button)
587591
customPermissionLayout.setVisibilityWithAnimation(isCustomPermissionSelected)
588-
toggleNextButtonAvailability(true)
589592
}
590593
// endregion
591594
}
@@ -610,13 +613,6 @@ class FileDetailsSharingProcessFragment :
610613
)
611614
}
612615

613-
private fun toggleNextButtonAvailability(value: Boolean) {
614-
binding.run {
615-
shareProcessBtnNext.isEnabled = value
616-
shareProcessBtnNext.isClickable = value
617-
}
618-
}
619-
620616
@Suppress("NestedBlockDepth")
621617
private fun setCheckboxStates() {
622618
val currentPermissions = share?.permissions ?: permission
@@ -674,7 +670,6 @@ class FileDetailsSharingProcessFragment :
674670

675671
private fun togglePermission(isChecked: Boolean, permissionFlag: Int) {
676672
permission = SharePermissionManager.togglePermission(isChecked, permission, permissionFlag)
677-
toggleNextButtonAvailability(true)
678673
}
679674

680675
private fun showExpirationDateDialog(chosenDateInMillis: Long = chosenExpDateInMills) {
@@ -779,14 +774,6 @@ class FileDetailsSharingProcessFragment :
779774
return
780775
}
781776

782-
if (!isSharePermissionChecked() && !isCustomPermissionSelectedAndAnyCustomPermissionTypeChecked()) {
783-
DisplayUtils.showSnackMessage(
784-
binding.root,
785-
R.string.file_details_sharing_fragment_custom_permission_not_selected
786-
)
787-
return
788-
}
789-
790777
// if modifying existing share information then execute the process
791778
if (share != null) {
792779
updateShare()

app/src/main/res/values/strings.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1448,7 +1448,6 @@
14481448
<string name="sync_duplication">Sync duplication</string>
14491449
<string name="server_not_reachable">Could not load content</string>
14501450
<string name="server_not_reachable_content">The device is likely not connected to the internet</string>
1451-
<string name="file_details_sharing_fragment_custom_permission_not_selected">Please select custom permission</string>
14521451
<string name="unknown">Unknown</string>
14531452
<string name="upload_missing_storage_permission_title">Upload Stopped – Storage Permission Required</string>
14541453
<string name="upload_missing_storage_permission_description">Your files cannot be uploaded without access to local storage. Tap to grant permission.</string>

0 commit comments

Comments
 (0)