summaryrefslogtreecommitdiffstats
path: root/app/src/main/java/app
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/app')
-rw-r--r--app/src/main/java/app/fedilab/android/BaseMainActivity.java16
-rw-r--r--app/src/main/java/app/fedilab/android/activities/AccountReportActivity.java1
-rw-r--r--app/src/main/java/app/fedilab/android/activities/ComposeActivity.java16
-rw-r--r--app/src/main/java/app/fedilab/android/activities/HashTagActivity.java2
-rw-r--r--app/src/main/java/app/fedilab/android/activities/ProfileActivity.java9
-rw-r--r--app/src/main/java/app/fedilab/android/client/endpoints/MastodonNotificationsService.java7
-rw-r--r--app/src/main/java/app/fedilab/android/client/endpoints/MastodonTimelinesService.java13
-rw-r--r--app/src/main/java/app/fedilab/android/client/entities/api/Account.java66
-rw-r--r--app/src/main/java/app/fedilab/android/client/entities/api/Announcement.java2
-rw-r--r--app/src/main/java/app/fedilab/android/client/entities/api/Field.java4
-rw-r--r--app/src/main/java/app/fedilab/android/client/entities/api/Poll.java2
-rw-r--r--app/src/main/java/app/fedilab/android/client/entities/api/Status.java20
-rw-r--r--app/src/main/java/app/fedilab/android/client/entities/api/admin/AdminAccount.java20
-rw-r--r--app/src/main/java/app/fedilab/android/client/entities/app/BubbleTimeline.java35
-rw-r--r--app/src/main/java/app/fedilab/android/client/entities/app/PinnedTimeline.java2
-rw-r--r--app/src/main/java/app/fedilab/android/client/entities/app/StatusCache.java2
-rw-r--r--app/src/main/java/app/fedilab/android/client/entities/app/Timeline.java2
-rw-r--r--app/src/main/java/app/fedilab/android/helper/ECDHFedilab.java237
-rw-r--r--app/src/main/java/app/fedilab/android/helper/Helper.java42
-rw-r--r--app/src/main/java/app/fedilab/android/helper/MediaHelper.java20
-rw-r--r--app/src/main/java/app/fedilab/android/helper/NotificationsHelper.java7
-rw-r--r--app/src/main/java/app/fedilab/android/helper/PinnedTimelineHelper.java344
-rw-r--r--app/src/main/java/app/fedilab/android/helper/PushNotifications.java43
-rw-r--r--app/src/main/java/app/fedilab/android/helper/SpannableHelper.java1060
-rw-r--r--app/src/main/java/app/fedilab/android/helper/ThemeHelper.java2
-rw-r--r--app/src/main/java/app/fedilab/android/imageeditor/EditImageActivity.java4
-rw-r--r--app/src/main/java/app/fedilab/android/jobs/ComposeWorker.java9
-rw-r--r--app/src/main/java/app/fedilab/android/services/CustomReceiver.java11
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/AccountAdapter.java2
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/ComposeAdapter.java147
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/ConversationAdapter.java32
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/FieldAdapter.java2
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/InstanceRegAdapter.java23
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/NotificationAdapter.java140
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/ReorderTabAdapter.java4
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/SliderAdapter.java97
-rw-r--r--app/src/main/java/app/fedilab/android/ui/drawer/StatusAdapter.java262
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/admin/FragmentAdminReport.java1
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/login/FragmentLoginMain.java4
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/media/FragmentMediaProfile.java4
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/settings/FragmentExtraFeaturesSettings.java13
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/settings/FragmentThemingSettings.java1
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/settings/FragmentTimelinesSettings.java12
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonContext.java3
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonNotification.java1
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonTimeline.java66
-rw-r--r--app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentProfileTimeline.java1
-rw-r--r--app/src/main/java/app/fedilab/android/ui/pageadapter/FedilabPageAdapter.java2
-rw-r--r--app/src/main/java/app/fedilab/android/ui/pageadapter/FedilabProfilePageAdapter.java2
-rw-r--r--app/src/main/java/app/fedilab/android/ui/pageadapter/FedilabProfileTLPageAdapter.java2
-rw-r--r--app/src/main/java/app/fedilab/android/viewmodel/mastodon/NotificationsVM.java9
-rw-r--r--app/src/main/java/app/fedilab/android/viewmodel/mastodon/TimelinesVM.java6
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