mirror of
https://github.com/pierre42100/ComunicAndroid
synced 2024-11-23 22:09:30 +00:00
Removed useless threads.
This commit is contained in:
parent
d5cda41fb6
commit
a90ee9d5f5
@ -0,0 +1,29 @@
|
|||||||
|
package org.communiquons.android.comunic.client.data.enums;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Login result state
|
||||||
|
*
|
||||||
|
* @author Pierre HUBERT
|
||||||
|
*/
|
||||||
|
public enum LoginResult {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Login succeeded
|
||||||
|
*/
|
||||||
|
SUCCESS,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Too many login attempts
|
||||||
|
*/
|
||||||
|
TOO_MANY_ATTEMPTS,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Invalid credentials
|
||||||
|
*/
|
||||||
|
INVALID_CREDENTIALS,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Server error
|
||||||
|
*/
|
||||||
|
SERVER_ERROR
|
||||||
|
}
|
@ -4,18 +4,20 @@ import android.content.Context;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import org.communiquons.android.comunic.client.data.enums.CreateAccountResult;
|
import org.communiquons.android.comunic.client.data.enums.CreateAccountResult;
|
||||||
|
import org.communiquons.android.comunic.client.data.enums.LoginResult;
|
||||||
import org.communiquons.android.comunic.client.data.models.APIRequest;
|
import org.communiquons.android.comunic.client.data.models.APIRequest;
|
||||||
import org.communiquons.android.comunic.client.data.models.APIResponse;
|
import org.communiquons.android.comunic.client.data.models.APIResponse;
|
||||||
import org.communiquons.android.comunic.client.data.models.NewAccount;
|
import org.communiquons.android.comunic.client.data.models.NewAccount;
|
||||||
import org.communiquons.android.comunic.client.data.utils.Utilities;
|
import org.communiquons.android.comunic.client.data.utils.Utilities;
|
||||||
import org.json.JSONArray;
|
import org.json.JSONArray;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Comunic account class
|
* Comunic account helper class
|
||||||
*
|
*
|
||||||
* This class stores the account tokens
|
* This class stores the account tokens
|
||||||
*
|
*
|
||||||
@ -23,7 +25,7 @@ import java.util.Objects;
|
|||||||
* Created by pierre on 10/29/17.
|
* Created by pierre on 10/29/17.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class AccountHelper {
|
public class AccountHelper extends BaseHelper {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Utilities object
|
* Utilities object
|
||||||
@ -41,9 +43,9 @@ public class AccountHelper {
|
|||||||
private String tokFilename = "login_tokens.json";
|
private String tokFilename = "login_tokens.json";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Application context
|
* The name of the userID file
|
||||||
*/
|
*/
|
||||||
private Context mContext;
|
private static final String USER_ID_FILENAME = "user_id.txt";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Account class constructor
|
* Account class constructor
|
||||||
@ -51,27 +53,72 @@ public class AccountHelper {
|
|||||||
* @param context Context of the application
|
* @param context Context of the application
|
||||||
*/
|
*/
|
||||||
public AccountHelper(Context context){
|
public AccountHelper(Context context){
|
||||||
mContext = context;
|
super(context);
|
||||||
|
|
||||||
utils = new Utilities(context);
|
utils = new Utilities(context);
|
||||||
|
|
||||||
//Initialize tokens array
|
//Initialize tokens array
|
||||||
tokens = new ArrayList<>();
|
tokens = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Intend to sign in user
|
||||||
|
*
|
||||||
|
* @param email Email address of the user
|
||||||
|
* @param password The password of the user
|
||||||
|
* @return The result of the operation
|
||||||
|
*/
|
||||||
|
public LoginResult sign_in(String email, String password){
|
||||||
|
|
||||||
|
APIRequest request = new APIRequest(getContext(), "account/login");
|
||||||
|
request.setTryContinueOnError(true);
|
||||||
|
request.addString("userMail", email);
|
||||||
|
request.addString("userPassword", password);
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
APIResponse response = new APIRequestHelper().exec(request);
|
||||||
|
|
||||||
|
//Check for login errors
|
||||||
|
if(response.getResponse_code() != 200){
|
||||||
|
|
||||||
|
return response.getResponse_code() == 429 ?
|
||||||
|
LoginResult.TOO_MANY_ATTEMPTS :
|
||||||
|
LoginResult.INVALID_CREDENTIALS;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//Get login tokens
|
||||||
|
JSONObject tokensObj = response.getJSONObject().getJSONObject("tokens");
|
||||||
|
ArrayList<String> tokens = new ArrayList<>();
|
||||||
|
tokens.add(tokensObj.getString("token1"));
|
||||||
|
tokens.add(tokensObj.getString("token2"));
|
||||||
|
|
||||||
|
//Try to save new tokens
|
||||||
|
if(!save_new_tokens(tokens))
|
||||||
|
return LoginResult.SERVER_ERROR;
|
||||||
|
|
||||||
|
//Get user ID
|
||||||
|
if(fetch_current_user_id() < 1)
|
||||||
|
return LoginResult.SERVER_ERROR;
|
||||||
|
|
||||||
|
//Success
|
||||||
|
return LoginResult.SUCCESS;
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return LoginResult.SERVER_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine whether user is signed in or not
|
* Determine whether user is signed in or not
|
||||||
*
|
*
|
||||||
* @return True if signed in
|
* @return True if signed in
|
||||||
*/
|
*/
|
||||||
public boolean signed_in(){
|
public boolean signed_in() {
|
||||||
|
|
||||||
//Check if tokens are already loaded
|
//Check if tokens are already loaded
|
||||||
if(tokens.size() < 1){
|
return tokens.size() >= 1 || load_tokens();
|
||||||
if(!load_tokens())
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -82,6 +129,103 @@ public class AccountHelper {
|
|||||||
return remove_login_tokens();
|
return remove_login_tokens();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch on the server the current user ID
|
||||||
|
*
|
||||||
|
* @return Current user ID / -1 in case of failure
|
||||||
|
*/
|
||||||
|
private int fetch_current_user_id(){
|
||||||
|
APIRequest request = new APIRequest(getContext(), "user/getCurrentUserID");
|
||||||
|
|
||||||
|
try {
|
||||||
|
APIResponse response = new APIRequestHelper().exec(request);
|
||||||
|
if(response.getResponse_code() != 200)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
int userID = response.getJSONObject().getInt("userID");
|
||||||
|
return save_new_user_id(userID) ? userID : -1;
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the current user ID
|
||||||
|
*
|
||||||
|
* @return The user ID or -1 in case of error
|
||||||
|
*/
|
||||||
|
public int get_current_user_id(){
|
||||||
|
|
||||||
|
//Get file content
|
||||||
|
String userIDString = utils.file_get_content(USER_ID_FILENAME);
|
||||||
|
|
||||||
|
//Convert into an int
|
||||||
|
try {
|
||||||
|
int userID = Integer.decode(userIDString);
|
||||||
|
|
||||||
|
//Return user ID
|
||||||
|
return userID > 0 ? userID : -1;
|
||||||
|
} catch (NumberFormatException e){
|
||||||
|
e.printStackTrace();
|
||||||
|
|
||||||
|
//This is a failure
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save new user ID
|
||||||
|
*
|
||||||
|
* @param id The new ID to save
|
||||||
|
* @return True in case of success / false else
|
||||||
|
*/
|
||||||
|
private boolean save_new_user_id(int id){
|
||||||
|
//Save new file content
|
||||||
|
return utils.file_put_contents(USER_ID_FILENAME, ""+id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new account
|
||||||
|
*
|
||||||
|
* @param newAccount Information about the new account to create
|
||||||
|
* @return TRUE for a success / FALSE else
|
||||||
|
*/
|
||||||
|
public CreateAccountResult createAccount(NewAccount newAccount) {
|
||||||
|
|
||||||
|
APIRequest request = new APIRequest(getContext(), "account/create");
|
||||||
|
request.setTryContinueOnError(true);
|
||||||
|
request.addString("firstName", newAccount.getFirstName());
|
||||||
|
request.addString("lastName", newAccount.getLastName());
|
||||||
|
request.addString("emailAddress", newAccount.getEmail());
|
||||||
|
request.addString("password", newAccount.getPassword());
|
||||||
|
|
||||||
|
//Perform the request
|
||||||
|
try {
|
||||||
|
APIResponse response = new APIRequestHelper().exec(request);
|
||||||
|
|
||||||
|
switch (response.getResponse_code()) {
|
||||||
|
case 200:
|
||||||
|
return CreateAccountResult.SUCCESS;
|
||||||
|
|
||||||
|
case 409:
|
||||||
|
return CreateAccountResult.ERROR_EXISTING_EMAIL;
|
||||||
|
|
||||||
|
case 429:
|
||||||
|
return CreateAccountResult.ERROR_TOO_MANY_REQUESTS;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return CreateAccountResult.ERROR;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return CreateAccountResult.ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Try to load tokens in tokens array
|
* Try to load tokens in tokens array
|
||||||
*
|
*
|
||||||
@ -145,7 +289,7 @@ public class AccountHelper {
|
|||||||
* @param toks The array containing the tokens
|
* @param toks The array containing the tokens
|
||||||
* @return False in case of failure
|
* @return False in case of failure
|
||||||
*/
|
*/
|
||||||
public boolean save_new_tokens(ArrayList<String> toks){
|
private boolean save_new_tokens(ArrayList<String> toks){
|
||||||
|
|
||||||
//Create tokens array
|
//Create tokens array
|
||||||
JSONArray tokens = new JSONArray();
|
JSONArray tokens = new JSONArray();
|
||||||
@ -183,43 +327,5 @@ public class AccountHelper {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new account
|
|
||||||
*
|
|
||||||
* @param newAccount Information about the new account to create
|
|
||||||
* @return TRUE for a success / FALSE else
|
|
||||||
*/
|
|
||||||
public CreateAccountResult createAccount(NewAccount newAccount) {
|
|
||||||
|
|
||||||
APIRequest request = new APIRequest(mContext, "account/create");
|
|
||||||
request.setTryContinueOnError(true);
|
|
||||||
request.addString("firstName", newAccount.getFirstName());
|
|
||||||
request.addString("lastName", newAccount.getLastName());
|
|
||||||
request.addString("emailAddress", newAccount.getEmail());
|
|
||||||
request.addString("password", newAccount.getPassword());
|
|
||||||
|
|
||||||
//Perform the request
|
|
||||||
try {
|
|
||||||
APIResponse response = new APIRequestHelper().exec(request);
|
|
||||||
|
|
||||||
switch (response.getResponse_code()) {
|
|
||||||
case 200:
|
|
||||||
return CreateAccountResult.SUCCESS;
|
|
||||||
|
|
||||||
case 409:
|
|
||||||
return CreateAccountResult.ERROR_EXISTING_EMAIL;
|
|
||||||
|
|
||||||
case 429:
|
|
||||||
return CreateAccountResult.ERROR_TOO_MANY_REQUESTS;
|
|
||||||
|
|
||||||
default:
|
|
||||||
return CreateAccountResult.ERROR;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
return CreateAccountResult.ERROR;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -184,7 +184,7 @@ public class ConversationsListHelper {
|
|||||||
for(Integer id : users.keySet()){
|
for(Integer id : users.keySet()){
|
||||||
|
|
||||||
//Do not display current user name
|
//Do not display current user name
|
||||||
if(id == new AccountUtils(mContext).get_current_user_id())
|
if(id == AccountUtils.getID(mContext))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(users.get(id) != null){
|
if(users.get(id) != null){
|
||||||
|
@ -2,10 +2,7 @@ package org.communiquons.android.comunic.client.data.utils;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
import org.communiquons.android.comunic.client.data.models.APIRequest;
|
import org.communiquons.android.comunic.client.data.helpers.AccountHelper;
|
||||||
import org.communiquons.android.comunic.client.data.asynctasks.APIRequestTask;
|
|
||||||
import org.communiquons.android.comunic.client.data.models.APIResponse;
|
|
||||||
import org.json.JSONObject;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Account utilities functions
|
* Account utilities functions
|
||||||
@ -16,125 +13,6 @@ import org.json.JSONObject;
|
|||||||
|
|
||||||
public class AccountUtils {
|
public class AccountUtils {
|
||||||
|
|
||||||
/**
|
|
||||||
* Execution context
|
|
||||||
*/
|
|
||||||
private Context mContext;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Utilities object
|
|
||||||
*/
|
|
||||||
private Utilities utils;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The name of the userID file
|
|
||||||
*/
|
|
||||||
private static final String USER_ID_FILENAME = "user_id.txt";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The constructor of the object
|
|
||||||
*
|
|
||||||
* @param context The constructor of the application
|
|
||||||
*/
|
|
||||||
public AccountUtils(Context context){
|
|
||||||
|
|
||||||
//Save context
|
|
||||||
mContext = context;
|
|
||||||
|
|
||||||
//Create utilities object
|
|
||||||
utils = new Utilities(context);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This interface has to be implemented and passed as an argument of refresh_current_user_id()
|
|
||||||
*/
|
|
||||||
public interface onceRefreshedUserID{
|
|
||||||
/**
|
|
||||||
* Callback function
|
|
||||||
*
|
|
||||||
* @param success True in case of success / false else
|
|
||||||
*/
|
|
||||||
void callback(boolean success);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Refresh current user ID
|
|
||||||
*
|
|
||||||
* @param callback What to do once userID is refreshed
|
|
||||||
*/
|
|
||||||
public void refresh_current_user_id(final onceRefreshedUserID callback){
|
|
||||||
|
|
||||||
//Perform an API request
|
|
||||||
APIRequest params = new APIRequest(mContext, "user/getCurrentUserID");
|
|
||||||
new APIRequestTask(){
|
|
||||||
@Override
|
|
||||||
protected void onPostExecute(APIResponse result) {
|
|
||||||
|
|
||||||
//Remove old user ID
|
|
||||||
save_new_user_id(-1);
|
|
||||||
|
|
||||||
JSONObject response = result.getJSONObject();
|
|
||||||
|
|
||||||
//Check for errors
|
|
||||||
if(response == null)
|
|
||||||
callback.callback(false);
|
|
||||||
|
|
||||||
|
|
||||||
//Try to extract and save user ID
|
|
||||||
try {
|
|
||||||
assert response != null;
|
|
||||||
int userID = response.getInt("userID");
|
|
||||||
callback.callback(
|
|
||||||
save_new_user_id(userID)); //The success of the operation depends of the
|
|
||||||
//ability to save it too.
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}.execute(params);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Save new user ID
|
|
||||||
*
|
|
||||||
* @param id The new ID to save
|
|
||||||
* @return True in case of success / false else
|
|
||||||
*/
|
|
||||||
private boolean save_new_user_id(int id){
|
|
||||||
|
|
||||||
//Save new file content
|
|
||||||
return utils.file_put_contents(USER_ID_FILENAME, ""+id);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the current user ID
|
|
||||||
*
|
|
||||||
* @return The user ID or -1 in case of error
|
|
||||||
*/
|
|
||||||
public int get_current_user_id(){
|
|
||||||
|
|
||||||
//Get file content
|
|
||||||
String userIDstring = utils.file_get_content(USER_ID_FILENAME);
|
|
||||||
|
|
||||||
//Convert into an int
|
|
||||||
try {
|
|
||||||
int userIDid = Integer.decode(userIDstring);
|
|
||||||
|
|
||||||
//Return user ID
|
|
||||||
return userIDid > 0 ? userIDid : -1;
|
|
||||||
} catch (NumberFormatException e){
|
|
||||||
e.printStackTrace();
|
|
||||||
|
|
||||||
//This is a failure
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the current user ID quickly
|
* Get the current user ID quickly
|
||||||
*
|
*
|
||||||
@ -142,7 +20,7 @@ public class AccountUtils {
|
|||||||
* @return The ID of the current user or -1 in case of failure
|
* @return The ID of the current user or -1 in case of failure
|
||||||
*/
|
*/
|
||||||
public static int getID(Context context){
|
public static int getID(Context context){
|
||||||
return new AccountUtils(context).get_current_user_id();
|
return new AccountHelper(context).get_current_user_id();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,6 @@ package org.communiquons.android.comunic.client.ui.activities;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.annotation.Nullable;
|
|
||||||
import android.support.v7.app.AppCompatActivity;
|
import android.support.v7.app.AppCompatActivity;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
@ -14,17 +13,11 @@ import android.widget.Toast;
|
|||||||
|
|
||||||
import org.communiquons.android.comunic.client.R;
|
import org.communiquons.android.comunic.client.R;
|
||||||
import org.communiquons.android.comunic.client.data.asynctasks.SafeAsyncTask;
|
import org.communiquons.android.comunic.client.data.asynctasks.SafeAsyncTask;
|
||||||
|
import org.communiquons.android.comunic.client.data.enums.LoginResult;
|
||||||
import org.communiquons.android.comunic.client.data.helpers.APIRequestHelper;
|
import org.communiquons.android.comunic.client.data.helpers.APIRequestHelper;
|
||||||
import org.communiquons.android.comunic.client.data.helpers.AccountHelper;
|
import org.communiquons.android.comunic.client.data.helpers.AccountHelper;
|
||||||
import org.communiquons.android.comunic.client.data.models.APIRequest;
|
|
||||||
import org.communiquons.android.comunic.client.data.models.APIResponse;
|
|
||||||
import org.communiquons.android.comunic.client.data.utils.AccountUtils;
|
|
||||||
import org.communiquons.android.comunic.client.data.utils.Utilities;
|
import org.communiquons.android.comunic.client.data.utils.Utilities;
|
||||||
import org.communiquons.android.comunic.client.ui.asynctasks.APIRequestTask;
|
import org.communiquons.android.comunic.client.ui.asynctasks.LoginTask;
|
||||||
import org.json.JSONException;
|
|
||||||
import org.json.JSONObject;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Login activity of the application
|
* Login activity of the application
|
||||||
@ -34,15 +27,10 @@ import java.util.ArrayList;
|
|||||||
|
|
||||||
public class LoginActivity extends AppCompatActivity {
|
public class LoginActivity extends AppCompatActivity {
|
||||||
|
|
||||||
/**
|
|
||||||
* Account utilities object
|
|
||||||
*/
|
|
||||||
private AccountUtils aUtils;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* API request task (to perform login)
|
* API request task (to perform login)
|
||||||
*/
|
*/
|
||||||
private APIRequestTask mApiRequestTask;
|
private LoginTask mLoginTask;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
@ -51,9 +39,6 @@ public class LoginActivity extends AppCompatActivity {
|
|||||||
assert getSupportActionBar() != null;
|
assert getSupportActionBar() != null;
|
||||||
getSupportActionBar().hide();
|
getSupportActionBar().hide();
|
||||||
|
|
||||||
//Create account utilities object
|
|
||||||
aUtils = new AccountUtils(this);
|
|
||||||
|
|
||||||
//Check for connectivity
|
//Check for connectivity
|
||||||
if(!APIRequestHelper.isAPIavailable(this)){
|
if(!APIRequestHelper.isAPIavailable(this)){
|
||||||
Toast.makeText(this, R.string.err_no_internet_connection, Toast.LENGTH_SHORT).show();
|
Toast.makeText(this, R.string.err_no_internet_connection, Toast.LENGTH_SHORT).show();
|
||||||
@ -100,8 +85,8 @@ public class LoginActivity extends AppCompatActivity {
|
|||||||
* Cancel any running task
|
* Cancel any running task
|
||||||
*/
|
*/
|
||||||
private void undoRunningTasks(){
|
private void undoRunningTasks(){
|
||||||
if(mApiRequestTask != null)
|
if(mLoginTask != null)
|
||||||
mApiRequestTask.setOnPostExecuteListener(null);
|
mLoginTask.setOnPostExecuteListener(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -144,23 +129,18 @@ public class LoginActivity extends AppCompatActivity {
|
|||||||
show_form_error("");
|
show_form_error("");
|
||||||
enter_loading_state(true);
|
enter_loading_state(true);
|
||||||
|
|
||||||
|
|
||||||
//Perform a request on the API to check user credentials and get login tokens
|
|
||||||
APIRequest params = new APIRequest(this, "user/connectUSER");
|
|
||||||
params.setTryContinueOnError(true);
|
|
||||||
params.addString("userMail", ""+login_mail.getText());
|
|
||||||
params.addString("userPassword", ""+login_password.getText());
|
|
||||||
|
|
||||||
//Create Request
|
//Create Request
|
||||||
undoRunningTasks();
|
undoRunningTasks();
|
||||||
mApiRequestTask = new APIRequestTask(this);
|
mLoginTask = new LoginTask(this);
|
||||||
mApiRequestTask.setOnPostExecuteListener(new SafeAsyncTask.OnPostExecuteListener<APIResponse>() {
|
mLoginTask.setOnPostExecuteListener(new SafeAsyncTask.OnPostExecuteListener<LoginResult>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void OnPostExecute(APIResponse apiResponse) {
|
public void OnPostExecute(LoginResult loginResult) {
|
||||||
handle_server_response(apiResponse);
|
handle_server_response(loginResult);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
mApiRequestTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params);
|
mLoginTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,
|
||||||
|
""+login_mail.getText(), ""+login_password.getText());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -170,71 +150,30 @@ public class LoginActivity extends AppCompatActivity {
|
|||||||
*
|
*
|
||||||
* @param response The server response
|
* @param response The server response
|
||||||
*/
|
*/
|
||||||
void handle_server_response(@Nullable APIResponse response){
|
void handle_server_response(LoginResult response){
|
||||||
|
|
||||||
if(response == null){
|
|
||||||
show_err_server_response();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(response.getResponse_code() != 200){
|
|
||||||
|
|
||||||
enter_loading_state(false);
|
enter_loading_state(false);
|
||||||
|
|
||||||
if(response.getResponse_code() == 429)
|
switch (response){
|
||||||
show_form_error(getString(R.string.activity_login_too_many_request));
|
|
||||||
else
|
|
||||||
show_form_error(getString(R.string.activity_login_err_invalid_credentials));
|
|
||||||
|
|
||||||
return;
|
case SUCCESS:
|
||||||
}
|
|
||||||
|
|
||||||
JSONObject data = response.getJSONObject();
|
|
||||||
|
|
||||||
//Check for decoding response errors
|
|
||||||
if(data == null) {
|
|
||||||
show_err_server_response();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
//Search for tokens
|
|
||||||
JSONObject tokensObj = data.getJSONObject("tokens");
|
|
||||||
|
|
||||||
//Extract tokens
|
|
||||||
ArrayList<String> tokens = new ArrayList<>();
|
|
||||||
tokens.add(tokensObj.getString("token1"));
|
|
||||||
tokens.add(tokensObj.getString("token2"));
|
|
||||||
|
|
||||||
//Save tokens
|
|
||||||
AccountHelper accountHelper = new AccountHelper(this);
|
|
||||||
if(!accountHelper.save_new_tokens(tokens)) {
|
|
||||||
show_err_server_response();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (JSONException e){
|
|
||||||
e.printStackTrace();
|
|
||||||
show_err_server_response();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Refresh current user ID
|
|
||||||
aUtils.refresh_current_user_id(new AccountUtils.onceRefreshedUserID(){
|
|
||||||
@Override
|
|
||||||
public void callback(boolean success) {
|
|
||||||
|
|
||||||
//Check if it is a success or a failure
|
|
||||||
if(!success){
|
|
||||||
show_err_server_response();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
//Redirect to the main activity
|
|
||||||
openMainActivity();
|
openMainActivity();
|
||||||
}
|
break;
|
||||||
|
|
||||||
|
case TOO_MANY_ATTEMPTS:
|
||||||
|
show_form_error(getString(R.string.activity_login_too_many_request));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case INVALID_CREDENTIALS:
|
||||||
|
show_form_error(getString(R.string.activity_login_err_invalid_credentials));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case SERVER_ERROR:
|
||||||
|
default:
|
||||||
|
show_err_server_response();
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -286,7 +286,7 @@ public class MainActivity extends AppCompatActivity implements
|
|||||||
|
|
||||||
//User personal page
|
//User personal page
|
||||||
else if(id == R.id.action_personal_page){
|
else if(id == R.id.action_personal_page){
|
||||||
openUserPage(new AccountUtils(this).get_current_user_id());
|
openUserPage(new AccountHelper(this).get_current_user_id());
|
||||||
}
|
}
|
||||||
|
|
||||||
//Latest posts
|
//Latest posts
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
package org.communiquons.android.comunic.client.ui.asynctasks;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
import org.communiquons.android.comunic.client.data.asynctasks.SafeAsyncTask;
|
||||||
|
import org.communiquons.android.comunic.client.data.enums.LoginResult;
|
||||||
|
import org.communiquons.android.comunic.client.data.helpers.AccountHelper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* User login task
|
||||||
|
*
|
||||||
|
* @author Pierre HUBERT
|
||||||
|
*/
|
||||||
|
public class LoginTask extends SafeAsyncTask<String, Void, LoginResult> {
|
||||||
|
|
||||||
|
public LoginTask(Context context) {
|
||||||
|
super(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected LoginResult doInBackground(String... strings) {
|
||||||
|
return new AccountHelper(getContext()).sign_in(strings[0], strings[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -260,7 +260,7 @@ public class ConversationFragment extends Fragment
|
|||||||
mAppBar = view.findViewById(R.id.appbar);
|
mAppBar = view.findViewById(R.id.appbar);
|
||||||
|
|
||||||
//Need user ID
|
//Need user ID
|
||||||
userID = new AccountUtils(getActivity()).get_current_user_id();
|
userID = AccountUtils.getID(getActivity());
|
||||||
|
|
||||||
//Initialize toolbar
|
//Initialize toolbar
|
||||||
mAppBar.addBackButton(new View.OnClickListener() {
|
mAppBar.addBackButton(new View.OnClickListener() {
|
||||||
|
@ -246,7 +246,7 @@ public class ConversationsListFragment extends Fragment implements AdapterView.O
|
|||||||
for(int userID : conv.getMembers()){
|
for(int userID : conv.getMembers()){
|
||||||
|
|
||||||
//Do not display current user name
|
//Do not display current user name
|
||||||
if(userID == new AccountUtils(getActivity()).get_current_user_id())
|
if(userID == AccountUtils.getID(getActivity()))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(usersInfo.containsKey(userID)){
|
if(usersInfo.containsKey(userID)){
|
||||||
|
Loading…
Reference in New Issue
Block a user