Skip to content

Commit 090d436

Browse files
committed
skip auto rename if wcf disabled
Signed-off-by: alperozturk <alper_ozturk@proton.me>
1 parent db0d113 commit 090d436

8 files changed

Lines changed: 1232 additions & 10 deletions

File tree

app/schemas/com.nextcloud.client.database.NextcloudDatabase/94.json

Lines changed: 1210 additions & 0 deletions
Large diffs are not rendered by default.

app/src/main/java/com/nextcloud/client/database/NextcloudDatabase.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ import com.owncloud.android.db.ProviderMeta
8383
AutoMigration(from = 89, to = 90),
8484
AutoMigration(from = 90, to = 91),
8585
AutoMigration(from = 91, to = 92),
86-
AutoMigration(from = 92, to = 93, spec = DatabaseMigrationUtil.ResetCapabilitiesPostMigration::class)
86+
AutoMigration(from = 92, to = 93, spec = DatabaseMigrationUtil.ResetCapabilitiesPostMigration::class),
87+
AutoMigration(from = 93, to = 94, spec = DatabaseMigrationUtil.ResetCapabilitiesPostMigration::class)
8788
],
8889
exportSchema = true
8990
)

app/src/main/java/com/nextcloud/client/database/entity/CapabilityEntity.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,5 +142,7 @@ data class CapabilityEntity(
142142
@ColumnInfo(name = ProviderTableMeta.CAPABILITIES_DEFAULT_PERMISSIONS)
143143
val defaultPermissions: Int?,
144144
@ColumnInfo(name = ProviderTableMeta.CAPABILITIES_USER_STATUS_SUPPORTS_BUSY)
145-
val userStatusSupportsBusy: Int?
145+
val userStatusSupportsBusy: Int?,
146+
@ColumnInfo(name = ProviderTableMeta.CAPABILITIES_WINDOWS_COMPATIBLE_FILENAMES)
147+
val isWCFEnabled: Int?
146148
)

app/src/main/java/com/nextcloud/utils/autoRename/AutoRename.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88
package com.nextcloud.utils.autoRename
99

