Commit 45846308 authored by Thomas's avatar Thomas
Browse files

do maths

parent 72a79766
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -110,6 +110,7 @@ dependencies {

    implementation 'com.burhanrashid52:photoeditor:1.5.1'
    implementation("com.vanniktech:android-image-cropper:4.3.3")
    implementation project(path: ':mathjaxandroid')
    annotationProcessor "com.github.bumptech.glide:compiler:4.12.0"
    implementation 'jp.wasabeef:glide-transformations:4.3.0'
    implementation 'com.github.penfeizhou.android.animation:glide-plugin:2.23.0'
+6 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package app.fedilab.android;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.StrictMode;
import android.webkit.WebView;

import androidx.multidex.MultiDex;
import androidx.multidex.MultiDexApplication;
@@ -45,12 +46,15 @@ public class MainApplication extends MultiDexApplication {
        return app;
    }


    @Override
    public void onCreate() {
        super.onCreate();
        app = this;
        SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(MainApplication.this);
        try {
            new WebView(this);
        } catch (Exception ignored) {
        }

        boolean dynamicColor = sharedpreferences.getBoolean(getString(R.string.SET_DYNAMICCOLOR), false);
        if (dynamicColor) {
@@ -61,6 +65,7 @@ public class MainApplication extends MultiDexApplication {
        Toasty.Config.getInstance().apply();
    }


    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
+3 −0
Original line number Diff line number Diff line
@@ -106,6 +106,9 @@ public class Status implements Serializable, Cloneable {
    public boolean local_only = false;
    @SerializedName("cached")
    public boolean cached = false;
    @SerializedName("is_maths")
    public Boolean isMaths;

    public Attachment art_attachment;
    public boolean isExpended = false;
    public boolean isTruncated = true;
+1 −1
Original line number Diff line number Diff line
@@ -327,7 +327,7 @@ public class Helper {
    public static final Pattern groupPattern = Pattern.compile("(![\\w_]+)");
    public static final Pattern mentionPattern = Pattern.compile("(@[\\w_.-]?[\\w]+)");
    public static final Pattern mentionLongPattern = Pattern.compile("(@[\\w_.-]+@[a-zA-Z0-9][a-zA-Z0-9.-]{1,61}[a-zA-Z0-9](?:\\.[a-zA-Z]{2,})+)");

    public static final Pattern mathsPattern = Pattern.compile("\\\\\\(");
    public static final Pattern twitterPattern = Pattern.compile("((@[\\w]+)@twitter\\.com)");
    public static final Pattern youtubePattern = Pattern.compile("(www\\.|m\\.)?(youtube\\.com|youtu\\.be|youtube-nocookie\\.com)/(((?!([\"'<])).)*)");
    public static final Pattern nitterPattern = Pattern.compile("(mobile\\.|www\\.)?twitter.com([\\w-/]+)");
+37 −1
Original line number Diff line number Diff line
@@ -152,6 +152,8 @@ import app.fedilab.android.viewmodel.mastodon.AccountsVM;
import app.fedilab.android.viewmodel.mastodon.SearchVM;
import app.fedilab.android.viewmodel.mastodon.StatusesVM;
import app.fedilab.android.viewmodel.pleroma.ActionsVM;
import de.timfreiheit.mathjax.android.MathJaxConfig;
import de.timfreiheit.mathjax.android.MathJaxView;
import es.dmoral.toasty.Toasty;
import jp.wasabeef.glide.transformations.BlurTransformation;

@@ -639,7 +641,41 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>

        }


        if (status.isMaths == null) {
            if (Helper.mathsPattern.matcher(status.content).find()) {
                holder.binding.actionButtonMaths.setVisibility(View.VISIBLE);
            } else {
                holder.binding.actionButtonMaths.setVisibility(View.GONE);
            }
        } else {
            if (status.isMaths) {
                holder.binding.actionButtonMaths.setVisibility(View.VISIBLE);
            } else {
                holder.binding.actionButtonMaths.setVisibility(View.GONE);
            }
        }
        holder.binding.actionButtonMaths.setOnClickListener(v -> {
            if (holder.binding.statusContentMaths.getVisibility() == View.VISIBLE) {
                holder.binding.statusContentMaths.setVisibility(View.GONE);
                holder.binding.statusContent.setVisibility(View.VISIBLE);
            } else {
                holder.binding.statusContentMaths.removeAllViews();
                MathJaxConfig mathJaxConfig = new MathJaxConfig();
                switch (context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) {
                    case Configuration.UI_MODE_NIGHT_YES:
                        mathJaxConfig.setTextColor("white");
                        break;
                    case Configuration.UI_MODE_NIGHT_NO:
                        mathJaxConfig.setTextColor("dark");
                        break;
                }
                MathJaxView mathview = new MathJaxView(context, mathJaxConfig);
                holder.binding.statusContentMaths.addView(mathview);
                mathview.setInputText(status.contentSpan.toString());
                holder.binding.statusContentMaths.setVisibility(View.VISIBLE);
                holder.binding.statusContent.setVisibility(View.GONE);
            }
        });
        holder.binding.actionButtonFavorite.setActiveImage(R.drawable.ic_round_star_24);
        holder.binding.actionButtonFavorite.setInactiveImage(R.drawable.ic_round_star_border_24);
        holder.binding.actionButtonBookmark.setActiveImage(R.drawable.ic_round_bookmark_24);
Loading