Skip to content

Commit ee23b7a

Browse files
committed
Update password dialog titles and subtitles; improve localization strings; set app_name as non-translatable; enable locale config generation
1 parent 17020ff commit ee23b7a

File tree

23 files changed

+106
-69
lines changed

23 files changed

+106
-69
lines changed

android-compose-app/build.gradle.kts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ android {
2424
applicationId = "com.softartdev.noteroom"
2525
minSdk = libs.versions.minSdk.get().toInt()
2626
targetSdk = libs.versions.targetSdk.get().toInt()
27-
versionCode = 838
28-
versionName = "8.3.8"
27+
versionCode = 839
28+
versionName = "8.3.9"
2929
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
3030
testInstrumentationRunnerArguments["clearPackageData"] = "true"
3131
vectorDrawables.useSupportLibrary = true
@@ -63,6 +63,7 @@ android {
6363
execution = "ANDROIDX_TEST_ORCHESTRATOR"
6464
emulatorControl.enable = true
6565
}
66+
androidResources.generateLocaleConfig = true
6667
}
6768

6869
dependencies {
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
unqualifiedResLocale=en
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<resources/>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<resources>
3-
<string name="app_name">Note Delight</string>
3+
<string name="app_name" translatable="false">Note Delight</string>
44
</resources>

core/presentation/src/androidUnitTest/kotlin/com/softartdev/notedelight/presentation/settings/security/change/ChangeViewModelTest.kt

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,9 @@ class ChangeViewModelTest {
6868
assertFalse(initialState.isNewPasswordError)
6969
assertFalse(initialState.isRepeatPasswordError)
7070
// Check initial label types
71-
assertEquals(FieldLabel.ENTER, initialState.oldPasswordFieldLabel)
72-
assertEquals(FieldLabel.ENTER, initialState.newPasswordFieldLabel)
73-
assertEquals(FieldLabel.ENTER, initialState.repeatPasswordFieldLabel)
71+
assertEquals(FieldLabel.ENTER_OLD_PASSWORD, initialState.oldPasswordFieldLabel)
72+
assertEquals(FieldLabel.ENTER_NEW_PASSWORD, initialState.newPasswordFieldLabel)
73+
assertEquals(FieldLabel.REPEAT_NEW_PASSWORD, initialState.repeatPasswordFieldLabel)
7474
assertNull(initialState.snackBarMessageType)
7575

7676
cancelAndIgnoreRemainingEvents()
@@ -124,7 +124,7 @@ class ChangeViewModelTest {
124124
assertTrue(state.loading)
125125

126126
state = awaitItem() // Error state
127-
assertEquals(FieldLabel.EMPTY, state.oldPasswordFieldLabel)
127+
assertEquals(FieldLabel.EMPTY_PASSWORD, state.oldPasswordFieldLabel)
128128
assertTrue(state.isOldPasswordError)
129129
assertFalse(state.isNewPasswordError)
130130
assertFalse(state.isRepeatPasswordError)
@@ -149,7 +149,7 @@ class ChangeViewModelTest {
149149
assertTrue(state.loading)
150150

151151
state = awaitItem() // Error state
152-
assertEquals(FieldLabel.EMPTY, state.newPasswordFieldLabel)
152+
assertEquals(FieldLabel.EMPTY_PASSWORD, state.newPasswordFieldLabel)
153153
assertFalse(state.isOldPasswordError)
154154
assertTrue(state.isNewPasswordError)
155155
assertFalse(state.isRepeatPasswordError)
@@ -178,7 +178,7 @@ class ChangeViewModelTest {
178178
assertTrue(state.loading)
179179

180180
state = awaitItem() // Error state
181-
assertEquals(FieldLabel.NO_MATCH, state.repeatPasswordFieldLabel)
181+
assertEquals(FieldLabel.PASSWORDS_NOT_MATCH, state.repeatPasswordFieldLabel)
182182
assertFalse(state.isOldPasswordError)
183183
assertFalse(state.isNewPasswordError)
184184
assertTrue(state.isRepeatPasswordError)
@@ -210,7 +210,7 @@ class ChangeViewModelTest {
210210
assertTrue(state.loading)
211211

212212
state = awaitItem() // Error state
213-
assertEquals(FieldLabel.INCORRECT, state.oldPasswordFieldLabel)
213+
assertEquals(FieldLabel.INCORRECT_PASSWORD, state.oldPasswordFieldLabel)
214214
assertTrue(state.isOldPasswordError)
215215
assertFalse(state.isNewPasswordError)
216216
assertFalse(state.isRepeatPasswordError)
@@ -238,9 +238,9 @@ class ChangeViewModelTest {
238238
assertFalse(state.isOldPasswordError)
239239
assertFalse(state.isNewPasswordError)
240240
assertFalse(state.isRepeatPasswordError)
241-
assertEquals(FieldLabel.ENTER, state.oldPasswordFieldLabel)
242-
assertEquals(FieldLabel.ENTER, state.newPasswordFieldLabel)
243-
assertEquals(FieldLabel.ENTER, state.repeatPasswordFieldLabel)
241+
assertEquals(FieldLabel.ENTER_OLD_PASSWORD, state.oldPasswordFieldLabel)
242+
assertEquals(FieldLabel.ENTER_NEW_PASSWORD, state.newPasswordFieldLabel)
243+
assertEquals(FieldLabel.REPEAT_NEW_PASSWORD, state.repeatPasswordFieldLabel)
244244

245245
cancelAndIgnoreRemainingEvents()
246246
}

core/presentation/src/androidUnitTest/kotlin/com/softartdev/notedelight/presentation/settings/security/confirm/ConfirmViewModelTest.kt

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ class ConfirmViewModelTest {
6060
assertTrue(initialState.repeatPassword.isEmpty())
6161
assertFalse(initialState.isPasswordError)
6262
assertFalse(initialState.isRepeatPasswordError)
63-
assertEquals(FieldLabel.ENTER, initialState.passwordFieldLabel)
64-
assertEquals(FieldLabel.ENTER, initialState.repeatPasswordFieldLabel)
63+
assertEquals(FieldLabel.ENTER_PASSWORD, initialState.passwordFieldLabel)
64+
assertEquals(FieldLabel.CONFIRM_PASSWORD, initialState.repeatPasswordFieldLabel)
6565
assertNull(initialState.snackBarMessageType)
6666

6767
cancelAndIgnoreRemainingEvents()
@@ -77,8 +77,8 @@ class ConfirmViewModelTest {
7777
initialState.onEditPassword(password)
7878
var state = awaitItem()
7979
assertEquals(password, state.password)
80-
assertEquals(FieldLabel.ENTER, state.passwordFieldLabel)
81-
assertEquals(FieldLabel.ENTER, state.repeatPasswordFieldLabel)
80+
assertEquals(FieldLabel.ENTER_PASSWORD, state.passwordFieldLabel)
81+
assertEquals(FieldLabel.CONFIRM_PASSWORD, state.repeatPasswordFieldLabel)
8282
assertFalse(state.isPasswordError)
8383
assertFalse(state.isRepeatPasswordError)
8484

@@ -111,8 +111,8 @@ class ConfirmViewModelTest {
111111
assertTrue(state.loading)
112112

113113
state = awaitItem()
114-
assertEquals(FieldLabel.ENTER, state.passwordFieldLabel)
115-
assertEquals(FieldLabel.NO_MATCH, state.repeatPasswordFieldLabel)
114+
assertEquals(FieldLabel.ENTER_PASSWORD, state.passwordFieldLabel)
115+
assertEquals(FieldLabel.PASSWORDS_NOT_MATCH, state.repeatPasswordFieldLabel)
116116
assertTrue(state.isRepeatPasswordError)
117117
assertFalse(state.isPasswordError)
118118

@@ -141,8 +141,8 @@ class ConfirmViewModelTest {
141141
assertTrue(state.loading)
142142

143143
state = awaitItem()
144-
assertEquals(FieldLabel.ENTER, state.passwordFieldLabel)
145-
assertEquals(FieldLabel.NO_MATCH, state.repeatPasswordFieldLabel)
144+
assertEquals(FieldLabel.ENTER_PASSWORD, state.passwordFieldLabel)
145+
assertEquals(FieldLabel.PASSWORDS_NOT_MATCH, state.repeatPasswordFieldLabel)
146146
assertFalse(state.isPasswordError)
147147
assertTrue(state.isRepeatPasswordError)
148148

@@ -161,7 +161,7 @@ class ConfirmViewModelTest {
161161

162162
state = awaitItem() // Error state
163163
assertTrue(state.isPasswordError)
164-
assertEquals(FieldLabel.EMPTY, state.passwordFieldLabel)
164+
assertEquals(FieldLabel.EMPTY_PASSWORD, state.passwordFieldLabel)
165165

166166
state = awaitItem()
167167
assertFalse(state.loading)
@@ -171,8 +171,8 @@ class ConfirmViewModelTest {
171171
state = awaitItem()
172172
assertFalse(state.isPasswordError)
173173
assertFalse(state.isRepeatPasswordError)
174-
assertEquals(FieldLabel.ENTER, state.passwordFieldLabel)
175-
assertEquals(FieldLabel.ENTER, state.repeatPasswordFieldLabel)
174+
assertEquals(FieldLabel.ENTER_PASSWORD, state.passwordFieldLabel)
175+
assertEquals(FieldLabel.CONFIRM_PASSWORD, state.repeatPasswordFieldLabel)
176176

177177
cancelAndIgnoreRemainingEvents()
178178
}

core/presentation/src/androidUnitTest/kotlin/com/softartdev/notedelight/presentation/settings/security/enter/EnterViewModelTest.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ class EnterViewModelTest {
102102
assertTrue(resultState.loading)
103103

104104
resultState = awaitItem()
105-
assertEquals(FieldLabel.EMPTY, resultState.fieldLabel)
105+
assertEquals(FieldLabel.EMPTY_PASSWORD, resultState.fieldLabel)
106106

107107
resultState = awaitItem()
108108
assertTrue(resultState.isError)
@@ -122,7 +122,7 @@ class EnterViewModelTest {
122122
var resultState = awaitItem()
123123
assertFalse(resultState.loading)
124124
assertFalse(resultState.isError)
125-
assertEquals(FieldLabel.ENTER, resultState.fieldLabel)
125+
assertEquals(FieldLabel.ENTER_PASSWORD, resultState.fieldLabel)
126126

127127
resultState.onEditPassword(password)
128128
resultState = awaitItem()
@@ -132,7 +132,7 @@ class EnterViewModelTest {
132132
assertTrue(resultState.loading)
133133

134134
resultState = awaitItem()
135-
assertEquals(FieldLabel.INCORRECT, resultState.fieldLabel)
135+
assertEquals(FieldLabel.INCORRECT_PASSWORD, resultState.fieldLabel)
136136

137137
resultState = awaitItem()
138138
assertTrue(resultState.isError)
Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
package com.softartdev.notedelight.presentation.settings.security
22

33
enum class FieldLabel {
4-
ENTER, EMPTY, INCORRECT, NO_MATCH
4+
ENTER_PASSWORD,
5+
CONFIRM_PASSWORD,
6+
ENTER_OLD_PASSWORD,
7+
ENTER_NEW_PASSWORD,
8+
REPEAT_NEW_PASSWORD,
9+
INCORRECT_PASSWORD,
10+
EMPTY_PASSWORD,
11+
PASSWORDS_NOT_MATCH,
512
}

core/presentation/src/commonMain/kotlin/com/softartdev/notedelight/presentation/settings/security/change/ChangeResult.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,15 @@ data class ChangeResult(
66
val loading: Boolean = false,
77
// Old password field
88
val oldPassword: String = "",
9-
val oldPasswordFieldLabel: FieldLabel = FieldLabel.ENTER,
9+
val oldPasswordFieldLabel: FieldLabel = FieldLabel.ENTER_OLD_PASSWORD,
1010
val isOldPasswordError: Boolean = false,
1111
// New password field
1212
val newPassword: String = "",
13-
val newPasswordFieldLabel: FieldLabel = FieldLabel.ENTER,
13+
val newPasswordFieldLabel: FieldLabel = FieldLabel.ENTER_NEW_PASSWORD,
1414
val isNewPasswordError: Boolean = false,
1515
// Repeat new password field
1616
val repeatNewPassword: String = "",
17-
val repeatPasswordFieldLabel: FieldLabel = FieldLabel.ENTER,
17+
val repeatPasswordFieldLabel: FieldLabel = FieldLabel.REPEAT_NEW_PASSWORD,
1818
val isRepeatPasswordError: Boolean = false,
1919
// Common
2020
val snackBarMessageType: String? = null,
@@ -32,9 +32,9 @@ data class ChangeResult(
3232
isOldPasswordError = false,
3333
isNewPasswordError = false,
3434
isRepeatPasswordError = false,
35-
oldPasswordFieldLabel = FieldLabel.ENTER,
36-
newPasswordFieldLabel = FieldLabel.ENTER,
37-
repeatPasswordFieldLabel = FieldLabel.ENTER
35+
oldPasswordFieldLabel = FieldLabel.ENTER_OLD_PASSWORD,
36+
newPasswordFieldLabel = FieldLabel.ENTER_NEW_PASSWORD,
37+
repeatPasswordFieldLabel = FieldLabel.REPEAT_NEW_PASSWORD
3838
)
3939
fun hideSnackBarMessage(): ChangeResult = copy(snackBarMessageType = null)
4040
}

core/presentation/src/commonMain/kotlin/com/softartdev/notedelight/presentation/settings/security/change/ChangeViewModel.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,14 +58,14 @@ class ChangeViewModel(
5858

5959
when {
6060
oldPassword.isEmpty() -> mutableStateFlow.update {
61-
it.copy(oldPasswordFieldLabel = FieldLabel.EMPTY, isOldPasswordError = true)
61+
it.copy(oldPasswordFieldLabel = FieldLabel.EMPTY_PASSWORD, isOldPasswordError = true)
6262
}
6363
newPassword.isEmpty() -> mutableStateFlow.update {
64-
it.copy(newPasswordFieldLabel = FieldLabel.EMPTY, isNewPasswordError = true)
64+
it.copy(newPasswordFieldLabel = FieldLabel.EMPTY_PASSWORD, isNewPasswordError = true)
6565
}
6666
newPassword != repeatNewPassword -> mutableStateFlow.update {
6767
it.copy(
68-
repeatPasswordFieldLabel = FieldLabel.NO_MATCH,
68+
repeatPasswordFieldLabel = FieldLabel.PASSWORDS_NOT_MATCH,
6969
isRepeatPasswordError = true
7070
)
7171
}
@@ -77,7 +77,7 @@ class ChangeViewModel(
7777
}
7878
}
7979
else -> mutableStateFlow.update {
80-
it.copy(oldPasswordFieldLabel = FieldLabel.INCORRECT, isOldPasswordError = true)
80+
it.copy(oldPasswordFieldLabel = FieldLabel.INCORRECT_PASSWORD, isOldPasswordError = true)
8181
}
8282
}
8383
} catch (e: Throwable) {

0 commit comments

Comments
 (0)