1010
import com.nextcloud.utils.extensions.StringConstants
11+
import com.nextcloud.utils.extensions.canCheckWCFRelatedRestrictions
1112
import com.nextcloud.utils.extensions.forbiddenFilenameCharacters
1213
import com.nextcloud.utils.extensions.forbiddenFilenameExtensions
1314
import com.nextcloud.utils.extensions.shouldRemoveNonPrintableUnicodeCharactersAndConvertToUTF8
1415
import com.owncloud.android.datamodel.OCFile
1516
import com.owncloud.android.lib.common.utils.Log_OC
16-
import com.owncloud.android.lib.resources.status.NextcloudVersion
1717
import com.owncloud.android.lib.resources.status.OCCapability
1818
import org.apache.commons.io.FilenameUtils
1919
import java.util.regex.Pattern
@@ -25,12 +25,12 @@ object AutoRename {
2525
@Suppress("NestedBlockDepth")
2626
@JvmOverloads
2727
fun rename(filename: String, capability: OCCapability, isFolderPath: Boolean? = null): String {
28-
Log_OC.d(TAG, "Before - $filename")
29-
30-
if (!capability.version.isNewerOrEqual(NextcloudVersion.nextcloud_30)) {
28+
if (!capability.canCheckWCFRelatedRestrictions()) {
3129
return filename
3230
}
3331

32+
Log_OC.d(TAG, "Before - $filename")
33+
3434
val isFolder = isFolderPath ?: filename.endsWith(OCFile.PATH_SEPARATOR)
3535
val pathSegments = filename.split(OCFile.PATH_SEPARATOR).toMutableList()
3636

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,15 @@
88
package com.nextcloud.utils.extensions
99

1010
import com.google.gson.Gson
11+
import com.owncloud.android.lib.resources.status.NextcloudVersion
1112
import com.owncloud.android.lib.resources.status.OCCapability
1213
import org.json.JSONException
1314

1415
private val gson = Gson()
1516

17+
fun OCCapability.canCheckWCFRelatedRestrictions(): Boolean =
18+
version.isNewerOrEqual(NextcloudVersion.nextcloud_30) && isWCFEnabled.isTrue
19+
1620
fun OCCapability.forbiddenFilenames(): List<String> = jsonToList(forbiddenFilenamesJson)
1721

1822
fun OCCapability.forbiddenFilenameCharacters(): List<String> = jsonToList(forbiddenFilenameCharactersJson)
@@ -33,7 +37,7 @@ private fun jsonToList(json: String?): List<String> {
3337

3438
return try {
3539
return gson.fromJson(json, Array<String>::class.java).toList()
36-
} catch (e: JSONException) {
40+
} catch (_: JSONException) {
3741
emptyList()
3842
}
3943
}

app/src/main/java/com/nextcloud/utils/fileNameValidator/FileNameValidator.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@ package com.nextcloud.utils.fileNameValidator
1010
import android.content.Context
1111
import android.text.TextUtils
1212
import com.nextcloud.utils.extensions.StringConstants
13+
import com.nextcloud.utils.extensions.canCheckWCFRelatedRestrictions
1314
import com.nextcloud.utils.extensions.forbiddenFilenameBaseNames
1415
import com.nextcloud.utils.extensions.forbiddenFilenameCharacters
1516
import com.nextcloud.utils.extensions.forbiddenFilenameExtensions
1617
import com.nextcloud.utils.extensions.forbiddenFilenames
1718
import com.nextcloud.utils.extensions.removeFileExtension
1819
import com.owncloud.android.R
1920
import com.owncloud.android.datamodel.OCFile
20-
import com.owncloud.android.lib.resources.status.NextcloudVersion
2121
import com.owncloud.android.lib.resources.status.OCCapability
2222

2323
object FileNameValidator {
@@ -49,10 +49,11 @@ object FileNameValidator {
4949
}
5050
}
5151

52-
if (!capability.version.isNewerOrEqual(NextcloudVersion.nextcloud_30)) {
52+
if (!capability.canCheckWCFRelatedRestrictions()) {
5353
return null
5454
}
5555

56+
// region WCF related checks
5657
checkInvalidCharacters(filename, capability, context)?.let { return it }
5758

5859
val filenameVariants = setOf(filename.lowercase(), filename.removeFileExtension().lowercase())
@@ -91,6 +92,7 @@ object FileNameValidator {
9192
}
9293
}
9394
}
95+
// endregion
9496

9597
return null
9698
}

app/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2411,6 +2411,7 @@ private ContentValues createContentValues(String accountName, OCCapability capab
24112411
contentValues.put(ProviderTableMeta.CAPABILITIES_FORBIDDEN_FILENAMES, capability.getForbiddenFilenamesJson());
24122412
contentValues.put(ProviderTableMeta.CAPABILITIES_FORBIDDEN_FORBIDDEN_FILENAME_EXTENSIONS, capability.getForbiddenFilenameExtensionJson());
24132413
contentValues.put(ProviderTableMeta.CAPABILITIES_FORBIDDEN_FORBIDDEN_FILENAME_BASE_NAMES, capability.getForbiddenFilenameBaseNamesJson());
2414+
contentValues.put(ProviderTableMeta.CAPABILITIES_WINDOWS_COMPATIBLE_FILENAMES, capability.isWCFEnabled().getValue());
24142415
contentValues.put(ProviderTableMeta.CAPABILITIES_FILES_DOWNLOAD_LIMIT, capability.getFilesDownloadLimit().getValue());
24152416
contentValues.put(ProviderTableMeta.CAPABILITIES_FILES_DOWNLOAD_LIMIT_DEFAULT, capability.getFilesDownloadLimitDefault());
24162417

@@ -2595,6 +2596,7 @@ private OCCapability createCapabilityInstance(Cursor cursor) {
25952596
capability.setForbiddenFilenamesJson(getString(cursor, ProviderTableMeta.CAPABILITIES_FORBIDDEN_FILENAMES));
25962597
capability.setForbiddenFilenameExtensionJson(getString(cursor, ProviderTableMeta.CAPABILITIES_FORBIDDEN_FORBIDDEN_FILENAME_EXTENSIONS));
25972598
capability.setForbiddenFilenameBaseNamesJson(getString(cursor, ProviderTableMeta.CAPABILITIES_FORBIDDEN_FORBIDDEN_FILENAME_BASE_NAMES));
2599+
capability.setWCFEnabled(getBoolean(cursor, ProviderTableMeta.CAPABILITIES_WINDOWS_COMPATIBLE_FILENAMES));
25982600
capability.setFilesDownloadLimit(getBoolean(cursor, ProviderTableMeta.CAPABILITIES_FILES_DOWNLOAD_LIMIT));
25992601
capability.setFilesDownloadLimitDefault(getInt(cursor, ProviderTableMeta.CAPABILITIES_FILES_DOWNLOAD_LIMIT_DEFAULT));
26002602

app/src/main/java/com/owncloud/android/db/ProviderMeta.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
*/
2424
public class ProviderMeta {
2525
public static final String DB_NAME = "filelist";
26-
public static final int DB_VERSION = 93;
26+
public static final int DB_VERSION = 94;
2727

2828
private ProviderMeta() {
2929
// No instance
@@ -285,6 +285,7 @@ static public class ProviderTableMeta implements BaseColumns {
285285
public static final String CAPABILITIES_FORBIDDEN_FILENAMES = "forbidden_filenames";
286286
public static final String CAPABILITIES_FORBIDDEN_FORBIDDEN_FILENAME_EXTENSIONS = "forbidden_filename_extensions";
287287
public static final String CAPABILITIES_FORBIDDEN_FORBIDDEN_FILENAME_BASE_NAMES = "forbidden_filename_basenames";
288+
public static final String CAPABILITIES_WINDOWS_COMPATIBLE_FILENAMES = "windows_compatible_filenames";
288289
public static final String CAPABILITIES_FILES_DOWNLOAD_LIMIT = "files_download_limit";
289290
public static final String CAPABILITIES_FILES_DOWNLOAD_LIMIT_DEFAULT = "files_download_limit_default";
290291
public static final String CAPABILITIES_NOTES_FOLDER_PATH = "notes_folder_path";

0 commit comments

Comments
 (0)