Add comprehensive error message parsing to prevent raw JSON display
- Created ErrorMessageParser utility for both iOS (Swift) and Android (Kotlin) - Parser detects JSON-formatted error messages and extracts user-friendly text - Identifies when data objects (not errors) are returned and provides generic messages - Updated all API error handling to pass raw error bodies instead of concatenating - Applied ErrorMessageParser across all ViewModels and screens on both platforms - Fixed ContractorApi and DocumentApi to not concatenate error bodies with messages - Updated ApiResultHandler to automatically parse all error messages - Error messages now show "Request failed. Please check your input and try again." instead of raw JSON 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -148,6 +148,10 @@ struct ResidenceDetailView: View {
|
||||
.onAppear {
|
||||
loadResidenceData()
|
||||
}
|
||||
.handleErrors(
|
||||
error: viewModel.errorMessage,
|
||||
onRetry: { loadResidenceData() }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -158,10 +162,6 @@ private extension ResidenceDetailView {
|
||||
var mainContent: some View {
|
||||
if !hasAppeared || viewModel.isLoading {
|
||||
loadingView
|
||||
} else if let error = viewModel.errorMessage {
|
||||
ErrorView(message: error) {
|
||||
loadResidenceData()
|
||||
}
|
||||
} else if let residence = viewModel.selectedResidence {
|
||||
contentView(for: residence)
|
||||
}
|
||||
@@ -328,7 +328,7 @@ private extension ResidenceDetailView {
|
||||
if result is ApiResultSuccess<KotlinUnit> {
|
||||
dismiss()
|
||||
} else if let errorResult = result as? ApiResultError {
|
||||
self.viewModel.errorMessage = errorResult.message
|
||||
self.viewModel.errorMessage = ErrorMessageParser.parse(errorResult.message)
|
||||
} else {
|
||||
self.viewModel.errorMessage = "Failed to delete residence"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user