Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unconfirmed user messages #355

Open
wants to merge 7 commits into
base: develop
Choose a base branch
from
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -114,7 +115,7 @@ Observable<LoadResult<List<Feedback>>> loadFromNetwork(int recipientId) {

return new LoadResult<>(LoadResult.Source.NETWORK, feedbacks);
} else {
throw new Error(apiFeedbackResponse.errorBody().string());
throw new HttpException(apiFeedbackResponse);
}
});
}
Expand All @@ -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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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();
Expand Down Expand Up @@ -130,7 +131,7 @@ public Observable<Integer> 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.");
}
Expand Down Expand Up @@ -167,7 +168,7 @@ public Observable<Integer> 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());
Expand All @@ -182,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
Expand Down Expand Up @@ -322,7 +323,7 @@ Observable<LoadResult<MessageThread>> 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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -127,7 +128,7 @@ Observable<LoadResult<User>> loadFromNetwork(int userId) {
.subscribeOn(Schedulers.io())
.map(apiUserResponse -> {
if (!apiUserResponse.isSuccessful()) {
throw new Error(apiUserResponse.errorBody().string());
throw new HttpException(apiUserResponse);
}

return new LoadResult<>(
Expand All @@ -143,7 +144,7 @@ Observable<List<Integer>> searchByKeyword(String keyword) {
.subscribeOn(Schedulers.io())
.map(apiResponse -> {
if (!apiResponse.isSuccessful()) {
throw new Error(apiResponse.errorBody().string());
throw new HttpException(apiResponse);
}

Collection<ApiUser> apiUsers = apiResponse.body().users.values();
Expand Down Expand Up @@ -178,7 +179,7 @@ Observable<List<UserSearchByLocationResponse.User>> searchByLocation(
.subscribeOn(Schedulers.io())
.map(apiResponse -> {
if (!apiResponse.isSuccessful()) {
throw new Error(apiResponse.errorBody().string());
throw new HttpException(apiResponse);
}

return apiResponse.body().users;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import java.util.Collections;
import java.util.List;
Expand All @@ -24,6 +23,7 @@
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;
Expand Down Expand Up @@ -109,8 +109,7 @@ public void onResume() {
navigationController.navigateToMessageThreads();
}
} else {
Toast.makeText(getContext(), R.string.message_thread_create_failed,
Toast.LENGTH_LONG).show();
HttpErrorHelper.showErrorToast(getContext(), result.throwable);
}
}));
}
Expand Down
3 changes: 2 additions & 1 deletion app/src/main/java/fi/bitrite/android/ws/ui/MapFragment.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
}));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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("");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -23,6 +22,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;
Expand Down Expand Up @@ -165,9 +165,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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);
Expand Down
4 changes: 0 additions & 4 deletions app/src/main/res/values-de/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -222,13 +222,9 @@
<string name="title_fragment_users">Gastgeber</string>
<string name="title_fragment_filter_list">Gastgeber-Filter</string>

<string name="message_thread_create_failed">Fehler beim Erstellen eines neuen Chats.</string>
<string name="messages_reload_failed">Fehler beim Abrufen der Nachrichten.</string>

<string name="message_new_hint">Gib eine Nachricht ein</string>
<string name="message_mark_unread">Als ungelesen markieren</string>
<string name="message_mark_read">Als gelesen markieren</string>
<string name="message_send_failed">Fehler beim Senden der Nachricht.</string>

<string name="remember_password">Passwort speichern?</string>
<string name="button_text_forgot_password">Passwort vergessen?</string>
Expand Down
3 changes: 0 additions & 3 deletions app/src/main/res/values-es/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -223,12 +223,9 @@
<string name="prefs_dev_simulate_no_network_title">Simular Sin Servicio</string>
<string name="message_mark_read">Marcar como leído</string>
<string name="message_mark_unread">Marcar como no leído</string>
<string name="message_send_failed">Fallo al enviar el mensaje.</string>
<string name="menu_goto_profile">Mostrar perfil</string>
<string name="menu_goto_profiles">Mostrar perfiles</string>
<string name="message_new_hint">Escriba un mensaje</string>
<string name="messages_reload_failed">Error al obtener mensajes.</string>
<string name="message_thread_create_failed">Error al crear una nueva conversación.</string>
<string name="feedback_error_sending">El comentario no fue enviado.</string>

<string name="unknown_location">Ubicación desconocida</string>
Expand Down
3 changes: 0 additions & 3 deletions app/src/main/res/values-fr/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -229,12 +229,9 @@
<string name="prefs_dev_simulate_no_network_title">Simuler une absence de service</string>
<string name="message_mark_read">Marque comme lue</string>
<string name="message_mark_unread">Marquer comme non lu</string>
<string name="message_send_failed">Échec de l’envoi du message.</string>
<string name="menu_goto_profile">Montre le profile</string>
<string name="menu_goto_profiles">Afficher les profils</string>
<string name="message_new_hint">Tapez un message</string>
<string name="messages_reload_failed">Erreur lors de l\'obtention de messages.</string>
<string name="message_thread_create_failed">Erreur lors de la création d’une nouvelle conversation.</string>
<string name="feedback_error_sending">L’envoi du commentaire a échoué.</string>

<string name="unknown_location">Position inconnue</string>
Expand Down
4 changes: 0 additions & 4 deletions app/src/main/res/values-it/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -220,13 +220,9 @@
<string name="title_fragment_users">Utenti</string>
<string name="title_fragment_filter_list">Filtro Utenti</string>

<string name="message_thread_create_failed">Impossibile creare un nuovo thread di messaggi.</string>
<string name="messages_reload_failed">Impossibile ricaricare i messaggi.</string>

<string name="message_new_hint">Scrivi un messaggio</string>
<string name="message_mark_unread">Segna come non letto</string>
<string name="message_mark_read">Segna come letto</string>
<string name="message_send_failed">Impossibile inviare il messaggio.</string>

<string name="remember_password">Memorizza la password?</string>
<string name="button_text_forgot_password">Password dimenticata?</string>
Expand Down
6 changes: 2 additions & 4 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -232,13 +232,9 @@
<string name="title_fragment_users">Users</string>
<string name="title_fragment_filter_list">User Filters</string>

<string name="message_thread_create_failed">Failed to create a new message thread.</string>
<string name="messages_reload_failed">Failed to reload the messages.</string>

<string name="message_new_hint">Type a message</string>
<string name="message_mark_unread">Mark unread</string>
<string name="message_mark_read">Mark read</string>
<string name="message_send_failed">Failed to send the message.</string>

<string name="remember_password">Remember password?</string>
<string name="button_text_forgot_password">Forgot your password?</string>
Expand Down Expand Up @@ -272,6 +268,8 @@

<string name="invalid_api_key">The server rejected the request. Please update the app.\n(%1$s)</string>
<string name="login_error_account_ip_temp_blocked">Too many login attempts. Your account is temporarily blocked. Please try again later.</string>
<string name="access_denied">Access denied. Please check your email for account confirmation message.</string>
<string name="internal_server_error">Oops... This is on us, sorry! Something has gone wrong on the server side. Please try again later.</string>

<string name="notification_channel_messages_label" translatable="false">@string/title_fragment_messages</string>
</resources>