Skip to content

Commit 2e77215

Browse files
committed
refactor(i18n): extract url validation error messages
1 parent f730e71 commit 2e77215

6 files changed

Lines changed: 15 additions & 38 deletions

File tree

.github/workflows/ci.yml

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -45,38 +45,6 @@ jobs:
4545
path: app/build/reports/lint-results-*.xml
4646
retention-days: 7
4747

48-
test:
49-
name: Unit Tests
50-
runs-on: ubuntu-latest
51-
steps:
52-
- name: Checkout
53-
uses: actions/checkout@v6
54-
55-
- name: Set up JDK
56-
uses: actions/setup-java@v5
57-
with:
58-
java-version: ${{ env.JAVA_VERSION }}
59-
distribution: 'temurin'
60-
61-
- name: Setup Gradle
62-
uses: gradle/actions/setup-gradle@v6
63-
with:
64-
cache-cleanup: 'never'
65-
66-
- name: Fix gradlew permissions
67-
run: chmod +x ./gradlew
68-
69-
- name: Run unit tests
70-
run: ./gradlew testDebugUnitTest --no-daemon --parallel
71-
72-
- name: Upload test reports
73-
if: always()
74-
uses: actions/upload-artifact@v7
75-
with:
76-
name: test-reports
77-
path: app/build/reports/tests/testDebugUnitTest
78-
retention-days: 14
79-
8048
build-debug:
8149
name: Build Debug APK
8250
runs-on: ubuntu-latest

app/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ android {
1717
val keyAliasEnv = System.getenv("RELEASE_KEY_ALIAS")
1818
val keyPasswordEnv = System.getenv("RELEASE_KEY_PASSWORD")
1919
if (storeFilePath != null) {
20-
storeFile = file(storeFilePath)
20+
storeFile = rootProject.file(storeFilePath)
2121
storePassword = storePasswordEnv
2222
keyAlias = keyAliasEnv
2323
keyPassword = keyPasswordEnv

app/src/main/java/jamgmilk/fuwagit/core/util/UrlUtils.kt

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package jamgmilk.fuwagit.core.util
22

3+
import androidx.annotation.StringRes
4+
import jamgmilk.fuwagit.R
5+
36
object UrlUtils {
47

58
data class UrlValidationResult(
69
val isValid: Boolean,
710
val isSsh: Boolean,
811
val isHttps: Boolean,
9-
val errorMessage: String? = null
12+
@StringRes val errorMessage: Int? = null
1013
)
1114

1215
fun validateUrl(url: String): UrlValidationResult {
@@ -17,7 +20,7 @@ object UrlUtils {
1720
return when {
1821
url.startsWith("https://") || url.startsWith("http://") -> {
1922
if (url.contains(" ") || !url.contains(".") || url.length < 10) {
20-
UrlValidationResult(isValid = false, isSsh = false, isHttps = true, errorMessage = "Invalid HTTPS URL format")
23+
UrlValidationResult(isValid = false, isSsh = false, isHttps = true, errorMessage = R.string.url_validation_invalid_https)
2124
} else {
2225
UrlValidationResult(isValid = true, isSsh = false, isHttps = true)
2326
}
@@ -27,14 +30,14 @@ object UrlUtils {
2730
if (gitHostPattern.matches(url)) {
2831
UrlValidationResult(isValid = true, isSsh = true, isHttps = false)
2932
} else {
30-
UrlValidationResult(isValid = false, isSsh = true, isHttps = false, errorMessage = "Invalid SSH format (expected: git@host:path)")
33+
UrlValidationResult(isValid = false, isSsh = true, isHttps = false, errorMessage = R.string.url_validation_invalid_ssh)
3134
}
3235
}
3336
url.startsWith("ssh://") -> {
3437
UrlValidationResult(isValid = true, isSsh = true, isHttps = false)
3538
}
3639
else -> {
37-
UrlValidationResult(isValid = false, isSsh = false, isHttps = false, errorMessage = "URL must start with https://, http://, git@, ssh://")
40+
UrlValidationResult(isValid = false, isSsh = false, isHttps = false, errorMessage = R.string.url_validation_invalid_protocol)
3841
}
3942
}
4043
}

app/src/main/java/jamgmilk/fuwagit/ui/screen/myrepos/CloneContent.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ internal fun CloneContent(
220220
supportingText = {
221221
if (validationResult.errorMessage != null) {
222222
Text(
223-
text = validationResult.errorMessage!!,
223+
text = stringResource(validationResult.errorMessage!!),
224224
color = colors.error
225225
)
226226
}

app/src/main/res/values-b+zh+Hans/strings.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -666,5 +666,8 @@
666666

667667
<!-- ========== Validation Errors ========== -->
668668
<string name="credentials_not_found">未找到凭据</string>
669+
<string name="url_validation_invalid_https">无效的 HTTPS URL 格式</string>
670+
<string name="url_validation_invalid_ssh">无效的 SSH 格式(应为:git@host:path)</string>
671+
<string name="url_validation_invalid_protocol">URL 必须以 https://、http://、git@、ssh:// 开头</string>
669672

670673
</resources>

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -687,5 +687,8 @@
687687

688688
<!-- ========== Validation Errors ========== -->
689689
<string name="credentials_not_found">No credentials found</string>
690+
<string name="url_validation_invalid_https">Invalid HTTPS URL format</string>
691+
<string name="url_validation_invalid_ssh">Invalid SSH format (expected: git@host:path)</string>
692+
<string name="url_validation_invalid_protocol">URL must start with https://, http://, git@, ssh://</string>
690693

691694
</resources>

0 commit comments

Comments
 (0)