Skip to content

Commit 0854892

Browse files
committed
solve git conflict
Signed-off-by: alperozturk <[email protected]>
1 parent 549fd05 commit 0854892

File tree

5 files changed

+113
-2
lines changed

5 files changed

+113
-2
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
/*
2+
* Nextcloud - Android Client
3+
*
4+
* SPDX-FileCopyrightText: 2025 Alper Ozturk <[email protected]>
5+
* SPDX-License-Identifier: AGPL-3.0-or-later
6+
*/
7+
package com.nextcloud.utils
8+
9+
import com.nextcloud.utils.extensions.checkWCFRestrictions
10+
import com.owncloud.android.lib.resources.status.CapabilityBooleanType
11+
import com.owncloud.android.lib.resources.status.OCCapability
12+
import org.junit.Assert.assertFalse
13+
import org.junit.Assert.assertTrue
14+
import org.junit.Test
15+
16+
class CheckWCFRestrictionsTests {
17+
18+
private val version29 = Triple(29, 0, 0)
19+
private val version30 = Triple(30, 0, 0)
20+
private val version31 = Triple(31, 0, 0)
21+
private val version32 = Triple(32, 0, 0)
22+
private val version33 = Triple(33, 0, 0)
23+
24+
private fun createCapability(
25+
version: Triple<Int, Int, Int>,
26+
isWCFEnabled: CapabilityBooleanType = CapabilityBooleanType.UNKNOWN
27+
): OCCapability = OCCapability().apply {
28+
this.versionMayor = version.first
29+
this.versionMinor = version.second
30+
this.versionMicro = version.third
31+
this.isWCFEnabled = isWCFEnabled
32+
}
33+
34+
@Test
35+
fun testReturnsFalseForVersionsOlderThan30() {
36+
val capability = createCapability(version29)
37+
assertFalse(capability.checkWCFRestrictions())
38+
}
39+
40+
@Test
41+
fun testReturnsTrueForVersion30WhenWCFAlwaysEnabled() {
42+
val capability = createCapability(version30)
43+
assertTrue(capability.checkWCFRestrictions())
44+
}
45+
46+
@Test
47+
fun testReturnsTrueForVersion31WhenWCFAlwaysEnabled() {
48+
val capability = createCapability(version31)
49+
assertTrue(capability.checkWCFRestrictions())
50+
}
51+
52+
@Test
53+
fun testReturnsTrueForVersion32WhenWCFEnabled() {
54+
val capability = createCapability(version32, CapabilityBooleanType.TRUE)
55+
assertTrue(capability.checkWCFRestrictions())
56+
}
57+
58+
@Test
59+
fun testReturnsFalseForVersion32WhenWCFDisabled() {
60+
val capability = createCapability(version32, CapabilityBooleanType.FALSE)
61+
assertFalse(capability.checkWCFRestrictions())
62+
}
63+
64+
@Test
65+
fun testReturnsFalseForVersion32WhenWCFIsUnknown() {
66+
val capability = createCapability(version32)
67+
assertFalse(capability.checkWCFRestrictions())
68+
}
69+
70+
@Test
71+
fun testReturnsTrueForNewerVersionWhenWCFEnabled() {
72+
val capability = createCapability(version33, CapabilityBooleanType.TRUE)
73+
assertTrue(capability.checkWCFRestrictions())
74+
}
75+
76+
@Test
77+
fun testReturnsFalseForNewerVersionWhenWCFDisabled() {
78+
val capability = createCapability(version33, CapabilityBooleanType.FALSE)
79+
assertFalse(capability.checkWCFRestrictions())
80+
}
81+
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
package com.nextcloud.utils.autoRename
99

1010
import com.nextcloud.utils.extensions.StringConstants
11+
import com.nextcloud.utils.extensions.checkWCFRestrictions
1112
import com.nextcloud.utils.extensions.forbiddenFilenameCharacters
1213
import com.nextcloud.utils.extensions.forbiddenFilenameExtensions
1314
import com.nextcloud.utils.extensions.shouldRemoveNonPrintableUnicodeCharactersAndConvertToUTF8
@@ -24,7 +25,7 @@ object AutoRename {
2425
@Suppress("NestedBlockDepth")
2526
@JvmOverloads
2627
fun rename(filename: String, capability: OCCapability, isFolderPath: Boolean? = null): String {
27-
if (!capability.isWCFEnabled.isTrue) {
28+
if (!capability.checkWCFRestrictions()) {
2829
return filename
2930
}
3031

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,31 @@
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+
/**
18+
* Determines whether **Windows-compatible file (WCF)** restrictions should be applied
19+
* for the current server version and configuration.
20+
*
21+
* Behavior:
22+
* - For **Nextcloud 32 and newer**, WCF enforcement depends on the [`isWCFEnabled`] flag
23+
* provided by the server capabilities.
24+
* - For **Nextcloud 30 and 31**, WCF restrictions are always applied (feature considered enabled).
25+
* - For **versions older than 30**, WCF is not supported, and no restrictions are applied.
26+
*
27+
* @return `true` if WCF restrictions should be enforced based on the server version and configuration;
28+
* `false` otherwise.
29+
*/
30+
fun OCCapability.checkWCFRestrictions(): Boolean = if (version.isNewerOrEqual(NextcloudVersion.nextcloud_32)) {
31+
isWCFEnabled.isTrue
32+
} else {
33+
version.isNewerOrEqual(NextcloudVersion.nextcloud_30)
34+
}
35+
1636
fun OCCapability.forbiddenFilenames(): List<String> = jsonToList(forbiddenFilenamesJson)
1737

1838
fun OCCapability.forbiddenFilenameCharacters(): List<String> = jsonToList(forbiddenFilenameCharactersJson)

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ 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.checkWCFRestrictions
1314
import com.nextcloud.utils.extensions.forbiddenFilenameBaseNames
1415
import com.nextcloud.utils.extensions.forbiddenFilenameCharacters
1516
import com.nextcloud.utils.extensions.forbiddenFilenameExtensions
@@ -48,7 +49,7 @@ object FileNameValidator {
4849
}
4950
}
5051

51-
if (!capability.isWCFEnabled.isTrue) {
52+
if (!capability.checkWCFRestrictions()) {
5253
return null
5354
}
5455

gradle/verification-metadata.xml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17479,6 +17479,14 @@
1747917479
<sha256 value="a1645c501eb6d57d317c90ae162709c6c98ff7b948c210e9e7ace78909ee84c8" origin="Generated by Gradle" reason="Artifact is not signed"/>
1748017480
</artifact>
1748117481
</component>
17482+
<component group="com.github.nextcloud" name="android-library" version="2cbb669f3e">
17483+
<artifact name="android-library-2cbb669f3e.aar">
17484+
<sha256 value="8123aaea5d9c2fa439a635bb64d16ec532c596a4a2dd76e18da2fe729ab886ba" origin="Generated by Gradle" reason="Artifact is not signed"/>
17485+
</artifact>
17486+
<artifact name="android-library-2cbb669f3e.module">
17487+
<sha256 value="4202f3716e02182d759b714b31d5c5af86a60a508477fd1e0e77b446f7fc23e1" origin="Generated by Gradle" reason="Artifact is not signed"/>
17488+
</artifact>
17489+
</component>
1748217490
<component group="com.github.nextcloud" name="android-library" version="2d47aa4a368b49465320c16609ad4427dd64ca86">
1748317491
<artifact name="android-library-2d47aa4a368b49465320c16609ad4427dd64ca86.aar">
1748417492
<sha256 value="d772821c93ced5f256dfc150f90bac38358ea037fa90ac80614cfd089c3996e6" origin="Generated by Gradle" reason="Artifact is not signed"/>

0 commit comments

Comments
 (0)