From 94c23c9238b75db64c5cabfff70f80cd6ffa4b1b Mon Sep 17 00:00:00 2001 From: stom79 Date: Sun, 23 Sep 2018 17:50:10 +0200 Subject: Fit preview images in a grid --- app/build.gradle | 4 +- .../release/app-playstore-release-1.13.5.apk | Bin 0 -> 8068100 bytes .../mastodon/activities/BaseMainActivity.java | 9 ++ .../asynctasks/RetrieveMissingFeedsAsyncTask.java | 3 - .../etalab/mastodon/client/Entities/Account.java | 125 +++++++++++---------- .../fr/gouv/etalab/mastodon/helper/Helper.java | 1 - 6 files changed, 74 insertions(+), 68 deletions(-) create mode 100644 app/playstore/release/app-playstore-release-1.13.5.apk diff --git a/app/build.gradle b/app/build.gradle index 4c4fa7eab..86387585b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,8 +7,8 @@ android { applicationId "fr.gouv.etalab.mastodon" minSdkVersion 15 targetSdkVersion 27 - versionCode 142 - versionName "1.13.4" + versionCode 143 + versionName "1.13.5" } flavorDimensions "default" buildTypes { diff --git a/app/playstore/release/app-playstore-release-1.13.5.apk b/app/playstore/release/app-playstore-release-1.13.5.apk new file mode 100644 index 000000000..0ffacbf9f Binary files /dev/null and b/app/playstore/release/app-playstore-release-1.13.5.apk differ 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 0668597c2..07d20c655 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 @@ -1161,6 +1161,7 @@ public abstract class BaseMainActivity extends BaseActivity b.putString("accountId", extras.getString(INTENT_TARGETED_ACCOUNT)); intentShow.putExtras(b); startActivity(intentShow); + } }else if( extras.getInt(INTENT_ACTION) == HOME_TIMELINE_INTENT){ changeUser(BaseMainActivity.this, userIdIntent, true); //Connects the account which is related to the notification @@ -1184,6 +1185,10 @@ public abstract class BaseMainActivity extends BaseActivity startActivity(myIntent); }else if (extras.getInt(INTENT_ACTION) == SEARCH_REMOTE) { String url = extras.getString(SEARCH_URL); + intent.replaceExtras(new Bundle()); + intent.setAction(""); + intent.setData(null); + intent.setFlags(0); if( url == null) return; Matcher matcher; @@ -1258,6 +1263,10 @@ public abstract class BaseMainActivity extends BaseActivity } }else if (Intent.ACTION_VIEW.equals(action)) { String url = intent.getDataString(); + intent.replaceExtras(new Bundle()); + intent.setAction(""); + intent.setData(null); + intent.setFlags(0); if( url == null) return; Matcher matcher; diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/RetrieveMissingFeedsAsyncTask.java b/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/RetrieveMissingFeedsAsyncTask.java index 47533f8f6..902828191 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/RetrieveMissingFeedsAsyncTask.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/asynctasks/RetrieveMissingFeedsAsyncTask.java @@ -59,9 +59,6 @@ public class RetrieveMissingFeedsAsyncTask extends AsyncTask { @Override protected Void doInBackground(Void... params) { - boolean connectectedToInternet = Helper.isConnectedToInternet(contextReference.get(),Helper.getLiveInstance(contextReference.get())); - if(!connectectedToInternet) - return null; API api = new API(this.contextReference.get()); List tempStatus; APIResponse apiResponse = null; diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java index e9e3a784f..b8d850c8d 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/client/Entities/Account.java @@ -479,68 +479,69 @@ public class Account implements Parcelable { final int[] i = {0}; for (final Emojis emoji : emojis) { fields = account.getFields(); - if( !((Activity) context).isFinishing()) - Glide.with(context) - .asBitmap() - .load(emoji.getUrl()) - .into(new SimpleTarget() { - @Override - public void onResourceReady(@NonNull Bitmap resource, Transition transition) { - final String targetedEmoji = ":" + emoji.getShortcode() + ":"; - - if (noteSpan != null && noteSpan.toString().contains(targetedEmoji)) { - //emojis can be used several times so we have to loop - for (int startPosition = -1; (startPosition = noteSpan.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) { - final int endPosition = startPosition + targetedEmoji.length(); - if(endPosition <= noteSpan.toString().length() && endPosition >= startPosition) - noteSpan.setSpan( - new ImageSpan(context, - Bitmap.createScaledBitmap(resource, (int) Helper.convertDpToPixel(20, context), - (int) Helper.convertDpToPixel(20, context), false)), startPosition, - endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); - } - } - if (displayNameSpan != null && displayNameSpan.toString().contains(targetedEmoji)) { - //emojis can be used several times so we have to loop - for (int startPosition = -1; (startPosition = displayNameSpan.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) { - final int endPosition = startPosition + targetedEmoji.length(); - if(endPosition <= displayNameSpan.toString().length() && endPosition >= startPosition) - displayNameSpan.setSpan( - new ImageSpan(context, - Bitmap.createScaledBitmap(resource, (int) Helper.convertDpToPixel(20, context), - (int) Helper.convertDpToPixel(20, context), false)), startPosition, - endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); - } - } - Iterator it = fieldsSpan.entrySet().iterator(); - while (it.hasNext()) { - Map.Entry pair = (Map.Entry)it.next(); - SpannableString fieldSpan = (SpannableString) pair.getValue(); - if (fieldSpan.toString().contains(targetedEmoji)) { - //emojis can be used several times so we have to loop - for (int startPosition = -1; (startPosition = fieldSpan.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) { - final int endPosition = startPosition + targetedEmoji.length(); - if(endPosition <= fieldSpan.toString().length() && endPosition >= startPosition) - fieldSpan.setSpan( - new ImageSpan(context, - Bitmap.createScaledBitmap(resource, (int) Helper.convertDpToPixel(20, context), - (int) Helper.convertDpToPixel(20, context), false)), startPosition, - endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); - } - fieldsSpan.put((String)pair.getKey(), fieldSpan); - } - } - - i[0]++; - if( i[0] == (emojis.size())) { - if( noteSpan != null) - account.setNoteSpan(noteSpan); - account.setFieldsSpan(fieldsSpan); - if( listener != null) - listener.onRetrieveEmojiAccount(account); - } - } - }); + try { + Glide.with(context) + .asBitmap() + .load(emoji.getUrl()) + .into(new SimpleTarget() { + @Override + public void onResourceReady(@NonNull Bitmap resource, Transition transition) { + final String targetedEmoji = ":" + emoji.getShortcode() + ":"; + + if (noteSpan != null && noteSpan.toString().contains(targetedEmoji)) { + //emojis can be used several times so we have to loop + for (int startPosition = -1; (startPosition = noteSpan.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) { + final int endPosition = startPosition + targetedEmoji.length(); + if (endPosition <= noteSpan.toString().length() && endPosition >= startPosition) + noteSpan.setSpan( + new ImageSpan(context, + Bitmap.createScaledBitmap(resource, (int) Helper.convertDpToPixel(20, context), + (int) Helper.convertDpToPixel(20, context), false)), startPosition, + endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); + } + } + if (displayNameSpan != null && displayNameSpan.toString().contains(targetedEmoji)) { + //emojis can be used several times so we have to loop + for (int startPosition = -1; (startPosition = displayNameSpan.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) { + final int endPosition = startPosition + targetedEmoji.length(); + if (endPosition <= displayNameSpan.toString().length() && endPosition >= startPosition) + displayNameSpan.setSpan( + new ImageSpan(context, + Bitmap.createScaledBitmap(resource, (int) Helper.convertDpToPixel(20, context), + (int) Helper.convertDpToPixel(20, context), false)), startPosition, + endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); + } + } + Iterator it = fieldsSpan.entrySet().iterator(); + while (it.hasNext()) { + Map.Entry pair = (Map.Entry) it.next(); + SpannableString fieldSpan = (SpannableString) pair.getValue(); + if (fieldSpan.toString().contains(targetedEmoji)) { + //emojis can be used several times so we have to loop + for (int startPosition = -1; (startPosition = fieldSpan.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) { + final int endPosition = startPosition + targetedEmoji.length(); + if (endPosition <= fieldSpan.toString().length() && endPosition >= startPosition) + fieldSpan.setSpan( + new ImageSpan(context, + Bitmap.createScaledBitmap(resource, (int) Helper.convertDpToPixel(20, context), + (int) Helper.convertDpToPixel(20, context), false)), startPosition, + endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); + } + fieldsSpan.put((String) pair.getKey(), fieldSpan); + } + } + + i[0]++; + if (i[0] == (emojis.size())) { + if (noteSpan != null) + account.setNoteSpan(noteSpan); + account.setFieldsSpan(fieldsSpan); + if (listener != null) + listener.onRetrieveEmojiAccount(account); + } + } + }); + }catch (Exception ignored){} } } diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java index cb5c9a6c8..79418a32a 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java @@ -442,7 +442,6 @@ public class Helper { * Check if the user is connected to Internet * @return boolean */ - @SuppressWarnings("unused") public static boolean isConnectedToInternet(Context context, String instance) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if( cm == null) -- cgit v1.2.3