diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java index 4a122f69b..58bf3c9a2 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/BaseMainActivity.java @@ -1128,7 +1128,8 @@ public abstract class BaseMainActivity extends BaseActivity //It's not a peertube search if(displayPeertube == null){ if( social != UpdateAccountInfoAsyncTask.SOCIAL.GNU) { - if( social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON || social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA){ + if( (social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON || social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA) + && !query.contains("http://") && !query.contains("https://")){ Intent intent = new Intent(BaseMainActivity.this, SearchResultTabActivity.class); intent.putExtra("search", query); startActivity(intent); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java index b182cbf60..280bcb735 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/API.java @@ -374,46 +374,41 @@ public class API { isPleromaAdmin(account.getAcct()); } } catch (HttpsConnection.HttpsConnectionException e) { - if( e.getStatusCode() == 401 || e.getStatusCode() == 403){ - SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); - Account targetedAccount = new AccountDAO(context, db).getAccountByToken(prefKeyOauthTokenT); - HashMap values = refreshToken(targetedAccount.getClient_id(), targetedAccount.getClient_secret(), targetedAccount.getRefresh_token()); - if( values.containsKey("access_token") && values.get("access_token") != null) { - targetedAccount.setToken(values.get("access_token")); - SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); - String token = sharedpreferences.getString(Helper.PREF_KEY_OAUTH_TOKEN, null); - //This account is currently logged in, the token is updated - if( prefKeyOauthTokenT.equals(token)){ - SharedPreferences.Editor editor = sharedpreferences.edit(); - editor.putString(Helper.PREF_KEY_OAUTH_TOKEN, targetedAccount.getToken()); - editor.apply(); - } - }if( values.containsKey("refresh_token") && values.get("refresh_token") != null) - targetedAccount.setRefresh_token(values.get("refresh_token")); - new AccountDAO(context, db).updateAccount(targetedAccount); - String response; - try { - response = new HttpsConnection(context).get(getAbsoluteUrl("/accounts/verify_credentials"), 60, null, targetedAccount.getToken()); - account = parseAccountResponse(context, new JSONObject(response)); - if( account.getSocial().equals("PLEROMA")){ - isPleromaAdmin(account.getAcct()); - } - } catch (IOException e1) { - e1.printStackTrace(); - } catch (NoSuchAlgorithmException e1) { - e1.printStackTrace(); - } catch (KeyManagementException e1) { - e1.printStackTrace(); - } catch (JSONException e1) { - e1.printStackTrace(); - } catch (HttpsConnection.HttpsConnectionException e1) { - e1.printStackTrace(); - setError(e.getStatusCode(), e); + SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); + Account targetedAccount = new AccountDAO(context, db).getAccountByToken(prefKeyOauthTokenT); + HashMap values = refreshToken(targetedAccount.getClient_id(), targetedAccount.getClient_secret(), targetedAccount.getRefresh_token()); + if( values.containsKey("access_token") && values.get("access_token") != null) { + targetedAccount.setToken(values.get("access_token")); + SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); + String token = sharedpreferences.getString(Helper.PREF_KEY_OAUTH_TOKEN, null); + //This account is currently logged in, the token is updated + if( prefKeyOauthTokenT.equals(token)){ + SharedPreferences.Editor editor = sharedpreferences.edit(); + editor.putString(Helper.PREF_KEY_OAUTH_TOKEN, targetedAccount.getToken()); + editor.apply(); } - }else{ + }if( values.containsKey("refresh_token") && values.get("refresh_token") != null) + targetedAccount.setRefresh_token(values.get("refresh_token")); + new AccountDAO(context, db).updateAccount(targetedAccount); + String response; + try { + response = new HttpsConnection(context).get(getAbsoluteUrl("/accounts/verify_credentials"), 60, null, targetedAccount.getToken()); + account = parseAccountResponse(context, new JSONObject(response)); + if( account.getSocial().equals("PLEROMA")){ + isPleromaAdmin(account.getAcct()); + } + } catch (IOException e1) { + e1.printStackTrace(); + } catch (NoSuchAlgorithmException e1) { + e1.printStackTrace(); + } catch (KeyManagementException e1) { + e1.printStackTrace(); + } catch (JSONException e1) { + e1.printStackTrace(); + } catch (HttpsConnection.HttpsConnectionException e1) { + e1.printStackTrace(); setError(e.getStatusCode(), e); } - e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (IOException e) { diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/PeertubeAPI.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/PeertubeAPI.java index 71f021216..1f5c4152b 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/PeertubeAPI.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/PeertubeAPI.java @@ -380,41 +380,37 @@ public class PeertubeAPI { } catch (JSONException e) { e.printStackTrace(); }catch (HttpsConnection.HttpsConnectionException e) { - if( e.getStatusCode() == 401 || e.getStatusCode() == 403){ - SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); - Account targetedAccount = new AccountDAO(context, db).getAccountByToken(prefKeyOauthTokenT); - HashMap values = refreshToken(targetedAccount.getClient_id(), targetedAccount.getClient_secret(), targetedAccount.getRefresh_token()); - if( values.containsKey("access_token") && values.get("access_token") != null) { - targetedAccount.setToken(values.get("access_token")); - SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); - String token = sharedpreferences.getString(Helper.PREF_KEY_OAUTH_TOKEN, null); - //This account is currently logged in, the token is updated - if( prefKeyOauthTokenT.equals(token)){ - SharedPreferences.Editor editor = sharedpreferences.edit(); - editor.putString(Helper.PREF_KEY_OAUTH_TOKEN, targetedAccount.getToken()); - editor.apply(); - } - }if( values.containsKey("refresh_token") && values.get("refresh_token") != null) - targetedAccount.setRefresh_token(values.get("refresh_token")); - new AccountDAO(context, db).updateAccount(targetedAccount); - String response; - try { - response = new HttpsConnection(context).get(getAbsoluteUrl("/users/me"), 60, null, targetedAccount.getToken()); - JSONObject accountObject = new JSONObject(response).getJSONObject("account"); - account = parseAccountResponsePeertube(context, accountObject); - } catch (IOException e1) { - e1.printStackTrace(); - } catch (NoSuchAlgorithmException e1) { - e1.printStackTrace(); - } catch (KeyManagementException e1) { - e1.printStackTrace(); - } catch (JSONException e1) { - e1.printStackTrace(); - } catch (HttpsConnection.HttpsConnectionException e1) { - e1.printStackTrace(); - setError(e.getStatusCode(), e); + SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); + Account targetedAccount = new AccountDAO(context, db).getAccountByToken(prefKeyOauthTokenT); + HashMap values = refreshToken(targetedAccount.getClient_id(), targetedAccount.getClient_secret(), targetedAccount.getRefresh_token()); + if( values.containsKey("access_token") && values.get("access_token") != null) { + targetedAccount.setToken(values.get("access_token")); + SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); + String token = sharedpreferences.getString(Helper.PREF_KEY_OAUTH_TOKEN, null); + //This account is currently logged in, the token is updated + if( prefKeyOauthTokenT.equals(token)){ + SharedPreferences.Editor editor = sharedpreferences.edit(); + editor.putString(Helper.PREF_KEY_OAUTH_TOKEN, targetedAccount.getToken()); + editor.apply(); } - }else{ + }if( values.containsKey("refresh_token") && values.get("refresh_token") != null) + targetedAccount.setRefresh_token(values.get("refresh_token")); + new AccountDAO(context, db).updateAccount(targetedAccount); + String response; + try { + response = new HttpsConnection(context).get(getAbsoluteUrl("/users/me"), 60, null, targetedAccount.getToken()); + JSONObject accountObject = new JSONObject(response).getJSONObject("account"); + account = parseAccountResponsePeertube(context, accountObject); + } catch (IOException e1) { + e1.printStackTrace(); + } catch (NoSuchAlgorithmException e1) { + e1.printStackTrace(); + } catch (KeyManagementException e1) { + e1.printStackTrace(); + } catch (JSONException e1) { + e1.printStackTrace(); + } catch (HttpsConnection.HttpsConnectionException e1) { + e1.printStackTrace(); setError(e.getStatusCode(), e); } e.printStackTrace(); diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/SearchTagsAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/SearchTagsAdapter.java index a3094dc65..d9a0b202c 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/SearchTagsAdapter.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/SearchTagsAdapter.java @@ -43,7 +43,7 @@ public class SearchTagsAdapter extends RecyclerView.Adapter { public SearchTagsAdapter(Context context, List tags){ this.context = context; - this.tags = ( tags != null)?tags:new ArrayList(); + this.tags = ( tags != null)?tags:new ArrayList<>(); layoutInflater = LayoutInflater.from(context); } @@ -55,7 +55,7 @@ public class SearchTagsAdapter extends RecyclerView.Adapter { @NonNull @Override public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) { - return new ViewHolder(layoutInflater.inflate(R.layout.drawer_tag_search, parent, false)); + return new ViewHolder(layoutInflater.inflate(R.layout.drawer_tag_search_tab, parent, false)); } class ViewHolder extends RecyclerView.ViewHolder{ @@ -69,10 +69,9 @@ public class SearchTagsAdapter extends RecyclerView.Adapter { @Override public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int i) { final ViewHolder holder = (ViewHolder) viewHolder; - final String tag = (String) getItem(i); + final String tag = getItem(i); holder.tag_name.setText(String.format("#%s",tag)); - holder.tag_name.setPaintFlags(holder.tag_name.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); holder.tag_name.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { diff --git a/app/src/main/res/layout/drawer_tag_search_tab.xml b/app/src/main/res/layout/drawer_tag_search_tab.xml new file mode 100644 index 000000000..1f0859e8d --- /dev/null +++ b/app/src/main/res/layout/drawer_tag_search_tab.xml @@ -0,0 +1,31 @@ + + + + + \ No newline at end of file