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

Unverified Commit 43a58e2f authored by ZetaTom's avatar ZetaTom
Browse files

Extend OCCapability to include (default) files download limit

parent 5ef9a2fa
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
/*
 * Nextcloud Android Library
 *
 * SPDX-FileCopyrightText: 2024 ZetaTom <70907959+zetatom@users.noreply.github.com>
 * SPDX-License-Identifier: MIT
 */

package com.nextcloud.extensions

import android.os.Build
import android.os.Parcel
import java.io.Serializable

inline fun <reified T : Serializable?> Parcel.readSerializableCompat(): T? =
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
        readSerializable(T::class.java.classLoader, T::class.java)
    } else {
        @Suppress("DEPRECATION")
        readSerializable() as? T
    }
+6 −0
Original line number Diff line number Diff line
@@ -12,6 +12,8 @@ package com.owncloud.android.lib.resources.shares

import android.os.Parcel
import android.os.Parcelable
import com.nextcloud.android.lib.resources.files.FileDownloadLimit
import com.nextcloud.extensions.readSerializableCompat
import com.owncloud.android.lib.common.utils.Log_OC
import com.owncloud.android.lib.resources.files.FileUtils
import java.io.Serializable
@@ -70,6 +72,7 @@ class OCShare :
    var mimetype: String? = null
    var ownerDisplayName: String? = null
    var isFavorite = false
    var fileDownloadLimit: FileDownloadLimit? = null

    constructor() : super() {
        resetData()
@@ -110,6 +113,7 @@ class OCShare :
        isHasPreview = false
        mimetype = ""
        ownerDisplayName = ""
        fileDownloadLimit = null
    }

    /**
@@ -149,6 +153,7 @@ class OCShare :
        isHasPreview = source.readInt() == 1
        mimetype = source.readString()
        ownerDisplayName = source.readString()
        fileDownloadLimit = source.readSerializableCompat()
    }

    override fun describeContents(): Int = this.hashCode()
@@ -178,6 +183,7 @@ class OCShare :
        dest.writeInt(if (isHasPreview) 1 else 0)
        dest.writeString(mimetype)
        dest.writeString(ownerDisplayName)
        dest.writeSerializable(fileDownloadLimit)
    }

    companion object {
+20 −0
Original line number Diff line number Diff line
@@ -166,6 +166,10 @@ public class GetCapabilitiesRemoteOperation extends RemoteOperation {
    private static final String FORBIDDEN_FILENAME_EXTENSIONS = "forbidden_filename_extensions";
    private static final String FORBIDDEN_FILENAME_BASE_NAMES = "forbidden_filename_basenames";

    // files download limits
    private static final String NODE_FILES_DOWNLOAD_LIMIT = "downloadlimit";
    private static final String FILES_DOWNLOAD_LIMIT_DEFAULT = "default-limit";

    private OCCapability currentCapability = null;

    public GetCapabilitiesRemoteOperation() {
@@ -734,6 +738,22 @@ public class GetCapabilitiesRemoteOperation extends RemoteOperation {
                } else {
                    capability.setSecurityGuard(CapabilityBooleanType.FALSE);
                }

                // files download limits
                if (respCapabilities.has(NODE_FILES_DOWNLOAD_LIMIT)) {
                    JSONObject filesDownloadLimitCapability = respCapabilities.getJSONObject(NODE_FILES_DOWNLOAD_LIMIT);

                    if (filesDownloadLimitCapability.getBoolean(PROPERTY_ENABLED)) {
                        capability.setFilesDownloadLimit(CapabilityBooleanType.TRUE);
                    } else {
                        capability.setFilesDownloadLimit(CapabilityBooleanType.FALSE);
                    }

                    if (filesDownloadLimitCapability.has(FILES_DOWNLOAD_LIMIT_DEFAULT)) {
                        int defaultDownloadLimit = filesDownloadLimitCapability.getInt(FILES_DOWNLOAD_LIMIT_DEFAULT);
                        capability.setFilesDownloadLimitDefault(defaultDownloadLimit);
                    }
                }
            }

            Log_OC.d(TAG, "*** Get Capabilities completed ");
+4 −0
Original line number Diff line number Diff line
@@ -110,6 +110,10 @@ class OCCapability {
    var forbiddenFilenameExtensionJson: String? = null
    var forbiddenFilenameBaseNamesJson: String? = null

    // files download limits
    var filesDownloadLimit = CapabilityBooleanType.UNKNOWN
    var filesDownloadLimitDefault = 0

    // Etag for capabilities
    var etag: String? = ""