added option to show local timelines (Mastodon)
This commit is contained in:
parent
3a8e2a3381
commit
b07e944ecd
|
@ -348,6 +348,7 @@ public class Mastodon implements Connection {
|
||||||
@Override
|
@Override
|
||||||
public List<Status> searchStatuses(String search, long minId, long maxId) throws MastodonException {
|
public List<Status> searchStatuses(String search, long minId, long maxId) throws MastodonException {
|
||||||
List<String> params = new ArrayList<>();
|
List<String> params = new ArrayList<>();
|
||||||
|
params.add("local=" + settings.useLocalTimeline());
|
||||||
if (search.matches("#\\S+")) {
|
if (search.matches("#\\S+")) {
|
||||||
return getStatuses(ENDPOINT_HASHTAG_TIMELINE + search.substring(1), params, minId, maxId);
|
return getStatuses(ENDPOINT_HASHTAG_TIMELINE + search.substring(1), params, minId, maxId);
|
||||||
} else {
|
} else {
|
||||||
|
@ -361,6 +362,7 @@ public class Mastodon implements Connection {
|
||||||
@Override
|
@Override
|
||||||
public List<Status> getPublicTimeline(long minId, long maxId) throws MastodonException {
|
public List<Status> getPublicTimeline(long minId, long maxId) throws MastodonException {
|
||||||
List<String> params = new ArrayList<>();
|
List<String> params = new ArrayList<>();
|
||||||
|
params.add("local=" + settings.useLocalTimeline());
|
||||||
return getStatuses(ENDPOINT_PUBLIC_TIMELINE, params, minId, maxId);
|
return getStatuses(ENDPOINT_PUBLIC_TIMELINE, params, minId, maxId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -96,18 +96,19 @@ public class GlobalSettings {
|
||||||
private static final String ENABLE_LIKE = "like_enable";
|
private static final String ENABLE_LIKE = "like_enable";
|
||||||
private static final String ENABLE_TWITTER_ALT = "twitter_alt_set";
|
private static final String ENABLE_TWITTER_ALT = "twitter_alt_set";
|
||||||
private static final String FILTER_RESULTS = "filter_results";
|
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_TOKEN = "api_key1";
|
||||||
private static final String CONSUMER_SECRET = "api_key2";
|
private static final String CONSUMER_SECRET = "api_key2";
|
||||||
private static final String BEARER_TOKEN = "bearer";
|
private static final String BEARER_TOKEN = "bearer";
|
||||||
private static final String CURRENT_API = "current_api_id";
|
private static final String CURRENT_API = "current_api_id";
|
||||||
private static final String HOSTNAME = "mastodon_host";
|
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
|
// file name of the preferences
|
||||||
private static final String APP_SETTINGS = "settings";
|
private static final String APP_SETTINGS = "settings";
|
||||||
|
|
||||||
|
@ -144,6 +145,7 @@ public class GlobalSettings {
|
||||||
private boolean filterResults;
|
private boolean filterResults;
|
||||||
private boolean enableLike;
|
private boolean enableLike;
|
||||||
private boolean twitterAlt;
|
private boolean twitterAlt;
|
||||||
|
private boolean localOnly;
|
||||||
private int background_color;
|
private int background_color;
|
||||||
private int font_color;
|
private int font_color;
|
||||||
private int highlight_color;
|
private int highlight_color;
|
||||||
|
@ -666,6 +668,27 @@ public class GlobalSettings {
|
||||||
initLogin();
|
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
|
* set proxy address
|
||||||
*
|
*
|
||||||
|
@ -946,6 +969,7 @@ public class GlobalSettings {
|
||||||
filterResults = settings.getBoolean(FILTER_RESULTS, true);
|
filterResults = settings.getBoolean(FILTER_RESULTS, true);
|
||||||
enableLike = settings.getBoolean(ENABLE_LIKE, false);
|
enableLike = settings.getBoolean(ENABLE_LIKE, false);
|
||||||
twitterAlt = settings.getBoolean(ENABLE_TWITTER_ALT, false);
|
twitterAlt = settings.getBoolean(ENABLE_TWITTER_ALT, false);
|
||||||
|
localOnly = settings.getBoolean(MASTODON_LOCAL_TIMELINE, false);
|
||||||
proxyHost = settings.getString(PROXY_ADDR, "");
|
proxyHost = settings.getString(PROXY_ADDR, "");
|
||||||
proxyPort = settings.getString(PROXY_PORT, "");
|
proxyPort = settings.getString(PROXY_PORT, "");
|
||||||
proxyUser = settings.getString(PROXY_USER, "");
|
proxyUser = settings.getString(PROXY_USER, "");
|
||||||
|
|
|
@ -30,6 +30,7 @@ import com.google.android.material.tabs.TabLayout.OnTabSelectedListener;
|
||||||
import com.google.android.material.tabs.TabLayout.Tab;
|
import com.google.android.material.tabs.TabLayout.Tab;
|
||||||
|
|
||||||
import org.nuclearfog.twidda.R;
|
import org.nuclearfog.twidda.R;
|
||||||
|
import org.nuclearfog.twidda.config.Configuration;
|
||||||
import org.nuclearfog.twidda.ui.adapter.FragmentAdapter;
|
import org.nuclearfog.twidda.ui.adapter.FragmentAdapter;
|
||||||
import org.nuclearfog.twidda.backend.api.ConnectionException;
|
import org.nuclearfog.twidda.backend.api.ConnectionException;
|
||||||
import org.nuclearfog.twidda.backend.async.LinkLoader;
|
import org.nuclearfog.twidda.backend.async.LinkLoader;
|
||||||
|
@ -156,7 +157,10 @@ public class MainActivity extends AppCompatActivity implements ActivityResultCal
|
||||||
getMenuInflater().inflate(R.menu.home, m);
|
getMenuInflater().inflate(R.menu.home, m);
|
||||||
AppStyles.setMenuIconColor(m, settings.getIconColor());
|
AppStyles.setMenuIconColor(m, settings.getIconColor());
|
||||||
MenuItem search = m.findItem(R.id.menu_search);
|
MenuItem search = m.findItem(R.id.menu_search);
|
||||||
|
MenuItem localTl = m.findItem(R.id.menu_local_timeline);
|
||||||
SearchView searchView = (SearchView) search.getActionView();
|
SearchView searchView = (SearchView) search.getActionView();
|
||||||
|
localTl.setVisible(settings.getLogin().getConfiguration() == Configuration.MASTODON);
|
||||||
|
localTl.setChecked(settings.useLocalTimeline());
|
||||||
searchView.setOnQueryTextListener(this);
|
searchView.setOnQueryTextListener(this);
|
||||||
return super.onCreateOptionsMenu(m);
|
return super.onCreateOptionsMenu(m);
|
||||||
}
|
}
|
||||||
|
@ -195,6 +199,13 @@ public class MainActivity extends AppCompatActivity implements ActivityResultCal
|
||||||
Intent accountManager = new Intent(this, AccountActivity.class);
|
Intent accountManager = new Intent(this, AccountActivity.class);
|
||||||
activityResultLauncher.launch(accountManager);
|
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);
|
return super.onOptionsItemSelected(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -134,7 +134,7 @@ public class SearchActivity extends AppCompatActivity implements OnTabSelectedLi
|
||||||
}
|
}
|
||||||
// enable/disable search filter
|
// enable/disable search filter
|
||||||
else if (item.getItemId() == R.id.search_filter) {
|
else if (item.getItemId() == R.id.search_filter) {
|
||||||
boolean enable = !item.isChecked();
|
boolean enable = !settings.filterResults();
|
||||||
settings.setFilterResults(enable);
|
settings.setFilterResults(enable);
|
||||||
item.setChecked(enable);
|
item.setChecked(enable);
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,11 @@
|
||||||
app:actionViewClass="androidx.appcompat.widget.SearchView"
|
app:actionViewClass="androidx.appcompat.widget.SearchView"
|
||||||
app:showAsAction="always|collapseActionView" />
|
app:showAsAction="always|collapseActionView" />
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_local_timeline"
|
||||||
|
android:title="@string/menu_show_local_timeline"
|
||||||
|
android:checkable="true" />
|
||||||
|
|
||||||
<item
|
<item
|
||||||
android:id="@+id/menu_profile"
|
android:id="@+id/menu_profile"
|
||||||
android:title="@string/menu_open_home_profile"
|
android:title="@string/menu_open_home_profile"
|
||||||
|
|
|
@ -147,7 +147,7 @@
|
||||||
<string name="info_user_removed">%1$s von der Liste entfernt!</string>
|
<string name="info_user_removed">%1$s von der Liste entfernt!</string>
|
||||||
<string name="descr_remove_user">Nutzer von der Liste entfernen</string>
|
<string name="descr_remove_user">Nutzer von der Liste entfernen</string>
|
||||||
<string name="menu_tweet">Status posten</string>
|
<string name="menu_tweet">Status posten</string>
|
||||||
<string name="menu_open_home_profile">Profil</string>
|
<string name="menu_open_home_profile">Profil anzeigen</string>
|
||||||
<string name="menu_open_twitter_search">Twitter suche</string>
|
<string name="menu_open_twitter_search">Twitter suche</string>
|
||||||
<string name="menu_open_settings">Einstellungen</string>
|
<string name="menu_open_settings">Einstellungen</string>
|
||||||
<string name="menu_create_list">erstelle Nutzerliste</string>
|
<string name="menu_create_list">erstelle Nutzerliste</string>
|
||||||
|
@ -264,4 +264,5 @@
|
||||||
<string name="info_missing_key">bitte Schlüssel eingeben</string>
|
<string name="info_missing_key">bitte Schlüssel eingeben</string>
|
||||||
<string name="info_missing_host">bitte gültigen Hostnamen eingeben</string>
|
<string name="info_missing_host">bitte gültigen Hostnamen eingeben</string>
|
||||||
<string name="info_missing_api_keys">Bitte API-Schlüssel hinzufügen</string>
|
<string name="info_missing_api_keys">Bitte API-Schlüssel hinzufügen</string>
|
||||||
|
<string name="menu_show_local_timeline">zeige lokale Timeline</string>
|
||||||
</resources>
|
</resources>
|
|
@ -137,6 +137,7 @@
|
||||||
<string name="menu_excluded_users">Blocklists</string>
|
<string name="menu_excluded_users">Blocklists</string>
|
||||||
<string name="menu_exclude_user">exclude user</string>
|
<string name="menu_exclude_user">exclude user</string>
|
||||||
<string name="menu_search_filter">filter results</string>
|
<string name="menu_search_filter">filter results</string>
|
||||||
|
<string name="menu_show_local_timeline">show local timeline</string>
|
||||||
<string name="menu_hint_mute_user">enter @name to mute</string>
|
<string name="menu_hint_mute_user">enter @name to mute</string>
|
||||||
<string name="menu_hint_block_user">enter @name to block</string>
|
<string name="menu_hint_block_user">enter @name to block</string>
|
||||||
<string name="menu_refresh_exclude">refresh exclude list</string>
|
<string name="menu_refresh_exclude">refresh exclude list</string>
|
||||||
|
|
Loading…
Reference in New Issue