From 629faaf85aabd690eb941e7283aceea20ec28918 Mon Sep 17 00:00:00 2001 From: Mariha Kozinska Date: Mon, 30 Mar 2020 13:01:51 -0500 Subject: [PATCH 1/7] Show appropriate error message when user is logged in but his account is not confirmed yet. `403 Forbidden` and `500 Internal server error` responses are handled for loading users on a Map and loading threads of Messages. Accordingly `access_denied` and `internal_server_error` strings are added to the resources. --- .../android/ws/api/helper/HttpErrorHelper.java | 11 +++++++++-- .../android/ws/repository/MessageRepository.java | 5 +++-- .../bitrite/android/ws/repository/UserRepository.java | 3 ++- .../java/fi/bitrite/android/ws/ui/MapFragment.java | 3 ++- .../bitrite/android/ws/ui/MessageThreadsFragment.java | 7 ++++--- app/src/main/res/values/strings.xml | 2 ++ 6 files changed, 22 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/fi/bitrite/android/ws/api/helper/HttpErrorHelper.java b/app/src/main/java/fi/bitrite/android/ws/api/helper/HttpErrorHelper.java index 9a1f7a56..9ff3f3a4 100644 --- a/app/src/main/java/fi/bitrite/android/ws/api/helper/HttpErrorHelper.java +++ b/app/src/main/java/fi/bitrite/android/ws/api/helper/HttpErrorHelper.java @@ -2,13 +2,13 @@ import android.content.Context; -import androidx.annotation.StringRes; import android.widget.Toast; import org.json.JSONException; import java.io.IOException; +import androidx.annotation.StringRes; import fi.bitrite.android.ws.R; import fi.bitrite.android.ws.util.Tools; import retrofit2.HttpException; @@ -18,7 +18,14 @@ public class HttpErrorHelper { @StringRes public static int getErrorStringRes(Throwable throwable) { if (throwable instanceof HttpException) { - return R.string.http_server_access_failure; + HttpException httpError = (HttpException) throwable; + if (httpError.code() == 403) { + return R.string.access_denied; + } else if (httpError.code() >= 500) { + return R.string.internal_server_error; + } else { + return R.string.http_server_access_failure; + } } else if (throwable instanceof IOException) { return R.string.io_error; } else if (throwable instanceof JSONException) { diff --git a/app/src/main/java/fi/bitrite/android/ws/repository/MessageRepository.java b/app/src/main/java/fi/bitrite/android/ws/repository/MessageRepository.java index 64c8d4dd..ba9dd543 100644 --- a/app/src/main/java/fi/bitrite/android/ws/repository/MessageRepository.java +++ b/app/src/main/java/fi/bitrite/android/ws/repository/MessageRepository.java @@ -38,6 +38,7 @@ import io.reactivex.Single; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; +import retrofit2.HttpException; /** * Acts as a intermediate to return messages from the database and in the background re-fetching @@ -98,7 +99,7 @@ public Completable reloadThreads() { .observeOn(Schedulers.io()) .flatMapCompletable(apiResponse -> { if (!apiResponse.isSuccessful()) { - throw new Error(apiResponse.errorBody().string()); + return Completable.error(new HttpException(apiResponse)); } MessageThreadListResponse responseBody = apiResponse.body(); @@ -322,7 +323,7 @@ Observable> loadFromNetwork(int threadId) { .subscribeOn(Schedulers.io()) .flatMap(apiResponse -> { if (!apiResponse.isSuccessful()) { - throw new Error(apiResponse.errorBody().string()); + throw new HttpException(apiResponse); } MessageThreadResponse apiThread = apiResponse.body(); diff --git a/app/src/main/java/fi/bitrite/android/ws/repository/UserRepository.java b/app/src/main/java/fi/bitrite/android/ws/repository/UserRepository.java index 91bb92d8..a85b5094 100644 --- a/app/src/main/java/fi/bitrite/android/ws/repository/UserRepository.java +++ b/app/src/main/java/fi/bitrite/android/ws/repository/UserRepository.java @@ -20,6 +20,7 @@ import io.reactivex.Maybe; import io.reactivex.Observable; import io.reactivex.schedulers.Schedulers; +import retrofit2.HttpException; /** * This repository is split into two parts. One lives in the account scope as we need access to its @@ -178,7 +179,7 @@ Observable> searchByLocation( .subscribeOn(Schedulers.io()) .map(apiResponse -> { if (!apiResponse.isSuccessful()) { - throw new Error(apiResponse.errorBody().string()); + throw new HttpException(apiResponse); } return apiResponse.body().users; diff --git a/app/src/main/java/fi/bitrite/android/ws/ui/MapFragment.java b/app/src/main/java/fi/bitrite/android/ws/ui/MapFragment.java index ccac7b05..5708f48d 100644 --- a/app/src/main/java/fi/bitrite/android/ws/ui/MapFragment.java +++ b/app/src/main/java/fi/bitrite/android/ws/ui/MapFragment.java @@ -62,6 +62,7 @@ import butterknife.OnClick; import butterknife.Unbinder; import fi.bitrite.android.ws.R; +import fi.bitrite.android.ws.api.helper.HttpErrorHelper; import fi.bitrite.android.ws.api.response.UserSearchByLocationResponse; import fi.bitrite.android.ws.model.SimpleUser; import fi.bitrite.android.ws.model.User; @@ -566,7 +567,7 @@ private void fetchUsersForCurrentMapPosition() { }, throwable -> { // TODO(saemy): Error handling. Log.e(TAG, throwable.getMessage()); - sendMessage(R.string.http_server_access_failure); + HttpErrorHelper.showErrorToast(getContext(), throwable); })); } diff --git a/app/src/main/java/fi/bitrite/android/ws/ui/MessageThreadsFragment.java b/app/src/main/java/fi/bitrite/android/ws/ui/MessageThreadsFragment.java index 6b51a5e0..db7d51bf 100644 --- a/app/src/main/java/fi/bitrite/android/ws/ui/MessageThreadsFragment.java +++ b/app/src/main/java/fi/bitrite/android/ws/ui/MessageThreadsFragment.java @@ -23,6 +23,7 @@ import butterknife.BindView; import butterknife.ButterKnife; import fi.bitrite.android.ws.R; +import fi.bitrite.android.ws.api.helper.HttpErrorHelper; import fi.bitrite.android.ws.model.MessageThread; import fi.bitrite.android.ws.repository.MessageRepository; import fi.bitrite.android.ws.repository.Resource; @@ -165,9 +166,9 @@ private void reloadThreads() { mMessageRepository.reloadThreads() .observeOn(AndroidSchedulers.mainThread()) .doOnEvent(t -> mSwipeRefresh.setRefreshing(false)) - .subscribe(() -> {}, throwable -> Toast.makeText( - getContext(), R.string.messages_reload_failed, Toast.LENGTH_LONG) - .show())); + .subscribe(() -> {}, + throwable -> HttpErrorHelper.showErrorToast(getContext(), + throwable))); } @Override diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f3755e21..3b5ab404 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -272,6 +272,8 @@ The server rejected the request. Please update the app.\n(%1$s) Too many login attempts. Your account is temporarily blocked. Please try again later. + Access denied. Please check your email for account confirmation message. + Something on the server side went wrong, we are so sorry! Please try again later. @string/title_fragment_messages From e81898cf83a21cdc3119e25af8cb42e0c81e0d0a Mon Sep 17 00:00:00 2001 From: Mariha Kozinska Date: Wed, 8 Apr 2020 22:08:26 -0500 Subject: [PATCH 2/7] Show appropriate error message when user is logged in but his account is not confirmed yet. `403 Forbidden` and `500 Internal server error` responses are handled for searching for users. --- .../fi/bitrite/android/ws/repository/UserRepository.java | 2 +- .../main/java/fi/bitrite/android/ws/ui/SearchFragment.java | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/fi/bitrite/android/ws/repository/UserRepository.java b/app/src/main/java/fi/bitrite/android/ws/repository/UserRepository.java index a85b5094..9a5f1f50 100644 --- a/app/src/main/java/fi/bitrite/android/ws/repository/UserRepository.java +++ b/app/src/main/java/fi/bitrite/android/ws/repository/UserRepository.java @@ -144,7 +144,7 @@ Observable> searchByKeyword(String keyword) { .subscribeOn(Schedulers.io()) .map(apiResponse -> { if (!apiResponse.isSuccessful()) { - throw new Error(apiResponse.errorBody().string()); + throw new HttpException(apiResponse); } Collection apiUsers = apiResponse.body().users.values(); diff --git a/app/src/main/java/fi/bitrite/android/ws/ui/SearchFragment.java b/app/src/main/java/fi/bitrite/android/ws/ui/SearchFragment.java index 6439d877..920e40e9 100644 --- a/app/src/main/java/fi/bitrite/android/ws/ui/SearchFragment.java +++ b/app/src/main/java/fi/bitrite/android/ws/ui/SearchFragment.java @@ -28,6 +28,7 @@ import butterknife.OnItemClick; import fi.bitrite.android.ws.R; import fi.bitrite.android.ws.WSAndroidApplication; +import fi.bitrite.android.ws.api.helper.HttpErrorHelper; import fi.bitrite.android.ws.model.SimpleUser; import fi.bitrite.android.ws.model.User; import fi.bitrite.android.ws.repository.Resource; @@ -125,8 +126,8 @@ public void onResume() { } if (result.throwable != null) { - // TODO(saemy): Better error message. - DialogHelper.alert(getContext(), R.string.http_server_access_failure); + DialogHelper.alert(getContext(), + HttpErrorHelper.getErrorStringRes(result.throwable)); } else { if (result.userIds.isEmpty()) { DialogHelper.alert(getContext(), R.string.no_results); From 2134b4968658ea3ed1d34d33f9615d5a404e3dfd Mon Sep 17 00:00:00 2001 From: Mariha Kozinska Date: Wed, 8 Apr 2020 23:23:49 -0500 Subject: [PATCH 3/7] Exception handling for message threads --- .../ws/repository/MessageRepository.java | 8 +++---- .../android/ws/ui/ContactUserFragment.java | 23 ++++++++++--------- .../android/ws/ui/MessageThreadsFragment.java | 1 - app/src/main/res/values-de/strings.xml | 3 --- app/src/main/res/values-es/strings.xml | 2 -- app/src/main/res/values-fr/strings.xml | 2 -- app/src/main/res/values/strings.xml | 5 +--- 7 files changed, 17 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/fi/bitrite/android/ws/repository/MessageRepository.java b/app/src/main/java/fi/bitrite/android/ws/repository/MessageRepository.java index ba9dd543..0729ea32 100644 --- a/app/src/main/java/fi/bitrite/android/ws/repository/MessageRepository.java +++ b/app/src/main/java/fi/bitrite/android/ws/repository/MessageRepository.java @@ -131,7 +131,7 @@ public Observable createThread(String subject, String message, .filter(response -> { // Throwing errors is not allowed in onSuccess(). if (!response.isSuccessful()) { - throw new Exception(response.errorBody().string()); + throw new HttpException(response); } else if (!response.body().isSuccessful) { throw new Exception("Retreived an unsuccessful response."); } @@ -168,7 +168,7 @@ public Observable createThread(String subject, String message, }); }, throwable -> { Log.e(WSAndroidApplication.TAG, - "Could not chreate the thread: " + throwable.toString()); + "Could not create the thread: " + throwable.toString()); emitter.onError(throwable); }); }).subscribeOn(Schedulers.io()); @@ -183,13 +183,13 @@ public Completable sendMessage(int threadId, String body) { // Creates and saves a new message. MessageThread thread = getRaw(threadId); if (thread == null) { - throw new Error("The thread needs to already be in the cache."); + throw new Exception("The thread needs to already be in the cache."); } int id = getNextPendingMessageId(thread); int authorId = mLoggedInUserHelper.getId(); if (authorId == -1) { - throw new Error("No currently logged in user."); + throw new Exception("No currently logged in user."); } // Creates a temporary message and saves it into the database. We need to clone the diff --git a/app/src/main/java/fi/bitrite/android/ws/ui/ContactUserFragment.java b/app/src/main/java/fi/bitrite/android/ws/ui/ContactUserFragment.java index b5213692..99bfec58 100644 --- a/app/src/main/java/fi/bitrite/android/ws/ui/ContactUserFragment.java +++ b/app/src/main/java/fi/bitrite/android/ws/ui/ContactUserFragment.java @@ -1,9 +1,6 @@ package fi.bitrite.android.ws.ui; import android.os.Bundle; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; @@ -12,18 +9,21 @@ import android.widget.Button; import android.widget.EditText; import android.widget.TextView; -import android.widget.Toast; import java.util.Collections; import java.util.List; import javax.inject.Inject; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import fi.bitrite.android.ws.R; import fi.bitrite.android.ws.WSAndroidApplication; +import fi.bitrite.android.ws.api.helper.HttpErrorHelper; import fi.bitrite.android.ws.model.SimpleUser; import fi.bitrite.android.ws.repository.MessageRepository; import fi.bitrite.android.ws.ui.util.DialogHelper; @@ -109,8 +109,10 @@ public void onResume() { navigationController.navigateToMessageThreads(); } } else { - Toast.makeText(getContext(), R.string.message_thread_create_failed, - Toast.LENGTH_LONG).show(); + Log.d(WSAndroidApplication.TAG, + "Failed to create a new message thread: " + + result.throwable.getMessage()); + HttpErrorHelper.showErrorToast(getContext(), result.throwable); } })); } @@ -135,13 +137,12 @@ public void sendMessageToUser() { .createThread(subject, message, recipients) // We wait for the threadId to become available. .filter(threadId -> threadId != MessageRepository.STATUS_NEW_THREAD_ID_NOT_YET_KNOWN) - .subscribe(threadId -> mLastMessageSendResult.onNext(new MessageSendResult(threadId)), + .subscribe( + threadId -> mLastMessageSendResult.onNext(new MessageSendResult(threadId)), throwable -> { - Log.e(WSAndroidApplication.TAG, - "Failed to create a new message thread: " - + throwable.getMessage()); mLastMessageSendResult.onNext(new MessageSendResult(throwable)); - }); + } + ); } @Override diff --git a/app/src/main/java/fi/bitrite/android/ws/ui/MessageThreadsFragment.java b/app/src/main/java/fi/bitrite/android/ws/ui/MessageThreadsFragment.java index db7d51bf..cc23dc92 100644 --- a/app/src/main/java/fi/bitrite/android/ws/ui/MessageThreadsFragment.java +++ b/app/src/main/java/fi/bitrite/android/ws/ui/MessageThreadsFragment.java @@ -6,7 +6,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.Toast; import java.util.ArrayList; import java.util.HashMap; diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index c398ad7a..839ba78e 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -222,9 +222,6 @@ Gastgeber Gastgeber-Filter - Fehler beim Erstellen eines neuen Chats. - Fehler beim Abrufen der Nachrichten. - Gib eine Nachricht ein Als ungelesen markieren Als gelesen markieren diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 52bf6752..47c7a810 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -227,8 +227,6 @@ Mostrar perfil Mostrar perfiles Escriba un mensaje - Error al obtener mensajes. - Error al crear una nueva conversación. El comentario no fue enviado. Ubicación desconocida diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 1d4dd03c..29614ae6 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -233,8 +233,6 @@ Montre le profile Afficher les profils Tapez un message - Erreur lors de l\'obtention de messages. - Erreur lors de la création d’une nouvelle conversation. L’envoi du commentaire a échoué. Position inconnue diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3b5ab404..1f80322f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -232,9 +232,6 @@ Users User Filters - Failed to create a new message thread. - Failed to reload the messages. - Type a message Mark unread Mark read @@ -273,7 +270,7 @@ The server rejected the request. Please update the app.\n(%1$s) Too many login attempts. Your account is temporarily blocked. Please try again later. Access denied. Please check your email for account confirmation message. - Something on the server side went wrong, we are so sorry! Please try again later. + Oops... This is on us, sorry! Something has gone wrong on the server side. Please try again later. @string/title_fragment_messages From 3c7f55a5632a185daf75ffec70a08643f9a40a5c Mon Sep 17 00:00:00 2001 From: Mariha Kozinska Date: Tue, 14 Apr 2020 17:19:26 -0500 Subject: [PATCH 4/7] Be more specific and throw HttpException instead of Error, where applicable. This way HttpErrorHelper can differentiate exception handling behaviour based on the exception type. --- .../bitrite/android/ws/repository/FeedbackRepository.java | 5 +++-- .../fi/bitrite/android/ws/repository/UserRepository.java | 2 +- .../java/fi/bitrite/android/ws/ui/ContactUserFragment.java | 6 +++--- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/fi/bitrite/android/ws/repository/FeedbackRepository.java b/app/src/main/java/fi/bitrite/android/ws/repository/FeedbackRepository.java index 8489c270..981125da 100644 --- a/app/src/main/java/fi/bitrite/android/ws/repository/FeedbackRepository.java +++ b/app/src/main/java/fi/bitrite/android/ws/repository/FeedbackRepository.java @@ -17,6 +17,7 @@ import io.reactivex.Observable; import io.reactivex.Single; import io.reactivex.schedulers.Schedulers; +import retrofit2.HttpException; /** * This repository is split into two parts. One lives in the account scope as we need access to its @@ -114,7 +115,7 @@ Observable>> loadFromNetwork(int recipientId) { return new LoadResult<>(LoadResult.Source.NETWORK, feedbacks); } else { - throw new Error(apiFeedbackResponse.errorBody().string()); + throw new HttpException(apiFeedbackResponse); } }); } @@ -131,7 +132,7 @@ Completable giveFeedback(int recipientId, @NonNull String body, Feedback.Relatio body, relation, rating, yearWeMet, monthWeMet)) .flatMapCompletable(apiResponse -> { if (!apiResponse.isSuccessful()) { - throw new Error(apiResponse.errorBody().string()); + throw new HttpException(apiResponse); } markAsOld(recipientId); diff --git a/app/src/main/java/fi/bitrite/android/ws/repository/UserRepository.java b/app/src/main/java/fi/bitrite/android/ws/repository/UserRepository.java index 9a5f1f50..2fdc3281 100644 --- a/app/src/main/java/fi/bitrite/android/ws/repository/UserRepository.java +++ b/app/src/main/java/fi/bitrite/android/ws/repository/UserRepository.java @@ -128,7 +128,7 @@ Observable> loadFromNetwork(int userId) { .subscribeOn(Schedulers.io()) .map(apiUserResponse -> { if (!apiUserResponse.isSuccessful()) { - throw new Error(apiUserResponse.errorBody().string()); + throw new HttpException(apiUserResponse); } return new LoadResult<>( diff --git a/app/src/main/java/fi/bitrite/android/ws/ui/ContactUserFragment.java b/app/src/main/java/fi/bitrite/android/ws/ui/ContactUserFragment.java index 99bfec58..947324ef 100644 --- a/app/src/main/java/fi/bitrite/android/ws/ui/ContactUserFragment.java +++ b/app/src/main/java/fi/bitrite/android/ws/ui/ContactUserFragment.java @@ -109,9 +109,6 @@ public void onResume() { navigationController.navigateToMessageThreads(); } } else { - Log.d(WSAndroidApplication.TAG, - "Failed to create a new message thread: " - + result.throwable.getMessage()); HttpErrorHelper.showErrorToast(getContext(), result.throwable); } })); @@ -140,6 +137,9 @@ public void sendMessageToUser() { .subscribe( threadId -> mLastMessageSendResult.onNext(new MessageSendResult(threadId)), throwable -> { + Log.d(WSAndroidApplication.TAG, + "Failed to create a new message thread: " + + throwable.getMessage()); mLastMessageSendResult.onNext(new MessageSendResult(throwable)); } ); From 0ae5ee709c144f64649f902d0c2879df101ae369 Mon Sep 17 00:00:00 2001 From: Mariha Kozinska Date: Tue, 14 Apr 2020 17:39:50 -0500 Subject: [PATCH 5/7] Revert some unintended minor changes --- .../bitrite/android/ws/ui/ContactUserFragment.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/fi/bitrite/android/ws/ui/ContactUserFragment.java b/app/src/main/java/fi/bitrite/android/ws/ui/ContactUserFragment.java index 947324ef..41c23da6 100644 --- a/app/src/main/java/fi/bitrite/android/ws/ui/ContactUserFragment.java +++ b/app/src/main/java/fi/bitrite/android/ws/ui/ContactUserFragment.java @@ -1,6 +1,9 @@ package fi.bitrite.android.ws.ui; import android.os.Bundle; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; @@ -15,9 +18,6 @@ import javax.inject.Inject; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; @@ -134,15 +134,13 @@ public void sendMessageToUser() { .createThread(subject, message, recipients) // We wait for the threadId to become available. .filter(threadId -> threadId != MessageRepository.STATUS_NEW_THREAD_ID_NOT_YET_KNOWN) - .subscribe( - threadId -> mLastMessageSendResult.onNext(new MessageSendResult(threadId)), + .subscribe(threadId -> mLastMessageSendResult.onNext(new MessageSendResult(threadId)), throwable -> { - Log.d(WSAndroidApplication.TAG, + Log.e(WSAndroidApplication.TAG, "Failed to create a new message thread: " + throwable.getMessage()); mLastMessageSendResult.onNext(new MessageSendResult(throwable)); - } - ); + }); } @Override From 44ed71eba56ba6ce88a6e50079f7ac124d050cf5 Mon Sep 17 00:00:00 2001 From: Mariha Kozinska Date: Wed, 15 Apr 2020 11:46:12 -0500 Subject: [PATCH 6/7] Remove previously removed resources from it translation (message_thread_create_failed and messages_reload_failed) --- app/src/main/res/values-it/strings.xml | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index beeec53b..8c9a1c99 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -220,9 +220,6 @@ Utenti Filtro Utenti - Impossibile creare un nuovo thread di messaggi. - Impossibile ricaricare i messaggi. - Scrivi un messaggio Segna come non letto Segna come letto From bcfd24e097730b37480525bb70731c9b9d58c916 Mon Sep 17 00:00:00 2001 From: Mariha Kozinska Date: Wed, 15 Apr 2020 11:59:31 -0500 Subject: [PATCH 7/7] For message send failure, show user reason of a failure. User new what they were doing so instead of simple failure message may be more interested in what actually went wrong. Remove message_send_failed from the resources as it is not used anywhere any more. --- .../java/fi/bitrite/android/ws/ui/MessageThreadFragment.java | 5 ++--- app/src/main/res/values-de/strings.xml | 1 - app/src/main/res/values-es/strings.xml | 1 - app/src/main/res/values-fr/strings.xml | 1 - app/src/main/res/values-it/strings.xml | 1 - app/src/main/res/values/strings.xml | 1 - 6 files changed, 2 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/fi/bitrite/android/ws/ui/MessageThreadFragment.java b/app/src/main/java/fi/bitrite/android/ws/ui/MessageThreadFragment.java index d26dad3c..78f0c63e 100644 --- a/app/src/main/java/fi/bitrite/android/ws/ui/MessageThreadFragment.java +++ b/app/src/main/java/fi/bitrite/android/ws/ui/MessageThreadFragment.java @@ -21,6 +21,7 @@ import butterknife.ButterKnife; import butterknife.OnClick; import fi.bitrite.android.ws.R; +import fi.bitrite.android.ws.api.helper.HttpErrorHelper; import fi.bitrite.android.ws.repository.MessageRepository; import fi.bitrite.android.ws.repository.UserRepository; import fi.bitrite.android.ws.ui.listadapter.MessageListAdapter; @@ -117,9 +118,7 @@ public void onResume() { if (result.throwable != null) { // This should not happen, if there is no network connection we schedule // sending the message for when it is back. - Toast.makeText(getContext(), R.string.message_send_failed, - Toast.LENGTH_LONG) - .show(); + HttpErrorHelper.showErrorToast(getContext(), result.throwable); } else { mEdtNewMessage.setText(""); } diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 839ba78e..1bf5b279 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -225,7 +225,6 @@ Gib eine Nachricht ein Als ungelesen markieren Als gelesen markieren - Fehler beim Senden der Nachricht. Passwort speichern? Passwort vergessen? diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 47c7a810..86169b71 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -223,7 +223,6 @@ Simular Sin Servicio Marcar como leído Marcar como no leído - Fallo al enviar el mensaje. Mostrar perfil Mostrar perfiles Escriba un mensaje diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 29614ae6..f6e3af84 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -229,7 +229,6 @@ Simuler une absence de service Marque comme lue Marquer comme non lu - Échec de l’envoi du message. Montre le profile Afficher les profils Tapez un message diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 8c9a1c99..2deaf593 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -223,7 +223,6 @@ Scrivi un messaggio Segna come non letto Segna come letto - Impossibile inviare il messaggio. Memorizza la password? Password dimenticata? diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1f80322f..5fdabe4a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -235,7 +235,6 @@ Type a message Mark unread Mark read - Failed to send the message. Remember password? Forgot your password?