Skip to content
Snippets Groups Projects
Commit f64d394d authored by I Putu Bakta Hari Sudewa's avatar I Putu Bakta Hari Sudewa
Browse files

Merge branch 'feat/camera' into 'dev'

fix: scan receipt lost connection unhandled exception

See merge request !41
parents 864f4104 97297d2f
Branches
Tags
2 merge requests!46Dev,!41fix: scan receipt lost connection unhandled exception
...@@ -26,13 +26,15 @@ class LoginViewModel : ViewModel() { ...@@ -26,13 +26,15 @@ class LoginViewModel : ViewModel() {
) { ) {
viewModelScope.launch { viewModelScope.launch {
try { try {
val repository = UserRepository(RetrofitClient.getInstance().create(UserService::class.java)) val repository =
UserRepository(RetrofitClient.getInstance().create(UserService::class.java))
val loginResponse = repository.login(email, password) val loginResponse = repository.login(email, password)
if (loginResponse.isSuccessful) { if (loginResponse.isSuccessful) {
_loginResponse.value = loginResponse.body() _loginResponse.value = loginResponse.body()
} else { } else {
_loginResponse.value = LoginResponse(null, loginResponse.errorBody()?.string() ?: "Unknown error") _loginResponse.value =
LoginResponse(null, loginResponse.errorBody()?.string() ?: "Unknown error")
} }
} catch (e: Exception) { } catch (e: Exception) {
_loginResponse.value = LoginResponse(null, "Something went wrong") _loginResponse.value = LoginResponse(null, "Something went wrong")
...@@ -43,13 +45,20 @@ class LoginViewModel : ViewModel() { ...@@ -43,13 +45,20 @@ class LoginViewModel : ViewModel() {
fun checkToken(bearerToken: String) { fun checkToken(bearerToken: String) {
viewModelScope.launch { viewModelScope.launch {
try { try {
val repository = UserRepository(RetrofitClient.getInstanceWithAuth(bearerToken).create(UserService::class.java)) val repository = UserRepository(
RetrofitClient.getInstanceWithAuth(bearerToken).create(UserService::class.java)
)
val tokenResponse = repository.checkToken() val tokenResponse = repository.checkToken()
if (tokenResponse.isSuccessful) { if (tokenResponse.isSuccessful) {
_tokenResponse.value = tokenResponse.body() _tokenResponse.value = tokenResponse.body()
} else { } else {
_tokenResponse.value = TokenResponse("", 0, 0, tokenResponse.errorBody()?.string() ?: "Unknown error") _tokenResponse.value = TokenResponse(
"",
0,
0,
tokenResponse.errorBody()?.string() ?: "Unknown error"
)
} }
} catch (e: Exception) { } catch (e: Exception) {
_tokenResponse.value = TokenResponse("", 0, 0, e.message ?: "Unknown error") _tokenResponse.value = TokenResponse("", 0, 0, e.message ?: "Unknown error")
......
...@@ -12,6 +12,7 @@ import okhttp3.MediaType ...@@ -12,6 +12,7 @@ import okhttp3.MediaType
import okhttp3.MultipartBody import okhttp3.MultipartBody
import okhttp3.RequestBody import okhttp3.RequestBody
import java.io.File import java.io.File
import java.net.UnknownHostException
class ScanReceiptViewModel : ViewModel() { class ScanReceiptViewModel : ViewModel() {
private val _scanReceiptResponse = MutableLiveData<ScanReceiptResponseItemsWrapper>() private val _scanReceiptResponse = MutableLiveData<ScanReceiptResponseItemsWrapper>()
...@@ -22,31 +23,43 @@ class ScanReceiptViewModel : ViewModel() { ...@@ -22,31 +23,43 @@ class ScanReceiptViewModel : ViewModel() {
bearerToken: String, bearerToken: String,
) { ) {
viewModelScope.launch { viewModelScope.launch {
val repository = try {
ScanReceiptRepository( val repository =
RetrofitClient.getInstanceWithAuth(bearerToken) ScanReceiptRepository(
.create(ScanReceiptService::class.java), RetrofitClient.getInstanceWithAuth(bearerToken)
) .create(ScanReceiptService::class.java),
val formData = )
MultipartBody.Part.createFormData( val formData =
"file", MultipartBody.Part.createFormData(
scanReceiptImageFile.name, "file",
RequestBody.create(MediaType.parse("image/*"), scanReceiptImageFile), scanReceiptImageFile.name,
) RequestBody.create(MediaType.parse("image/*"), scanReceiptImageFile),
val scanReceiptResponse = repository.scanReceipt(formData) )
val scanReceiptResponse = repository.scanReceipt(formData)
if (scanReceiptResponse.isSuccessful) { if (scanReceiptResponse.isSuccessful) {
_scanReceiptResponse.value = scanReceiptResponse.body() _scanReceiptResponse.value = scanReceiptResponse.body()
} else { } else {
val error = val error =
when (scanReceiptResponse.code()) { when (scanReceiptResponse.code()) {
401 -> "Upload receipt failed. Unauthorized" 401 -> "Upload receipt failed. Unauthorized."
413 -> "Upload receipt failed. File too large" 413 -> "Upload receipt failed. File too large."
else -> "Upload receipt failed. Unknown Error" else -> "Upload receipt failed. Unknown Error."
} }
_scanReceiptResponse.value =
ScanReceiptResponseItemsWrapper(null, error)
}
} catch (e: UnknownHostException) {
_scanReceiptResponse.value = _scanReceiptResponse.value =
ScanReceiptResponseItemsWrapper(null, error) ScanReceiptResponseItemsWrapper(
null,
"You're offline. Please check your internet."
)
} catch (e: Exception) {
_scanReceiptResponse.value =
ScanReceiptResponseItemsWrapper(null, "Something went wrong. Please try again.")
} }
} }
} }
} }
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment