Skip to content

Commit b532433

Browse files
dadachiclaude
andauthored
Clean up legacy Number Tag/NFC artifacts and tighten utilities (#44)
- Remove leftover terminology and dead code from the previous "Number Tag" / NFC / QR-image feature set: README copy, NATA-3xxx error code row in CLAUDE.md, and the unused FileProvider declaration plus its filepaths.xml resource. - Tighten validation messaging and small utilities: clarify item tag validation error messages, drop unused card date/time string overloads (production only uses String.cardDateTimeString), and rename validateEmail -> isValidEmail to match the is* boolean-predicate convention. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent 07b77ad commit b532433

19 files changed

Lines changed: 40 additions & 163 deletions

CLAUDE.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ All errors should use the `CodedError` interface. Error codes use the `NATA-XXXX
5555
|-------|------|-------------|
5656
| NATA-1xxx | App/general errors | Unexpected errors, catch-all |
5757
| NATA-2xxx | API/network errors | HTTP request failures, parsing errors |
58-
| NATA-3xxx | NFC/scan errors | NFC tag read/write/scan failures |
5958

6059
- New error types must implement `CodedError`
6160
- Use `codedDescription` (not `message` or `localizedMessage`) in all user-facing error messages — this prepends `[NATA-XXXX]` for `CodedError` types

README.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,10 @@ NativeAppTemplate-Free-Android uses modern Android development tools and practic
3737
- Email Confirmation
3838
- Forgot Password
3939
- CRUD Operations for Shops (Create/Read/Update/Delete)
40-
- CRUD Operations for Shops' Nested Resource, Number Tags (ItemTags) (Create/Read/Update/Delete)
40+
- CRUD Operations for Shops' Nested Resource, Item Tags (Create/Read/Update/Delete)
4141
- Force App Version Update
4242
- Force Privacy Policy Version Update
4343
- Force Terms of Use Version Update
44-
- Generate QR Code Image for Number Tags (ItemTags) with a Centered Number
45-
- NFC features for Number Tags (ItemTags): Write Application Info to a Tag, Read a Tag, Background Tag Reading
4644
- And more!
4745

4846
## NFC Tag Operations

app/src/main/AndroidManifest.xml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,5 @@
2626
<category android:name="android.intent.category.LAUNCHER" />
2727
</intent-filter>
2828
</activity>
29-
<provider
30-
android:name="androidx.core.content.FileProvider"
31-
android:authorities="${applicationId}.fileprovider"
32-
android:grantUriPermissions="true"
33-
android:exported="false">
34-
<meta-data
35-
android:name="android.support.FILE_PROVIDER_PATHS"
36-
android:resource="@xml/filepaths" />
37-
</provider>
3829
</application>
3930
</manifest>

app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/ForgotPasswordViewModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import com.nativeapptemplate.nativeapptemplatefree.NatConstants
66
import com.nativeapptemplate.nativeapptemplatefree.common.errors.codedDescription
77
import com.nativeapptemplate.nativeapptemplatefree.data.login.SignUpRepository
88
import com.nativeapptemplate.nativeapptemplatefree.model.SendResetPassword
9-
import com.nativeapptemplate.nativeapptemplatefree.utils.Utility.validateEmail
9+
import com.nativeapptemplate.nativeapptemplatefree.utils.Utility.isValidEmail
1010
import dagger.hilt.android.lifecycle.HiltViewModel
1111
import kotlinx.coroutines.flow.MutableStateFlow
1212
import kotlinx.coroutines.flow.StateFlow
@@ -75,7 +75,7 @@ class ForgotPasswordViewModel @Inject constructor(
7575
fun hasInvalidDataEmail(): Boolean {
7676
if (uiState.value.email.isBlank()) return true
7777

78-
return !uiState.value.email.validateEmail()
78+
return !uiState.value.email.isValidEmail()
7979
}
8080

8181
fun updateEmail(newEmail: String) {

app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/ResendConfirmationInstructionsViewModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import com.nativeapptemplate.nativeapptemplatefree.NatConstants
66
import com.nativeapptemplate.nativeapptemplatefree.common.errors.codedDescription
77
import com.nativeapptemplate.nativeapptemplatefree.data.login.SignUpRepository
88
import com.nativeapptemplate.nativeapptemplatefree.model.SendConfirmation
9-
import com.nativeapptemplate.nativeapptemplatefree.utils.Utility.validateEmail
9+
import com.nativeapptemplate.nativeapptemplatefree.utils.Utility.isValidEmail
1010
import dagger.hilt.android.lifecycle.HiltViewModel
1111
import kotlinx.coroutines.flow.MutableStateFlow
1212
import kotlinx.coroutines.flow.StateFlow
@@ -75,7 +75,7 @@ class ResendConfirmationInstructionsViewModel @Inject constructor(
7575
fun hasInvalidDataEmail(): Boolean {
7676
if (uiState.value.email.isBlank()) return true
7777

78-
return !uiState.value.email.validateEmail()
78+
return !uiState.value.email.isValidEmail()
7979
}
8080

8181
fun updateEmail(newEmail: String) {

app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/SignInEmailAndPasswordViewModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import com.nativeapptemplate.nativeapptemplatefree.data.login.LoginRepository
99
import com.nativeapptemplate.nativeapptemplatefree.model.LoggedInShopkeeper
1010
import com.nativeapptemplate.nativeapptemplatefree.model.Login
1111
import com.nativeapptemplate.nativeapptemplatefree.model.Permissions
12-
import com.nativeapptemplate.nativeapptemplatefree.utils.Utility.validateEmail
12+
import com.nativeapptemplate.nativeapptemplatefree.utils.Utility.isValidEmail
1313
import dagger.hilt.android.lifecycle.HiltViewModel
1414
import kotlinx.coroutines.flow.Flow
1515
import kotlinx.coroutines.flow.MutableStateFlow
@@ -94,7 +94,7 @@ class SignInEmailAndPasswordViewModel @Inject constructor(
9494
fun hasInvalidDataEmail(): Boolean {
9595
if (uiState.value.email.isBlank()) return true
9696

97-
return !uiState.value.email.validateEmail()
97+
return !uiState.value.email.isValidEmail()
9898
}
9999

100100
fun hasInvalidDataPassword(): Boolean {

app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/app_root/SignUpViewModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import com.nativeapptemplate.nativeapptemplatefree.common.errors.codedDescriptio
77
import com.nativeapptemplate.nativeapptemplatefree.data.login.SignUpRepository
88
import com.nativeapptemplate.nativeapptemplatefree.model.SignUp
99
import com.nativeapptemplate.nativeapptemplatefree.model.TimeZones
10-
import com.nativeapptemplate.nativeapptemplatefree.utils.Utility.validateEmail
10+
import com.nativeapptemplate.nativeapptemplatefree.utils.Utility.isValidEmail
1111
import dagger.hilt.android.lifecycle.HiltViewModel
1212
import kotlinx.coroutines.flow.MutableStateFlow
1313
import kotlinx.coroutines.flow.StateFlow
@@ -88,7 +88,7 @@ class SignUpViewModel @Inject constructor(
8888
fun hasInvalidDataEmail(): Boolean {
8989
if (uiState.value.email.isBlank()) return true
9090

91-
return !uiState.value.email.validateEmail()
91+
return !uiState.value.email.isValidEmail()
9292
}
9393

9494
fun hasInvalidDataPassword(): Boolean {

app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/ui/settings/ShopkeeperEditViewModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import com.nativeapptemplate.nativeapptemplatefree.data.login.SignUpRepository
99
import com.nativeapptemplate.nativeapptemplatefree.model.SignUpForUpdate
1010
import com.nativeapptemplate.nativeapptemplatefree.model.TimeZones
1111
import com.nativeapptemplate.nativeapptemplatefree.model.UserData
12-
import com.nativeapptemplate.nativeapptemplatefree.utils.Utility.validateEmail
12+
import com.nativeapptemplate.nativeapptemplatefree.utils.Utility.isValidEmail
1313
import dagger.hilt.android.lifecycle.HiltViewModel
1414
import kotlinx.coroutines.flow.Flow
1515
import kotlinx.coroutines.flow.MutableStateFlow
@@ -198,7 +198,7 @@ class ShopkeeperEditViewModel @Inject constructor(
198198
fun hasInvalidDataEmail(): Boolean {
199199
if (uiState.value.email.isBlank()) return true
200200

201-
return !uiState.value.email.validateEmail()
201+
return !uiState.value.email.isValidEmail()
202202
}
203203

204204
fun updateName(newName: String) {

app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/utils/DateUtility.kt

Lines changed: 3 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -4,38 +4,12 @@ import java.time.ZoneId
44
import java.time.ZonedDateTime
55

66
object DateUtility {
7-
fun ZonedDateTime.cardDateString(): String {
8-
val dateTimeFormatter = DateTimeFormatterUtility.cardDateFormatter()
9-
return this.format(dateTimeFormatter)
10-
}
11-
12-
fun String.cardDateString(zoneId: ZoneId = ZoneId.systemDefault()): String {
13-
if (this.isBlank()) return ""
14-
15-
val date = ZonedDateTime.parse(this).withZoneSameInstant(zoneId)
16-
return date.cardDateString()
17-
}
18-
19-
fun ZonedDateTime.cardTimeString(): String {
20-
val dateTimeFormatter = DateTimeFormatterUtility.cardTimeFormatter()
21-
return this.format(dateTimeFormatter)
22-
}
23-
24-
fun String.cardTimeString(zoneId: ZoneId = ZoneId.systemDefault()): String {
25-
if (this.isBlank()) return ""
26-
27-
val date = ZonedDateTime.parse(this).withZoneSameInstant(zoneId)
28-
return date.cardTimeString()
29-
}
30-
31-
fun ZonedDateTime.cardDateTimeString(): String {
32-
return "${this.cardDateString()} ${this.cardTimeString()}"
33-
}
34-
357
fun String.cardDateTimeString(zoneId: ZoneId = ZoneId.systemDefault()): String {
368
if (this.isBlank()) return ""
379

3810
val date = ZonedDateTime.parse(this).withZoneSameInstant(zoneId)
39-
return date.cardDateTimeString()
11+
val dateString = date.format(DateTimeFormatterUtility.cardDateFormatter())
12+
val timeString = date.format(DateTimeFormatterUtility.cardTimeFormatter())
13+
return "$dateString $timeString"
4014
}
4115
}

app/src/main/kotlin/com/nativeapptemplate/nativeapptemplatefree/utils/Utility.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import com.nativeapptemplate.nativeapptemplatefree.R
1212
import java.util.Locale
1313

1414
object Utility {
15-
fun String.validateEmail(): Boolean {
15+
fun String.isValidEmail(): Boolean {
1616
return this.isNotEmpty() && android.util.Patterns.EMAIL_ADDRESS.matcher(this).matches()
1717
}
1818

0 commit comments

Comments
 (0)