Commit 468f825d authored by Thomas's avatar Thomas
Browse files

Release 3.9.4

parent 15ce78b8
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -13,8 +13,8 @@ android {
    defaultConfig {
        minSdk 21
        targetSdk 32
        versionCode 438
        versionName "3.9.3"
        versionCode 439
        versionName "3.9.4"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    flavorDimensions "default"
+5 −0
Original line number Diff line number Diff line
[
  {
    "version": "3.9.4",
    "code": "439",
    "note": "Changed:\n- Remove card presentation\n- Link color for black theme\n\nFixed:\n- Crash when changing the theme"
  },
  {
    "version": "3.9.3",
    "code": "438",
+6 −4
Original line number Diff line number Diff line
@@ -646,10 +646,12 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt
                if (currentAccount.mastodon_account.display_name == null || currentAccount.mastodon_account.display_name.isEmpty()) {
                    currentAccount.mastodon_account.display_name = currentAccount.mastodon_account.acct;
                }
                if (!isFinishing()) {
                    headerMainBinding.accountName.setText(
                            currentAccount.mastodon_account.getSpanDisplayName(BaseMainActivity.this,
                                    new WeakReference<>(headerMainBinding.accountName)),
                            TextView.BufferType.SPANNABLE);
                }
                float scale = sharedpreferences.getFloat(getString(R.string.SET_FONT_SCALE), 1.1f);
                headerMainBinding.accountName.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18 * 1.1f / scale);
                headerMainBinding.accountAcc.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18 * 1.1f / scale);
+8 −0
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ package app.fedilab.android.client.entities.api;
 * You should have received a copy of the GNU General Public License along with Fedilab; if not,
 * see <http://www.gnu.org/licenses>. */

import android.app.Activity;
import android.content.Context;
import android.text.Spannable;
import android.view.View;
@@ -87,6 +88,13 @@ public class Account implements Serializable {
        return SpannableHelper.convert(context, display_name, null, this, null, false, viewWeakReference);
    }

    public synchronized Spannable getSpanDisplayName(Activity activity, WeakReference<View> viewWeakReference) {
        if (display_name == null || display_name.isEmpty()) {
            display_name = username;
        }
        return SpannableHelper.convertEmoji(activity, display_name, this, viewWeakReference);
    }

    public synchronized Spannable getSpanDisplayNameTitle(Context context, WeakReference<View> viewWeakReference, String title) {
        return SpannableHelper.convert(context, title, null, this, null, false, viewWeakReference);
    }
+37 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package app.fedilab.android.helper;
import static app.fedilab.android.BaseMainActivity.currentAccount;
import static app.fedilab.android.ui.drawer.StatusAdapter.sendAction;

import android.app.Activity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
@@ -1037,4 +1038,40 @@ public class SpannableHelper {
        }
        return spannableString;
    }


    public static Spannable convertEmoji(Activity activity, String text, Account account, WeakReference<View> viewWeakReference) {

        SpannableString initialContent;
        if (text == null) {
            return null;
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
            initialContent = new SpannableString(Html.fromHtml(text, Html.FROM_HTML_MODE_LEGACY));
        else
            initialContent = new SpannableString(Html.fromHtml(text));

        SpannableStringBuilder content = new SpannableStringBuilder(initialContent);
        List<Emoji> emojiList = account.emojis;
        SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(activity);
        boolean animate = !sharedpreferences.getBoolean(activity.getString(R.string.SET_DISABLE_ANIMATED_EMOJI), false);
        if (emojiList != null && emojiList.size() > 0) {
            for (Emoji emoji : emojiList) {
                Matcher matcher = Pattern.compile(":" + emoji.shortcode + ":", Pattern.LITERAL)
                        .matcher(content);
                while (matcher.find()) {
                    CustomEmoji customEmoji = new CustomEmoji(new WeakReference<>(viewWeakReference.get()));
                    content.setSpan(customEmoji, matcher.start(), matcher.end(), 0);
                    if (Helper.isValidContextForGlide(activity)) {
                        Glide.with(viewWeakReference.get())
                                .asDrawable()
                                .load(animate ? emoji.url : emoji.static_url)
                                .into(customEmoji.getTarget(animate));
                    }
                }
            }
        }

        return trimSpannable(new SpannableStringBuilder(content));
    }
}
Loading