Loading app/build.gradle +1 −0 Original line number Diff line number Diff line Loading @@ -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' Loading app/src/main/java/app/fedilab/android/MainApplication.java +6 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading @@ -61,6 +65,7 @@ public class MainApplication extends MultiDexApplication { Toasty.Config.getInstance().apply(); } @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); Loading app/src/main/java/app/fedilab/android/client/entities/api/Status.java +3 −0 Original line number Diff line number Diff line Loading @@ -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; Loading app/src/main/java/app/fedilab/android/helper/Helper.java +1 −1 Original line number Diff line number Diff line Loading @@ -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-/]+)"); Loading app/src/main/java/app/fedilab/android/ui/drawer/StatusAdapter.java +37 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading
app/build.gradle +1 −0 Original line number Diff line number Diff line Loading @@ -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' Loading
app/src/main/java/app/fedilab/android/MainApplication.java +6 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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) { Loading @@ -61,6 +65,7 @@ public class MainApplication extends MultiDexApplication { Toasty.Config.getInstance().apply(); } @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); Loading
app/src/main/java/app/fedilab/android/client/entities/api/Status.java +3 −0 Original line number Diff line number Diff line Loading @@ -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; Loading
app/src/main/java/app/fedilab/android/helper/Helper.java +1 −1 Original line number Diff line number Diff line Loading @@ -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-/]+)"); Loading
app/src/main/java/app/fedilab/android/ui/drawer/StatusAdapter.java +37 −1 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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