diff options
Diffstat (limited to 'app/src/main/java/app')
52 files changed, 1642 insertions, 1192 deletions
diff --git a/app/src/main/java/app/fedilab/android/BaseMainActivity.java b/app/src/main/java/app/fedilab/android/BaseMainActivity.java index a09a6ec54..43b4ddb3b 100644 --- a/app/src/main/java/app/fedilab/android/BaseMainActivity.java +++ b/app/src/main/java/app/fedilab/android/BaseMainActivity.java @@ -165,6 +165,7 @@ import retrofit2.converter.gson.GsonConverterFactory; public abstract class BaseMainActivity extends BaseActivity implements NetworkStateReceiver.NetworkStateReceiverListener, FragmentMastodonTimeline.UpdateCounters, FragmentNotificationContainer.UpdateCounters, FragmentMastodonConversation.UpdateCounters { + private static final int REQUEST_CODE = 5415; public static String currentInstance, currentToken, currentUserID, client_id, client_secret, software; public static HashMap<String, List<Emoji>> emojis = new HashMap<>(); public static Account.API api; @@ -297,7 +298,6 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt }; private NetworkStateReceiver networkStateReceiver; private boolean headerMenuOpen; - private static final int REQUEST_CODE = 5415; @Override protected void onCreate(Bundle savedInstanceState) { @@ -683,6 +683,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt regex_local = sharedpreferences.getString(getString(R.string.SET_FILTER_REGEX_LOCAL) + currentUserID + currentInstance, null); regex_public = sharedpreferences.getString(getString(R.string.SET_FILTER_REGEX_PUBLIC) + currentUserID + currentInstance, null); show_art_nsfw = sharedpreferences.getBoolean(getString(R.string.SET_ART_WITH_NSFW) + currentUserID + currentInstance, false); + binding.profilePicture.setOnClickListener(v -> binding.drawerLayout.openDrawer(GravityCompat.START)); Helper.loadPP(BaseMainActivity.this, binding.profilePicture, currentAccount); headerMainBinding.accountAcc.setText(String.format("%s@%s", currentAccount.mastodon_account.username, currentAccount.instance)); @@ -785,7 +786,6 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt }); - binding.toolbarSearch.setOnSearchClickListener(v -> binding.tabLayout.setVisibility(View.VISIBLE)); //For receiving data from other activities LocalBroadcastManager.getInstance(BaseMainActivity.this).registerReceiver(broadcast_data, new IntentFilter(Helper.BROADCAST_DATA)); @@ -1041,7 +1041,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt String title = ""; String description = ""; - if(titleEl != null) { + if (titleEl != null) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { title = Html.fromHtml(titleEl.attr("content"), Html.FROM_HTML_MODE_LEGACY).toString(); } else { @@ -1049,7 +1049,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt } } - if(descriptionEl != null) { + if (descriptionEl != null) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { description = Html.fromHtml(descriptionEl.attr("content"), Html.FROM_HTML_MODE_LEGACY).toString(); } else { @@ -1058,13 +1058,13 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt } String imageUrl = ""; - if(imageUrlEl != null) { + if (imageUrlEl != null) { imageUrl = imageUrlEl.attr("content"); } StringBuilder titleBuilder = new StringBuilder(); - if(!originalUrl.trim().equalsIgnoreCase(sharedText.trim())) { + if (!originalUrl.trim().equalsIgnoreCase(sharedText.trim())) { // If the shared text is not just the URL, add it to the top String toAppend = sharedText.replaceAll("\\s*" + Pattern.quote(originalUrl) + "\\s*", ""); titleBuilder.append(toAppend); @@ -1072,7 +1072,8 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt if (title.length() > 0) { // OG title fetched from source - if(titleBuilder.length() > 0) titleBuilder.append("\n\n"); + if (titleBuilder.length() > 0) + titleBuilder.append("\n\n"); titleBuilder.append(title); } @@ -1138,7 +1139,6 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt b.putSerializable(Helper.ARG_MEDIA_ATTACHMENTS, new ArrayList<>(attachments)); CrossActionHelper.doCrossShare(BaseMainActivity.this, b); }); - CrossActionHelper.doCrossShare(BaseMainActivity.this, b); } else { Toasty.warning(BaseMainActivity.this, getString(R.string.toast_error), Toast.LENGTH_LONG).show(); } diff --git a/app/src/main/java/app/fedilab/android/activities/AccountReportActivity.java b/app/src/main/java/app/fedilab/android/activities/AccountReportActivity.java index 03fda1b7f..384a76980 100644 --- a/app/src/main/java/app/fedilab/android/activities/AccountReportActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/AccountReportActivity.java @@ -320,6 +320,7 @@ public class AccountReportActivity extends BaseBarActivity { } } + @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { diff --git a/app/src/main/java/app/fedilab/android/activities/ComposeActivity.java b/app/src/main/java/app/fedilab/android/activities/ComposeActivity.java index 5ff370bac..849b28a94 100644 --- a/app/src/main/java/app/fedilab/android/activities/ComposeActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/ComposeActivity.java @@ -107,11 +107,6 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana private Status statusReply, statusMention, statusQuoted; private StatusDraft statusDraft; private ComposeAdapter composeAdapter; - private boolean promptSaveDraft; - private boolean restoredDraft; - private List<Attachment> sharedAttachments; - - private final BroadcastReceiver imageReceiver = new BroadcastReceiver() { @Override public void onReceive(android.content.Context context, Intent intent) { @@ -138,7 +133,9 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana } } }; - + private boolean promptSaveDraft; + private boolean restoredDraft; + private List<Attachment> sharedAttachments; private ActivityPaginationBinding binding; private BaseAccount account; private String instance, token; @@ -537,10 +534,10 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana if (token == null) { token = account.token; } - if (emojis == null || !emojis.containsKey(currentInstance)) { + if (emojis == null || !emojis.containsKey(instance)) { new Thread(() -> { try { - emojis.put(currentInstance, new EmojiInstance(ComposeActivity.this).getEmojiList(currentInstance)); + emojis.put(instance, new EmojiInstance(ComposeActivity.this).getEmojiList(instance)); } catch (DBException e) { e.printStackTrace(); } @@ -637,6 +634,9 @@ public class ComposeActivity extends BaseActivity implements ComposeAdapter.Mana } if (statusReply.spoiler_text != null) { statusDraftList.get(0).spoiler_text = statusReply.spoiler_text; + if (statusReply.spoiler_text.trim().length() > 0) { + statusDraftList.get(0).spoilerChecked = true; + } } if (statusReply.language != null && !statusReply.language.isEmpty()) { statusDraftList.get(0).language = statusReply.language; diff --git a/app/src/main/java/app/fedilab/android/activities/HashTagActivity.java b/app/src/main/java/app/fedilab/android/activities/HashTagActivity.java index 7bf49af50..af6b0c533 100644 --- a/app/src/main/java/app/fedilab/android/activities/HashTagActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/HashTagActivity.java @@ -221,6 +221,8 @@ public class HashTagActivity extends BaseActivity { tagTimeline.name = stripTag.trim(); tagTimeline.isNSFW = false; tagTimeline.isART = false; + tagTimeline.any = new ArrayList<>(); + tagTimeline.any.add(stripTag.trim()); pinnedTimeline.tagTimeline = tagTimeline; pinned.pinnedTimelines.add(pinnedTimeline); if (update) { diff --git a/app/src/main/java/app/fedilab/android/activities/ProfileActivity.java b/app/src/main/java/app/fedilab/android/activities/ProfileActivity.java index 97b13d769..1ab57d6d8 100644 --- a/app/src/main/java/app/fedilab/android/activities/ProfileActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/ProfileActivity.java @@ -117,8 +117,6 @@ public class ProfileActivity extends BaseActivity { private String mention_str; private WellKnownNodeinfo.NodeInfo nodeInfo; private boolean checkRemotely; - private boolean homeMuted; - private final BroadcastReceiver broadcast_data = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { @@ -133,6 +131,7 @@ public class ProfileActivity extends BaseActivity { } } }; + private boolean homeMuted; @Override protected void onCreate(Bundle savedInstanceState) { @@ -145,6 +144,7 @@ public class ProfileActivity extends BaseActivity { Bundle b = getIntent().getExtras(); binding.accountFollow.setEnabled(false); checkRemotely = false; + SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(this); homeMuted = false; if (b != null) { account = (Account) b.getSerializable(Helper.ARG_ACCOUNT); @@ -152,6 +152,9 @@ public class ProfileActivity extends BaseActivity { mention_str = b.getString(Helper.ARG_MENTION, null); checkRemotely = b.getBoolean(Helper.ARG_CHECK_REMOTELY, false); } + if (!checkRemotely) { + checkRemotely = sharedpreferences.getBoolean(getString(R.string.SET_PROFILE_REMOTELY), false); + } ActivityCompat.postponeEnterTransition(ProfileActivity.this); //Remove title if (actionBar != null) { @@ -162,7 +165,7 @@ public class ProfileActivity extends BaseActivity { getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); } - SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(this); + float scale = sharedpreferences.getFloat(getString(R.string.SET_FONT_SCALE), 1.1f); binding.title.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18 * 1.1f / scale); accountsVM = new ViewModelProvider(ProfileActivity.this).get(AccountsVM.class); diff --git a/app/src/main/java/app/fedilab/android/client/endpoints/MastodonNotificationsService.java b/app/src/main/java/app/fedilab/android/client/endpoints/MastodonNotificationsService.java index d6f2f15a1..898359fb9 100644 --- a/app/src/main/java/app/fedilab/android/client/endpoints/MastodonNotificationsService.java +++ b/app/src/main/java/app/fedilab/android/client/endpoints/MastodonNotificationsService.java @@ -71,7 +71,12 @@ public interface MastodonNotificationsService { @Field("data[alerts][favourite]") boolean favourite, @Field("data[alerts][reblog]") boolean reblog, @Field("data[alerts][mention]") boolean mention, - @Field("data[alerts][poll]") boolean poll + @Field("data[alerts][poll]") boolean poll, + @Field("data[alerts][status]") boolean status, + @Field("data[alerts][update]") boolean update, + @Field("data[alerts][admin.sign_up]") boolean admin_sign_up, + @Field("data[alerts][admin.report]") boolean admin_report + ); @GET("push/subscription") diff --git a/app/src/main/java/app/fedilab/android/client/endpoints/MastodonTimelinesService.java b/app/src/main/java/app/fedilab/android/client/endpoints/MastodonTimelinesService.java index 619bc92a7..a2c953dbb 100644 --- a/app/src/main/java/app/fedilab/android/client/endpoints/MastodonTimelinesService.java +++ b/app/src/main/java/app/fedilab/android/client/endpoints/MastodonTimelinesService.java @@ -53,6 +53,19 @@ public interface MastodonTimelinesService { @Query("limit") Integer limit ); + @GET("timelines/bubble") + Call<List<Status>> getBubble( + @Header("Authorization") String token, + @Query("only_media") Boolean only_media, + @Query("remote") Boolean remote, + @Query("with_muted") Boolean with_muted, + @Query("exclude_visibilities") List<String> exclude_visibilities, + @Query("reply_visibility") String reply_visibility, + @Query("max_id") String max_id, + @Query("since_id") String since_id, + @Query("min_id") String min_id, + @Query("limit") Integer limit + ); @GET("trends/statuses") Call<List<Status>> getStatusTrends( diff --git a/app/src/main/java/app/fedilab/android/client/entities/api/Account.java b/app/src/main/java/app/fedilab/android/client/entities/api/Account.java index 9c423554c..36667aa8c 100644 --- a/app/src/main/java/app/fedilab/android/client/entities/api/Account.java +++ b/app/src/main/java/app/fedilab/android/client/entities/api/Account.java @@ -87,35 +87,13 @@ public class Account implements Serializable { public Account moved; @SerializedName("role") public Role role; - - - public static class Role implements Serializable { - @SerializedName("id") - public String id; - @SerializedName("name") - public String name; - @SerializedName("color") - public String color; - @SerializedName("position") - public int position; - @SerializedName("permissions") - public int permissions; - @SerializedName("highlighted") - public boolean highlighted; - @SerializedName("created_at") - public Date created_at; - @SerializedName("updated_at") - public Date updated_at; - } - - 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, false, false, viewWeakReference); + return SpannableHelper.convert(context, display_name, null, this, null, viewWeakReference); } public synchronized Spannable getSpanDisplayName(Activity activity, WeakReference<View> viewWeakReference) { @@ -126,11 +104,39 @@ public class Account implements Serializable { } public synchronized Spannable getSpanDisplayNameTitle(Context context, WeakReference<View> viewWeakReference, String title) { - return SpannableHelper.convert(context, title, null, this, null, false, false, viewWeakReference); + return SpannableHelper.convert(context, title, null, this, null, viewWeakReference); } public synchronized Spannable getSpanNote(Context context, WeakReference<View> viewWeakReference) { - return SpannableHelper.convert(context, note, null, this, null, true, true, viewWeakReference); + return SpannableHelper.convert(context, note, null, this, null, viewWeakReference); + } + + @Override + public boolean equals(@Nullable Object obj) { + boolean same = false; + if (obj instanceof Account) { + same = this.id.equals(((Account) obj).id); + } + return same; + } + + public static class Role implements Serializable { + @SerializedName("id") + public String id; + @SerializedName("name") + public String name; + @SerializedName("color") + public String color; + @SerializedName("position") + public int position; + @SerializedName("permissions") + public int permissions; + @SerializedName("highlighted") + public boolean highlighted; + @SerializedName("created_at") + public Date created_at; + @SerializedName("updated_at") + public Date updated_at; } public static class AccountParams implements Serializable { @@ -150,14 +156,4 @@ public class Account implements Serializable { public LinkedHashMap<Integer, Field.FieldParams> fields; } - - - @Override - public boolean equals(@Nullable Object obj) { - boolean same = false; - if (obj instanceof Account) { - same = this.id.equals(((Account) obj).id); - } - return same; - } } diff --git a/app/src/main/java/app/fedilab/android/client/entities/api/Announcement.java b/app/src/main/java/app/fedilab/android/client/entities/api/Announcement.java index 808ac6e5d..8bf18863b 100644 --- a/app/src/main/java/app/fedilab/android/client/entities/api/Announcement.java +++ b/app/src/main/java/app/fedilab/android/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, true, false, viewWeakReference); + return SpannableHelper.convert(context, content, null, null, this, viewWeakReference); } } diff --git a/app/src/main/java/app/fedilab/android/client/entities/api/Field.java b/app/src/main/java/app/fedilab/android/client/entities/api/Field.java index af574ee32..f038740ec 100644 --- a/app/src/main/java/app/fedilab/android/client/entities/api/Field.java +++ b/app/src/main/java/app/fedilab/android/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, true, true, viewWeakReference); + Spannable spannable = SpannableHelper.convert(context, value, null, account, null, viewWeakReference); 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, true, true, viewWeakReference); + Spannable spannable = SpannableHelper.convert(context, name, null, account, null, viewWeakReference); 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/client/entities/api/Poll.java b/app/src/main/java/app/fedilab/android/client/entities/api/Poll.java index cf0d1d8b9..98b161a94 100644 --- a/app/src/main/java/app/fedilab/android/client/entities/api/P |