Prepares release 1.18.2

This commit is contained in:
stom79 2018-11-01 16:37:49 +01:00
parent c5faa70daa
commit a0d7ed4efa
3 changed files with 74 additions and 25 deletions

View File

@ -7,8 +7,8 @@ android {
applicationId "fr.gouv.etalab.mastodon" applicationId "fr.gouv.etalab.mastodon"
minSdkVersion 15 minSdkVersion 15
targetSdkVersion 28 targetSdkVersion 28
versionCode 169 versionCode 170
versionName "1.18.1" versionName "1.18.2"
} }
flavorDimensions "default" flavorDimensions "default"
buildTypes { buildTypes {

View File

@ -762,7 +762,7 @@ public class ShowAccountActivity extends BaseActivity implements OnPostActionInt
account_un.setText(String.format("@%s", account.getAcct())); account_un.setText(String.format("@%s", account.getAcct()));
SpannableString spannableString = Helper.clickableElementsDescription(ShowAccountActivity.this, account.getNote(), account.getEmojis()); SpannableString spannableString = Helper.clickableElementsDescription(ShowAccountActivity.this, account.getNote(), account.getEmojis());
account.setNoteSpan(spannableString); account.setNoteSpan(spannableString);
account.makeEmojisAccount(ShowAccountActivity.this, ShowAccountActivity.this); account.makeEmojisAccountProfile(ShowAccountActivity.this, ShowAccountActivity.this);
account_note.setText(account.getNoteSpan(), TextView.BufferType.SPANNABLE); account_note.setText(account.getNoteSpan(), TextView.BufferType.SPANNABLE);
account_note.setMovementMethod(LinkMovementMethod.getInstance()); account_note.setMovementMethod(LinkMovementMethod.getInstance());
if (!peertubeAccount && tabLayout.getTabAt(0) != null && tabLayout.getTabAt(1) != null && tabLayout.getTabAt(2) != null) { if (!peertubeAccount && tabLayout.getTabAt(0) != null && tabLayout.getTabAt(1) != null && tabLayout.getTabAt(2) != null) {

View File

@ -483,14 +483,13 @@ public class Account implements Parcelable {
return spannableString; return spannableString;
} }
public void makeEmojisAccount(final Context context, final OnRetrieveEmojiAccountInterface listener){ public void makeEmojisAccountProfile(final Context context, final OnRetrieveEmojiAccountInterface listener){
if( ((Activity)context).isFinishing() ) if( ((Activity)context).isFinishing() )
return; return;
fields = new LinkedHashMap<>(); if( fields == null)
fieldsVerified = new LinkedHashMap<>(); fields = new LinkedHashMap<>();
fieldsSpan = new LinkedHashMap<>(); if( fieldsSpan == null)
noteSpan = account.getNoteSpan(); fieldsSpan = new LinkedHashMap<>();
if( account.getDisplay_name() != null) if( account.getDisplay_name() != null)
displayNameSpan = new SpannableString(account.getDisplay_name()); displayNameSpan = new SpannableString(account.getDisplay_name());
if( account.getFields() != null && account.getFields().size() > 0) { if( account.getFields() != null && account.getFields().size() > 0) {
@ -565,22 +564,6 @@ public class Account implements Parcelable {
fieldsSpan.put((SpannableString) pair.getKey(), fieldSpan); fieldsSpan.put((SpannableString) pair.getKey(), fieldSpan);
}else }else
fieldsSpan.put(keySpan, fieldSpan); fieldsSpan.put(keySpan, fieldSpan);
/*if (keySpan.toString().contains(targetedEmoji)) {
//emojis can be used several times so we have to loop
for (int startPosition = -1; (startPosition = keySpan.toString().indexOf(targetedEmoji, startPosition + 1)) != -1; startPosition++) {
final int endPosition = startPosition + targetedEmoji.length();
if (endPosition <= keySpan.toString().length() && endPosition >= startPosition)
keySpan.setSpan(
new ImageSpan(context,
Bitmap.createScaledBitmap(resource, (int) Helper.convertDpToPixel(20, context),
(int) Helper.convertDpToPixel(20, context), false)), startPosition,
endPosition, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
}
SpannableString obj = fieldsSpan.remove(pair.getKey());
fieldsSpan.put(keySpan, obj);
}else
fieldsSpan.put(keySpan, fieldSpan);*/
} }
i[0]++; i[0]++;
@ -599,4 +582,70 @@ public class Account implements Parcelable {
} }
} }
public void makeEmojisAccount(final Context context, final OnRetrieveEmojiAccountInterface listener){
if( ((Activity)context).isFinishing() )
return;
fields = new LinkedHashMap<>();
fieldsVerified = new LinkedHashMap<>();
fieldsSpan = new LinkedHashMap<>();
noteSpan = account.getNoteSpan();
if( account.getDisplay_name() != null)
displayNameSpan = new SpannableString(account.getDisplay_name());
if( account.getFields() != null && account.getFields().size() > 0) {
Iterator it = account.getFields().entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry) it.next();
SpannableString fieldSpan;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
fieldSpan = new SpannableString(Html.fromHtml((String)pair.getValue(), FROM_HTML_MODE_LEGACY));
else
//noinspection deprecation
fieldSpan = new SpannableString(Html.fromHtml((String)pair.getValue()));
fieldsSpan.put(new SpannableString((String)pair.getKey()), fieldSpan);
}
account.setFieldsSpan(fieldsSpan);
}
final List<Emojis> emojis = account.getEmojis();
if( emojis != null && emojis.size() > 0 ) {
final int[] i = {0};
for (final Emojis emoji : emojis) {
fields = account.getFields();
try {
Glide.with(context)
.asBitmap()
.load(emoji.getUrl())
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, Transition<? super Bitmap> transition) {
final String targetedEmoji = ":" + emoji.getShortcode() + ":";
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);
}
}
i[0]++;
if (i[0] == (emojis.size())) {
if (noteSpan != null)
account.setNoteSpan(noteSpan);
if (listener != null)
listener.onRetrieveEmojiAccount(account);
}
}
});
}catch (Exception ignored){}
}
}
}
} }