Loading app/src/main/java/app/fedilab/android/BaseMainActivity.java +7 −1 Original line number Diff line number Diff line Loading @@ -127,6 +127,7 @@ import app.fedilab.android.client.entities.api.Status; import app.fedilab.android.client.entities.app.Account; import app.fedilab.android.client.entities.app.BaseAccount; import app.fedilab.android.client.entities.app.BottomMenu; import app.fedilab.android.client.entities.app.MutedAccounts; import app.fedilab.android.client.entities.app.Pinned; import app.fedilab.android.client.entities.app.PinnedTimeline; import app.fedilab.android.client.entities.app.StatusCache; Loading Loading @@ -164,6 +165,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt public static status networkAvailable = UNKNOWN; public static Instance instanceInfo; public static List<Filter> mainFilters; public static List<app.fedilab.android.client.entities.api.Account> filteredAccounts; public static boolean filterFetched; public static boolean show_boosts, show_replies, show_art_nsfw; public static String regex_home, regex_local, regex_public; Loading Loading @@ -302,7 +304,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt } else { BaseMainActivity.currentToken = sharedpreferences.getString(Helper.PREF_USER_TOKEN, null); } filteredAccounts = new ArrayList<>(); mamageNewIntent(getIntent()); filterFetched = false; networkStateReceiver = new NetworkStateReceiver(); Loading Loading @@ -565,6 +567,10 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt currentAccount = new Account(BaseMainActivity.this).getConnectedAccount(); //Delete cache older than 7 days new StatusCache(BaseMainActivity.this).deleteForAllAccountAfter7Days(); MutedAccounts mutedAccounts = new MutedAccounts(BaseMainActivity.this).getMutedAccount(currentAccount); if (mutedAccounts != null && mutedAccounts.accounts != null) { filteredAccounts = mutedAccounts.accounts; } } catch (DBException e) { e.printStackTrace(); } Loading app/src/main/java/app/fedilab/android/activities/ActionActivity.java +5 −1 Original line number Diff line number Diff line Loading @@ -54,11 +54,12 @@ public class ActionActivity extends BaseBarActivity { binding.muted.setOnClickListener(v -> displayTimeline(Timeline.TimeLineEnum.MUTED_TIMELINE)); binding.blocked.setOnClickListener(v -> displayTimeline(Timeline.TimeLineEnum.BLOCKED_TIMELINE)); binding.domainBlock.setOnClickListener(v -> displayTimeline(Timeline.TimeLineEnum.BLOCKED_DOMAIN_TIMELINE)); binding.mutedHome.setOnClickListener(v -> displayTimeline(Timeline.TimeLineEnum.MUTED_TIMELINE_HOME)); } private void displayTimeline(Timeline.TimeLineEnum type) { canGoBack = true; if (type == Timeline.TimeLineEnum.MUTED_TIMELINE || type == Timeline.TimeLineEnum.BLOCKED_TIMELINE) { if (type == Timeline.TimeLineEnum.MUTED_TIMELINE || type == Timeline.TimeLineEnum.BLOCKED_TIMELINE || type == Timeline.TimeLineEnum.MUTED_TIMELINE_HOME) { ThemeHelper.slideViewsToLeft(binding.buttonContainer, binding.fragmentContainer, () -> { fragmentMastodonAccount = new FragmentMastodonAccount(); Loading Loading @@ -114,6 +115,9 @@ public class ActionActivity extends BaseBarActivity { case BLOCKED_DOMAIN_TIMELINE: setTitle(R.string.blocked_domains); break; case MUTED_TIMELINE_HOME: setTitle(R.string.muted_menu_home); break; } } Loading app/src/main/java/app/fedilab/android/client/entities/app/Timeline.java +2 −0 Original line number Diff line number Diff line Loading @@ -388,6 +388,8 @@ public class Timeline { ACCOUNT_TIMELINE("ACCOUNT_TIMELINE"), @SerializedName("MUTED_TIMELINE") MUTED_TIMELINE("MUTED_TIMELINE"), @SerializedName("MUTED_TIMELINE_HOME") MUTED_TIMELINE_HOME("MUTED_TIMELINE_HOME"), @SerializedName("BOOKMARK_TIMELINE") BOOKMARK_TIMELINE("BOOKMARK_TIMELINE"), @SerializedName("BLOCKED_DOMAIN_TIMELINE") Loading app/src/main/java/app/fedilab/android/helper/TimelineHelper.java +21 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ package app.fedilab.android.helper; * You should have received a copy of the GNU General Public License along with Fedilab; if not, * see <http://www.gnu.org/licenses>. */ import static app.fedilab.android.BaseMainActivity.filteredAccounts; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; Loading @@ -35,6 +37,7 @@ import java.util.regex.Pattern; import app.fedilab.android.BaseMainActivity; import app.fedilab.android.activities.MainActivity; import app.fedilab.android.client.endpoints.MastodonFiltersService; import app.fedilab.android.client.entities.api.Account; import app.fedilab.android.client.entities.api.Filter; import app.fedilab.android.client.entities.api.Notification; import app.fedilab.android.client.entities.api.Status; Loading Loading @@ -90,6 +93,7 @@ public class TimelineHelper { } } } //If there are filters: if (BaseMainActivity.mainFilters != null && BaseMainActivity.mainFilters.size() > 0 && statuses != null && statuses.size() > 0) { Loading Loading @@ -143,6 +147,23 @@ public class TimelineHelper { Matcher ms = p.matcher(spoilerText); if (ms.find()) { status.filteredByApp = filter; continue; } } if (filterTimeLineType == Timeline.TimeLineEnum.HOME) { if (filteredAccounts != null && filteredAccounts.size() > 0) { for (Account account : filteredAccounts) { if (account.acct.equals(status.account.acct)) { Filter filterCustom = new Filter(); filterCustom.filter_action = "hide"; ArrayList<String> contextCustom = new ArrayList<>(); contextCustom.add("home"); filterCustom.title = "Fedilab"; filterCustom.context = contextCustom; status.filteredByApp = filterCustom; } } } } } Loading app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonAccount.java +6 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import java.util.List; import app.fedilab.android.BaseMainActivity; import app.fedilab.android.R; import app.fedilab.android.activities.MainActivity; import app.fedilab.android.client.entities.api.Account; import app.fedilab.android.client.entities.api.Accounts; import app.fedilab.android.client.entities.api.Pagination; Loading Loading @@ -128,6 +129,11 @@ public class FragmentMastodonAccount extends Fragment { accountsVM.getMutes(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, String.valueOf(MastodonHelper.accountsPerCall(requireActivity())), max_id, null) .observe(getViewLifecycleOwner(), this::dealWithPagination); } } else if (timelineType == Timeline.TimeLineEnum.MUTED_TIMELINE_HOME) { if (firstLoad) { accountsVM.getMutedHome(MainActivity.currentAccount) .observe(getViewLifecycleOwner(), this::initializeAccountCommonView); } } else if (timelineType == Timeline.TimeLineEnum.BLOCKED_TIMELINE) { if (firstLoad) { accountsVM.getBlocks(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, String.valueOf(MastodonHelper.accountsPerCall(requireActivity())), null, null) Loading Loading
app/src/main/java/app/fedilab/android/BaseMainActivity.java +7 −1 Original line number Diff line number Diff line Loading @@ -127,6 +127,7 @@ import app.fedilab.android.client.entities.api.Status; import app.fedilab.android.client.entities.app.Account; import app.fedilab.android.client.entities.app.BaseAccount; import app.fedilab.android.client.entities.app.BottomMenu; import app.fedilab.android.client.entities.app.MutedAccounts; import app.fedilab.android.client.entities.app.Pinned; import app.fedilab.android.client.entities.app.PinnedTimeline; import app.fedilab.android.client.entities.app.StatusCache; Loading Loading @@ -164,6 +165,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt public static status networkAvailable = UNKNOWN; public static Instance instanceInfo; public static List<Filter> mainFilters; public static List<app.fedilab.android.client.entities.api.Account> filteredAccounts; public static boolean filterFetched; public static boolean show_boosts, show_replies, show_art_nsfw; public static String regex_home, regex_local, regex_public; Loading Loading @@ -302,7 +304,7 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt } else { BaseMainActivity.currentToken = sharedpreferences.getString(Helper.PREF_USER_TOKEN, null); } filteredAccounts = new ArrayList<>(); mamageNewIntent(getIntent()); filterFetched = false; networkStateReceiver = new NetworkStateReceiver(); Loading Loading @@ -565,6 +567,10 @@ public abstract class BaseMainActivity extends BaseActivity implements NetworkSt currentAccount = new Account(BaseMainActivity.this).getConnectedAccount(); //Delete cache older than 7 days new StatusCache(BaseMainActivity.this).deleteForAllAccountAfter7Days(); MutedAccounts mutedAccounts = new MutedAccounts(BaseMainActivity.this).getMutedAccount(currentAccount); if (mutedAccounts != null && mutedAccounts.accounts != null) { filteredAccounts = mutedAccounts.accounts; } } catch (DBException e) { e.printStackTrace(); } Loading
app/src/main/java/app/fedilab/android/activities/ActionActivity.java +5 −1 Original line number Diff line number Diff line Loading @@ -54,11 +54,12 @@ public class ActionActivity extends BaseBarActivity { binding.muted.setOnClickListener(v -> displayTimeline(Timeline.TimeLineEnum.MUTED_TIMELINE)); binding.blocked.setOnClickListener(v -> displayTimeline(Timeline.TimeLineEnum.BLOCKED_TIMELINE)); binding.domainBlock.setOnClickListener(v -> displayTimeline(Timeline.TimeLineEnum.BLOCKED_DOMAIN_TIMELINE)); binding.mutedHome.setOnClickListener(v -> displayTimeline(Timeline.TimeLineEnum.MUTED_TIMELINE_HOME)); } private void displayTimeline(Timeline.TimeLineEnum type) { canGoBack = true; if (type == Timeline.TimeLineEnum.MUTED_TIMELINE || type == Timeline.TimeLineEnum.BLOCKED_TIMELINE) { if (type == Timeline.TimeLineEnum.MUTED_TIMELINE || type == Timeline.TimeLineEnum.BLOCKED_TIMELINE || type == Timeline.TimeLineEnum.MUTED_TIMELINE_HOME) { ThemeHelper.slideViewsToLeft(binding.buttonContainer, binding.fragmentContainer, () -> { fragmentMastodonAccount = new FragmentMastodonAccount(); Loading Loading @@ -114,6 +115,9 @@ public class ActionActivity extends BaseBarActivity { case BLOCKED_DOMAIN_TIMELINE: setTitle(R.string.blocked_domains); break; case MUTED_TIMELINE_HOME: setTitle(R.string.muted_menu_home); break; } } Loading
app/src/main/java/app/fedilab/android/client/entities/app/Timeline.java +2 −0 Original line number Diff line number Diff line Loading @@ -388,6 +388,8 @@ public class Timeline { ACCOUNT_TIMELINE("ACCOUNT_TIMELINE"), @SerializedName("MUTED_TIMELINE") MUTED_TIMELINE("MUTED_TIMELINE"), @SerializedName("MUTED_TIMELINE_HOME") MUTED_TIMELINE_HOME("MUTED_TIMELINE_HOME"), @SerializedName("BOOKMARK_TIMELINE") BOOKMARK_TIMELINE("BOOKMARK_TIMELINE"), @SerializedName("BLOCKED_DOMAIN_TIMELINE") Loading
app/src/main/java/app/fedilab/android/helper/TimelineHelper.java +21 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ package app.fedilab.android.helper; * You should have received a copy of the GNU General Public License along with Fedilab; if not, * see <http://www.gnu.org/licenses>. */ import static app.fedilab.android.BaseMainActivity.filteredAccounts; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; Loading @@ -35,6 +37,7 @@ import java.util.regex.Pattern; import app.fedilab.android.BaseMainActivity; import app.fedilab.android.activities.MainActivity; import app.fedilab.android.client.endpoints.MastodonFiltersService; import app.fedilab.android.client.entities.api.Account; import app.fedilab.android.client.entities.api.Filter; import app.fedilab.android.client.entities.api.Notification; import app.fedilab.android.client.entities.api.Status; Loading Loading @@ -90,6 +93,7 @@ public class TimelineHelper { } } } //If there are filters: if (BaseMainActivity.mainFilters != null && BaseMainActivity.mainFilters.size() > 0 && statuses != null && statuses.size() > 0) { Loading Loading @@ -143,6 +147,23 @@ public class TimelineHelper { Matcher ms = p.matcher(spoilerText); if (ms.find()) { status.filteredByApp = filter; continue; } } if (filterTimeLineType == Timeline.TimeLineEnum.HOME) { if (filteredAccounts != null && filteredAccounts.size() > 0) { for (Account account : filteredAccounts) { if (account.acct.equals(status.account.acct)) { Filter filterCustom = new Filter(); filterCustom.filter_action = "hide"; ArrayList<String> contextCustom = new ArrayList<>(); contextCustom.add("home"); filterCustom.title = "Fedilab"; filterCustom.context = contextCustom; status.filteredByApp = filterCustom; } } } } } Loading
app/src/main/java/app/fedilab/android/ui/fragment/timeline/FragmentMastodonAccount.java +6 −0 Original line number Diff line number Diff line Loading @@ -32,6 +32,7 @@ import java.util.List; import app.fedilab.android.BaseMainActivity; import app.fedilab.android.R; import app.fedilab.android.activities.MainActivity; import app.fedilab.android.client.entities.api.Account; import app.fedilab.android.client.entities.api.Accounts; import app.fedilab.android.client.entities.api.Pagination; Loading Loading @@ -128,6 +129,11 @@ public class FragmentMastodonAccount extends Fragment { accountsVM.getMutes(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, String.valueOf(MastodonHelper.accountsPerCall(requireActivity())), max_id, null) .observe(getViewLifecycleOwner(), this::dealWithPagination); } } else if (timelineType == Timeline.TimeLineEnum.MUTED_TIMELINE_HOME) { if (firstLoad) { accountsVM.getMutedHome(MainActivity.currentAccount) .observe(getViewLifecycleOwner(), this::initializeAccountCommonView); } } else if (timelineType == Timeline.TimeLineEnum.BLOCKED_TIMELINE) { if (firstLoad) { accountsVM.getBlocks(BaseMainActivity.currentInstance, BaseMainActivity.currentToken, String.valueOf(MastodonHelper.accountsPerCall(requireActivity())), null, null) Loading