diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/api/mastodon/Mastodon.java b/app/src/main/java/org/nuclearfog/twidda/backend/api/mastodon/Mastodon.java index 6015333e..6cfbe96b 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/api/mastodon/Mastodon.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/api/mastodon/Mastodon.java @@ -348,6 +348,7 @@ public class Mastodon implements Connection { @Override public List searchStatuses(String search, long minId, long maxId) throws MastodonException { List params = new ArrayList<>(); + params.add("local=" + settings.useLocalTimeline()); if (search.matches("#\\S+")) { return getStatuses(ENDPOINT_HASHTAG_TIMELINE + search.substring(1), params, minId, maxId); } else { @@ -361,6 +362,7 @@ public class Mastodon implements Connection { @Override public List getPublicTimeline(long minId, long maxId) throws MastodonException { List params = new ArrayList<>(); + params.add("local=" + settings.useLocalTimeline()); return getStatuses(ENDPOINT_PUBLIC_TIMELINE, params, minId, maxId); } diff --git a/app/src/main/java/org/nuclearfog/twidda/config/GlobalSettings.java b/app/src/main/java/org/nuclearfog/twidda/config/GlobalSettings.java index df18da75..99da89b2 100644 --- a/app/src/main/java/org/nuclearfog/twidda/config/GlobalSettings.java +++ b/app/src/main/java/org/nuclearfog/twidda/config/GlobalSettings.java @@ -96,18 +96,19 @@ public class GlobalSettings { private static final String ENABLE_LIKE = "like_enable"; private static final String ENABLE_TWITTER_ALT = "twitter_alt_set"; private static final String FILTER_RESULTS = "filter_results"; + private static final String MASTODON_LOCAL_TIMELINE = "mastodon_local_timeline"; + + // current login preferences + private static final String LOGGED_IN = "login"; + private static final String CURRENT_ID = "userID"; + private static final String OAUTH_TOKEN = "key1"; + private static final String OAUTH_SECRET = "key2"; private static final String CONSUMER_TOKEN = "api_key1"; private static final String CONSUMER_SECRET = "api_key2"; private static final String BEARER_TOKEN = "bearer"; private static final String CURRENT_API = "current_api_id"; private static final String HOSTNAME = "mastodon_host"; - // login specific preference names - private static final String LOGGED_IN = "login"; - private static final String CURRENT_ID = "userID"; - private static final String OAUTH_TOKEN = "key1"; - private static final String OAUTH_SECRET = "key2"; - // file name of the preferences private static final String APP_SETTINGS = "settings"; @@ -144,6 +145,7 @@ public class GlobalSettings { private boolean filterResults; private boolean enableLike; private boolean twitterAlt; + private boolean localOnly; private int background_color; private int font_color; private int highlight_color; @@ -666,6 +668,27 @@ public class GlobalSettings { initLogin(); } + /** + * use public Mastodon timeline of the local server only + * + * @return true to use local timeline only + */ + public boolean useLocalTimeline() { + return localOnly; + } + + /** + * set public Mastodon timeline + * + * @param enable true to use local timeline only + */ + public void setLocalTimeline(boolean enable) { + localOnly = enable; + Editor edit = settings.edit(); + edit.putBoolean(MASTODON_LOCAL_TIMELINE, enable); + edit.apply(); + } + /** * set proxy address * @@ -946,6 +969,7 @@ public class GlobalSettings { filterResults = settings.getBoolean(FILTER_RESULTS, true); enableLike = settings.getBoolean(ENABLE_LIKE, false); twitterAlt = settings.getBoolean(ENABLE_TWITTER_ALT, false); + localOnly = settings.getBoolean(MASTODON_LOCAL_TIMELINE, false); proxyHost = settings.getString(PROXY_ADDR, ""); proxyPort = settings.getString(PROXY_PORT, ""); proxyUser = settings.getString(PROXY_USER, ""); diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/activities/MainActivity.java b/app/src/main/java/org/nuclearfog/twidda/ui/activities/MainActivity.java index 4d7b7d08..0eac3cfd 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/activities/MainActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/activities/MainActivity.java @@ -30,6 +30,7 @@ import com.google.android.material.tabs.TabLayout.OnTabSelectedListener; import com.google.android.material.tabs.TabLayout.Tab; import org.nuclearfog.twidda.R; +import org.nuclearfog.twidda.config.Configuration; import org.nuclearfog.twidda.ui.adapter.FragmentAdapter; import org.nuclearfog.twidda.backend.api.ConnectionException; import org.nuclearfog.twidda.backend.async.LinkLoader; @@ -156,7 +157,10 @@ public class MainActivity extends AppCompatActivity implements ActivityResultCal getMenuInflater().inflate(R.menu.home, m); AppStyles.setMenuIconColor(m, settings.getIconColor()); MenuItem search = m.findItem(R.id.menu_search); + MenuItem localTl = m.findItem(R.id.menu_local_timeline); SearchView searchView = (SearchView) search.getActionView(); + localTl.setVisible(settings.getLogin().getConfiguration() == Configuration.MASTODON); + localTl.setChecked(settings.useLocalTimeline()); searchView.setOnQueryTextListener(this); return super.onCreateOptionsMenu(m); } @@ -195,6 +199,13 @@ public class MainActivity extends AppCompatActivity implements ActivityResultCal Intent accountManager = new Intent(this, AccountActivity.class); activityResultLauncher.launch(accountManager); } + // enable disable Mastodon local timeline + else if (item.getItemId() == R.id.menu_local_timeline) { + boolean toggle = !settings.useLocalTimeline(); + settings.setLocalTimeline(toggle); + adapter.notifySettingsChanged(); + item.setChecked(toggle); + } return super.onOptionsItemSelected(item); } diff --git a/app/src/main/java/org/nuclearfog/twidda/ui/activities/SearchActivity.java b/app/src/main/java/org/nuclearfog/twidda/ui/activities/SearchActivity.java index 7aab0c3c..4780a475 100644 --- a/app/src/main/java/org/nuclearfog/twidda/ui/activities/SearchActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/ui/activities/SearchActivity.java @@ -134,7 +134,7 @@ public class SearchActivity extends AppCompatActivity implements OnTabSelectedLi } // enable/disable search filter else if (item.getItemId() == R.id.search_filter) { - boolean enable = !item.isChecked(); + boolean enable = !settings.filterResults(); settings.setFilterResults(enable); item.setChecked(enable); } diff --git a/app/src/main/res/menu/home.xml b/app/src/main/res/menu/home.xml index 5cc19204..79e3da91 100644 --- a/app/src/main/res/menu/home.xml +++ b/app/src/main/res/menu/home.xml @@ -9,6 +9,11 @@ app:actionViewClass="androidx.appcompat.widget.SearchView" app:showAsAction="always|collapseActionView" /> + + %1$s von der Liste entfernt! Nutzer von der Liste entfernen Status posten - Profil + Profil anzeigen Twitter suche Einstellungen erstelle Nutzerliste @@ -264,4 +264,5 @@ bitte Schlüssel eingeben bitte gültigen Hostnamen eingeben Bitte API-Schlüssel hinzufügen + zeige lokale Timeline \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5db387bc..14b81fcf 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -137,6 +137,7 @@ Blocklists exclude user filter results + show local timeline enter @name to mute enter @name to block refresh exclude list