diff options
49 files changed, 241 insertions, 299 deletions
diff --git a/app/src/main/java/app/fedilab/android/BaseMainActivity.java b/app/src/main/java/app/fedilab/android/BaseMainActivity.java index 0798dbd65..182920a2c 100644 --- a/app/src/main/java/app/fedilab/android/BaseMainActivity.java +++ b/app/src/main/java/app/fedilab/android/BaseMainActivity.java @@ -650,6 +650,24 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt * @param intent - Intent intent that will be cancelled */ private static void openNotifications(Activity activity, Intent intent) { + if (intent != null && intent.getExtras() != null) { + Bundle bundle = intent.getExtras(); + app.fedilab.android.mastodon.client.entities.api.Account account = (app.fedilab.android.mastodon.client.entities.api.Account) bundle.getSerializable(Helper.INTENT_TARGETED_ACCOUNT); + Status status = (Status) bundle.getSerializable(Helper.INTENT_TARGETED_STATUS); + if (account != null) { + Intent intentAccount = new Intent(activity, ProfileActivity.class); + Bundle b = new Bundle(); + b.putSerializable(Helper.ARG_ACCOUNT, account); + intentAccount.putExtras(b); + intentAccount.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + activity.startActivity(intentAccount); + } else if (status != null) { + Intent intentContext = new Intent(activity, ContextActivity.class); + intentContext.putExtra(Helper.ARG_STATUS, status); + intentContext.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + activity.startActivity(intentContext); + } + } final Handler handler = new Handler(); handler.postDelayed(() -> { SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(activity); @@ -682,6 +700,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt intent.removeExtra(Helper.INTENT_ACTION); } + @SuppressLint("ApplySharedPref") public static void mamageNewIntent(Activity activity, Intent intent) { if (intent == null) @@ -733,6 +752,10 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt editor.commit(); Intent mainActivity = new Intent(activity, MainActivity.class); mainActivity.putExtra(Helper.INTENT_ACTION, Helper.OPEN_NOTIFICATION); + Bundle bundle = intent.getExtras(); + if (bundle != null) { + mainActivity.putExtras(bundle); + } activity.startActivity(mainActivity); activity.finish(); } catch (DBException e) { @@ -1107,12 +1130,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt } //If the attached account is null, the app will fetch remote instance to get up-to-date values if (currentAccount != null && currentAccount.mastodon_account == null) { - OkHttpClient okHttpClient = new OkHttpClient.Builder() - .readTimeout(60, TimeUnit.SECONDS) - .connectTimeout(60, TimeUnit.SECONDS) - .callTimeout(60, TimeUnit.SECONDS) - .proxy(Helper.getProxy(getApplication().getApplicationContext())) - .build(); + OkHttpClient okHttpClient = Helper.myOkHttpClient(getApplication().getApplicationContext()); Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://" + (MainActivity.currentInstance != null ? IDN.toASCII(MainActivity.currentInstance, IDN.ALLOW_UNASSIGNED) : null) + "/api/v1/") .addConverterFactory(GsonConverterFactory.create(Helper.getDateBuilder())) @@ -1224,7 +1242,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt } if (!isFinishing()) { headerMainBinding.accountName.setText( - currentAccount.mastodon_account.getSpanDisplayName(BaseMainActivity.this, + currentAccount.mastodon_account.getSpanDisplayNameEmoji(BaseMainActivity.this, new WeakReference<>(headerMainBinding.accountName)), TextView.BufferType.SPANNABLE); } diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/ComposeActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/ComposeActivity.java index 348e47799..375576c93 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/activities/ComposeActivity.java +++ b/app/src/main/java/app/fedilab/android/mastodon/activities/ComposeActivity.java @@ -114,6 +114,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana private List<Status> statusList; private Status statusReply, statusMention, statusQuoted; private StatusDraft statusDraft; + private ActionBar actionBar; private ComposeAdapter composeAdapter; private final BroadcastReceiver imageReceiver = new BroadcastReceiver() { @Override @@ -482,7 +483,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana setSupportActionBar(binding.toolbar); promptSaveDraft = false; restoredDraft = false; - ActionBar actionBar = getSupportActionBar(); + actionBar = getSupportActionBar(); //Remove title if (actionBar != null) { actionBar.setDisplayShowTitleEnabled(false); @@ -1025,6 +1026,7 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana @Override public void click(ComposeAdapter.ComposeViewHolder holder, Attachment attachment, int messagePosition, int mediaPosition) { binding.description.setVisibility(View.VISIBLE); + actionBar.hide(); binding.recyclerView.setVisibility(View.GONE); binding.mediaDescription.setText(""); String attachmentPath = attachment.local_path != null && !attachment.local_path.trim().isEmpty() ? attachment.local_path : attachment.preview_url; @@ -1042,11 +1044,13 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana binding.mediaSave.setOnClickListener(v -> { binding.description.setVisibility(View.GONE); + actionBar.show(); binding.recyclerView.setVisibility(View.VISIBLE); composeAdapter.openDescriptionActivity(true, binding.mediaDescription.getText().toString().trim(), holder, attachment, messagePosition, mediaPosition); }); binding.mediaCancel.setOnClickListener(v -> { binding.description.setVisibility(View.GONE); + actionBar.show(); binding.recyclerView.setVisibility(View.VISIBLE); composeAdapter.openDescriptionActivity(false, binding.mediaDescription.getText().toString().trim(), holder, attachment, messagePosition, mediaPosition); }); diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/DirectMessageActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/DirectMessageActivity.java index 92bad7d67..7d63ccb72 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/activities/DirectMessageActivity.java +++ b/app/src/main/java/app/fedilab/android/mastodon/activities/DirectMessageActivity.java @@ -53,7 +53,6 @@ public class DirectMessageActivity extends BaseActivity implements FragmentMasto public static boolean displayCW; FragmentMastodonDirectMessage currentFragment; - private Status firstMessage; private String remote_instance; @Override @@ -149,7 +148,6 @@ public class DirectMessageActivity extends BaseActivity implements FragmentMasto @Override public void get(Status status) { - firstMessage = status; invalidateOptionsMenu(); } }
\ No newline at end of file diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/MediaActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/MediaActivity.java index c5313a297..9476dca8e 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/activities/MediaActivity.java +++ b/app/src/main/java/app/fedilab/android/mastodon/activities/MediaActivity.java @@ -154,7 +154,7 @@ public class MediaActivity extends BaseTransparentActivity implements OnDownload binding.mediaDescription.setMovementMethod(new ScrollingMovementMethod()); binding.mediaDescriptionTranslated.setMovementMethod(new ScrollingMovementMethod()); - + if (description != null && description.trim().length() > 0 && description.trim().compareTo("null") != 0) { binding.mediaDescription.setText(description); binding.translate.setOnClickListener(v -> { diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/ProfileActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/ProfileActivity.java index ef0e4fc07..0c1648248 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/activities/ProfileActivity.java +++ b/app/src/main/java/app/fedilab/android/mastodon/activities/ProfileActivity.java @@ -456,7 +456,7 @@ public class ProfileActivity extends BaseActivity { } binding.accountDn.setText( - account.getSpanDisplayName(ProfileActivity.this, + account.getSpanDisplayNameEmoji(ProfileActivity.this, new WeakReference<>(binding.accountDn)), TextView.BufferType.SPANNABLE); diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminAccountActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminAccountActivity.java index 04074ea42..f78e0af61 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminAccountActivity.java +++ b/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminAccountActivity.java @@ -310,7 +310,7 @@ public class AdminAccountActivity extends BaseActivity { binding.accountDn.setText( - adminAccount.account.getSpanDisplayName(AdminAccountActivity.this, + adminAccount.account.getSpanDisplayNameEmoji(AdminAccountActivity.this, new WeakReference<>(binding.accountDn)), TextView.BufferType.SPANNABLE); binding.accountUn.setText(String.format("@%s", adminAccount.account.acct)); diff --git a/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminReportActivity.java b/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminReportActivity.java index f5d79bb82..1ff4effea 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminReportActivity.java +++ b/app/src/main/java/app/fedilab/android/mastodon/activities/admin/AdminReportActivity.java @@ -328,7 +328,7 @@ public class AdminReportActivity extends BaseBarActivity { } binding.accountDn.setText( - account.getSpanDisplayName(AdminReportActivity.this, + account.getSpanDisplayNameEmoji(AdminReportActivity.this, new WeakReference<>(binding.accountDn)), TextView.BufferType.SPANNABLE); binding.accountUn.setText(String.format("@%s", account.acct)); diff --git a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Account.java b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Account.java index a29c37496..5fc2e8d76 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Account.java +++ b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Account.java @@ -89,14 +89,15 @@ public class Account implements Serializable { public Role role; public transient RelationShip relationShip; + public synchronized Spannable getSpanDisplayName(Context context, WeakReference<View> viewWeakReference) { if (display_name == null || display_name.isEmpty()) { display_name = username; } - return SpannableHelper.convert(context, display_name, null, this, null, viewWeakReference); + return SpannableHelper.convert(context, display_name, null, this, null, viewWeakReference, null, true, false); } - public synchronized Spannable getSpanDisplayName(Activity activity, WeakReference<View> viewWeakReference) { + public synchronized Spannable getSpanDisplayNameEmoji(Activity activity, WeakReference<View> viewWeakReference) { if (display_name == null || display_name.isEmpty()) { display_name = username; } @@ -104,11 +105,11 @@ public class Account implements Serializable { } public synchronized Spannable getSpanDisplayNameTitle(Context context, WeakReference<View> viewWeakReference, String title) { - return SpannableHelper.convert(context, title, null, this, null, viewWeakReference); + return SpannableHelper.convert(context, title, null, this, null, viewWeakReference, null, true, false); } public synchronized Spannable getSpanNote(Context context, WeakReference<View> viewWeakReference) { - return SpannableHelper.convert(context, note, null, this, null, viewWeakReference); + return SpannableHelper.convert(context, note, null, this, null, viewWeakReference, null, true, false); } @Override diff --git a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Announcement.java b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Announcement.java index 682eeb8b4..b429bb7df 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Announcement.java +++ b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Announcement.java @@ -56,7 +56,7 @@ public class Announcement { public synchronized Spannable getSpanContent(Context context, WeakReference<View> viewWeakReference) { - return SpannableHelper.convert(context, content, null, null, this, viewWeakReference); + return SpannableHelper.convert(context, content, null, null, this, viewWeakReference, null, true, false); } } diff --git a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Field.java b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Field.java index 6c24c0ea4..9b8551ff9 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Field.java +++ b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Field.java @@ -47,7 +47,7 @@ public class Field implements Serializable { if (verified_at != null && value != null) { value_span = new ForegroundColorSpan(ContextCompat.getColor(context, R.color.verified_text)); } - Spannable spannable = SpannableHelper.convert(context, value, null, account, null, viewWeakReference); + Spannable spannable = SpannableHelper.convert(context, value, null, account, null, viewWeakReference, null, true, false); if (value_span != null && spannable != null) { spannable.setSpan(value_span, 0, spannable.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } @@ -57,7 +57,7 @@ public class Field implements Serializable { public synchronized Spannable getLabelSpan(Context context, Account account, WeakReference<View> viewWeakReference) { - Spannable spannable = SpannableHelper.convert(context, name, null, account, null, viewWeakReference); + Spannable spannable = SpannableHelper.convert(context, name, null, account, null, viewWeakReference, null, true, false); if (name_span != null && spannable != null) { spannable.setSpan(name_span, 0, spannable.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } diff --git a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Poll.java b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Poll.java index e9270f062..87269a59a 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Poll.java +++ b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Poll.java @@ -61,7 +61,7 @@ public class Poll implements Serializable { public transient Spannable span_title; public Spannable getSpanTitle(Context context, Status status, WeakReference<View> viewWeakReference) { - span_title = SpannableHelper.convert(context, title, status, null, null, viewWeakReference, null, false); + span_title = SpannableHelper.convert(context, title, status, null, null, viewWeakReference, null, false, false); return span_title; } } diff --git a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Status.java b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Status.java index 15fec66bb..70874d13d 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Status.java +++ b/app/src/main/java/app/fedilab/android/mastodon/client/entities/api/Status.java @@ -133,6 +133,8 @@ public class Status implements Serializable, Cloneable { public transient boolean setCursorToEnd = false; public transient int cursorPosition = 0; public transient boolean submitted = false; + + public transient boolean underlined = false; public boolean spoilerChecked = false; public Filter filteredByApp; public transient Spannable contentSpan; @@ -152,21 +154,21 @@ public class Status implements Serializable, Cloneable { public synchronized Spannable getSpanContent(Context context, WeakReference<View> viewWeakReference, Callback callback) { if (contentSpan == null) { - contentSpan = SpannableHelper.convert(context, content, this, null, null, viewWeakReference, callback); + contentSpan = SpannableHelper.convert(context, content, this, null, null, viewWeakReference, callback, true, true); } return contentSpan; } public synchronized Spannable getSpanSpoiler(Context context, WeakReference<View> viewWeakReference, Callback callback) { if (contentSpoilerSpan == null) { - contentSpoilerSpan = SpannableHelper.convert(context, spoiler_text, this, null, null, viewWeakReference, callback); + contentSpoilerSpan = SpannableHelper.convert(context, spoiler_text, this, null, null, viewWeakReference, callback, true, false); } return contentSpoilerSpan; } public synchronized Spannable getSpanTranslate(Context context, WeakReference<View> viewWeakReference, Callback callback) { if (contentTranslateSpan == null) { - contentTranslateSpan = SpannableHelper.convert(context, translationContent, this, null, null, viewWeakReference, callback); + contentTranslateSpan = SpannableHelper.convert(context, translationContent, this, null, null, viewWeakReference, callback, true, true); } return contentTranslateSpan; } diff --git a/app/src/main/java/app/fedilab/android/mastodon/client/entities/nitter/Nitter.java b/app/src/main/java/app/fedilab/android/mastodon/client/entities/nitter/Nitter.java index a3465ef11..015e0c7f2 100644 --- a/app/src/main/java/app/fedilab/android/mastodon/client/entities/nitter/Nitter.java +++ b/app/src/main/java/app/fedilab/android/mastodon/client/entities/nitter/Nitter.java @@ -29,7 +2 |