added Twitter API version selector
This commit is contained in:
parent
1dc5e532a8
commit
0c0942ee75
|
@ -106,15 +106,22 @@ public class FragmentAdapter extends FragmentStatePagerAdapter {
|
|||
fragments = new ListFragment[4];
|
||||
fragments[0] = new StatusFragment();
|
||||
fragments[1] = new TrendFragment();
|
||||
if (settings.getLogin().getApiType() == Account.API_TWITTER) {
|
||||
fragments[2] = new NotificationFragment();
|
||||
fragments[3] = new MessageFragment();
|
||||
} else {
|
||||
fragments[2] = new StatusFragment();
|
||||
fragments[3] = new NotificationFragment();
|
||||
Bundle parampublicTl = new Bundle();
|
||||
parampublicTl.putInt(KEY_STATUS_FRAGMENT_MODE, STATUS_FRAGMENT_PUBLIC);
|
||||
fragments[2].setArguments(parampublicTl);
|
||||
|
||||
switch (settings.getLogin().getApiType()) {
|
||||
case Account.API_TWITTER_1:
|
||||
case Account.API_TWITTER_2:
|
||||
fragments[2] = new NotificationFragment();
|
||||
fragments[3] = new MessageFragment();
|
||||
break;
|
||||
|
||||
default:
|
||||
case Account.API_MASTODON:
|
||||
fragments[2] = new StatusFragment();
|
||||
fragments[3] = new NotificationFragment();
|
||||
Bundle parampublicTl = new Bundle();
|
||||
parampublicTl.putInt(KEY_STATUS_FRAGMENT_MODE, STATUS_FRAGMENT_PUBLIC);
|
||||
fragments[2].setArguments(parampublicTl);
|
||||
break;
|
||||
}
|
||||
fragments[0].setArguments(paramHomeTl);
|
||||
notifyDataSetChanged();
|
||||
|
@ -193,12 +200,18 @@ public class FragmentAdapter extends FragmentStatePagerAdapter {
|
|||
paramUserlistOwnership.putInt(KEY_FRAG_LIST_LIST_TYPE, LIST_USER_OWNS);
|
||||
paramUserlistSubscription.putInt(KEY_FRAG_LIST_LIST_TYPE, LIST_USER_SUBSCR_TO);
|
||||
|
||||
if (settings.getLogin().getApiType() == Account.API_TWITTER) {
|
||||
fragments = new ListFragment[2];
|
||||
fragments[1] = new UserListFragment();
|
||||
fragments[1].setArguments(paramUserlistSubscription);
|
||||
} else {
|
||||
fragments = new ListFragment[1];
|
||||
switch (settings.getLogin().getApiType()) {
|
||||
case Account.API_TWITTER_1:
|
||||
case Account.API_TWITTER_2:
|
||||
fragments = new ListFragment[2];
|
||||
fragments[1] = new UserListFragment();
|
||||
fragments[1].setArguments(paramUserlistSubscription);
|
||||
break;
|
||||
|
||||
default:
|
||||
case Account.API_MASTODON:
|
||||
fragments = new ListFragment[1];
|
||||
break;
|
||||
}
|
||||
fragments[0] = new UserListFragment();
|
||||
fragments[0].setArguments(paramUserlistOwnership);
|
||||
|
@ -222,12 +235,18 @@ public class FragmentAdapter extends FragmentStatePagerAdapter {
|
|||
paramUserlistMember.putLong(KEY_FRAG_USER_ID, listId);
|
||||
paramUserlistSubscriber.putLong(KEY_FRAG_USER_ID, listId);
|
||||
paramUserlistSubscriber.putInt(KEY_FRAG_USER_MODE, USER_FRAG_LIST_SUBSCRIBER);
|
||||
if (settings.getLogin().getApiType() == Account.API_TWITTER) {
|
||||
fragments = new ListFragment[3];
|
||||
fragments[2] = new UserFragment();
|
||||
fragments[2].setArguments(paramUserlistSubscriber);
|
||||
} else {
|
||||
fragments = new ListFragment[2];
|
||||
switch (settings.getLogin().getApiType()) {
|
||||
case Account.API_TWITTER_1:
|
||||
case Account.API_TWITTER_2:
|
||||
fragments = new ListFragment[3];
|
||||
fragments[2] = new UserFragment();
|
||||
fragments[2].setArguments(paramUserlistSubscriber);
|
||||
break;
|
||||
|
||||
default:
|
||||
case Account.API_MASTODON:
|
||||
fragments = new ListFragment[2];
|
||||
break;
|
||||
}
|
||||
fragments[0] = new StatusFragment();
|
||||
fragments[1] = new UserFragment();
|
||||
|
|
|
@ -30,7 +30,7 @@ public class OptionsAdapter extends RecyclerView.Adapter<Optionholder> implement
|
|||
*/
|
||||
public OptionsAdapter(GlobalSettings settings, OnOptionClickListener listener) {
|
||||
// currently Twitter doesn't support vote over API
|
||||
enableVote = settings.getLogin().getApiType() != Account.API_TWITTER;
|
||||
enableVote = settings.getLogin().getApiType() == Account.API_MASTODON;
|
||||
this.settings = settings;
|
||||
this.listener = listener;
|
||||
}
|
||||
|
|
|
@ -105,7 +105,7 @@ public class AccountHolder extends ViewHolder implements OnClickListener {
|
|||
screenname.setText(R.string.account_user_id_prefix);
|
||||
screenname.append(Long.toString(account.getId()));
|
||||
}
|
||||
if (account.getApiType() == Account.API_TWITTER) {
|
||||
if (account.getApiType() == Account.API_TWITTER_1 || account.getApiType() == Account.API_TWITTER_2) {
|
||||
screenname.append(ACCOUNT_TWITTER);
|
||||
} else if (account.getApiType() == Account.API_MASTODON) {
|
||||
String host = account.getHostname();
|
||||
|
|
|
@ -66,7 +66,8 @@ public class UserlistHolder extends ViewHolder implements OnClickListener {
|
|||
subscriber = itemView.findViewById(R.id.item_list_subscriber);
|
||||
followList = itemView.findViewById(R.id.item_list_following_indicator);
|
||||
|
||||
enableExtras = settings.getLogin().getApiType() == Account.API_TWITTER;
|
||||
int apiType = settings.getLogin().getApiType();
|
||||
enableExtras = apiType == Account.API_TWITTER_1 || apiType == Account.API_TWITTER_2;
|
||||
enableImages = settings.imagesEnabled();
|
||||
|
||||
if (!enableExtras) {
|
||||
|
|
|
@ -67,7 +67,7 @@ public class ConnectionManager {
|
|||
// select automatically
|
||||
else {
|
||||
Account login = settings.getLogin();
|
||||
if (login.getApiType() == Account.API_TWITTER) {
|
||||
if (login.getApiType() == Account.API_TWITTER_1 || login.getApiType() == Account.API_TWITTER_2) {
|
||||
connection = new Twitter(context);
|
||||
} else if (login.getApiType() == Account.API_MASTODON) {
|
||||
connection = new Mastodon(context);
|
||||
|
|
|
@ -83,4 +83,13 @@ public class Tokens {
|
|||
return TOKEN_SECRET;
|
||||
return login.getConsumerSecret();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true to use Twitte rAPI v2
|
||||
*/
|
||||
public boolean useAPIv2() {
|
||||
if (USE_DEFAULT_KEYS)
|
||||
return !DISABLE_API_V2;
|
||||
return settings.isTwitterV2Enabled();
|
||||
}
|
||||
}
|
|
@ -310,7 +310,7 @@ public class Twitter implements Connection {
|
|||
@Override
|
||||
public Users getRepostingUsers(long tweetId, long cursor) throws TwitterException {
|
||||
List<String> params = new ArrayList<>();
|
||||
if (!Tokens.DISABLE_API_V2) {
|
||||
if (tokens.useAPIv2()) {
|
||||
String endpoint = TWEET_UNI + tweetId + "/retweeted_by";
|
||||
return getUsers2(endpoint, params);
|
||||
} else {
|
||||
|
@ -327,7 +327,7 @@ public class Twitter implements Connection {
|
|||
|
||||
@Override
|
||||
public Users getFavoritingUsers(long tweetId, long cursor) throws TwitterException {
|
||||
if (!Tokens.DISABLE_API_V2) {
|
||||
if (tokens.useAPIv2()) {
|
||||
String endpoint = TWEET_UNI + tweetId + "/liking_users";
|
||||
return getUsers2(endpoint, new ArrayList<>());
|
||||
} else {
|
||||
|
@ -625,7 +625,7 @@ public class Twitter implements Connection {
|
|||
public List<Status> getStatusReplies(long id, long minId, long maxId, String... extras) throws TwitterException {
|
||||
List<String> params = new ArrayList<>();
|
||||
List<Status> replies = new LinkedList<>();
|
||||
if (!Tokens.DISABLE_API_V2) {
|
||||
if (tokens.useAPIv2()) {
|
||||
params.add("query=" + StringTools.encode("conversation_id:" + id));
|
||||
// Note: minId disabled! Twitter refuses API request containing minId of a tweet older than one week
|
||||
List<Status> result = getTweets2(TWEET_SEARCH_2, params, 0, maxId);
|
||||
|
@ -660,7 +660,7 @@ public class Twitter implements Connection {
|
|||
List<String> params = new ArrayList<>();
|
||||
params.add("id=" + id);
|
||||
Status status = getTweet1(TWEET_LOOKUP, params);
|
||||
if (!Tokens.DISABLE_API_V2) {
|
||||
if (tokens.useAPIv2()) {
|
||||
try {
|
||||
params.clear();
|
||||
return getTweet2(TWEET2_LOOKUP + id, params, status);
|
||||
|
|
|
@ -18,6 +18,7 @@ public class TwitterAccount implements Account {
|
|||
private static final String TWITTER_HOST = "https://twitter.com";
|
||||
|
||||
private long date;
|
||||
private int type;
|
||||
|
||||
private String oauthToken, oauthSecret;
|
||||
private String consumerToken, consumerSecret;
|
||||
|
@ -47,6 +48,7 @@ public class TwitterAccount implements Account {
|
|||
this.consumerSecret = consumerSecret;
|
||||
this.user = user;
|
||||
date = System.currentTimeMillis();
|
||||
type = API_TWITTER_1;
|
||||
}
|
||||
|
||||
|
||||
|
@ -106,7 +108,7 @@ public class TwitterAccount implements Account {
|
|||
|
||||
@Override
|
||||
public int getApiType() {
|
||||
return Account.API_TWITTER;
|
||||
return type;
|
||||
}
|
||||
|
||||
|
||||
|
@ -129,4 +131,11 @@ public class TwitterAccount implements Account {
|
|||
return false;
|
||||
return user.equals(((Account) obj).getUser());
|
||||
}
|
||||
|
||||
/**
|
||||
* override API version
|
||||
*/
|
||||
public void enableV2() {
|
||||
type = API_TWITTER_2;
|
||||
}
|
||||
}
|
|
@ -7,6 +7,7 @@ import androidx.annotation.Nullable;
|
|||
import org.nuclearfog.twidda.backend.api.Connection;
|
||||
import org.nuclearfog.twidda.backend.api.ConnectionException;
|
||||
import org.nuclearfog.twidda.backend.api.ConnectionManager;
|
||||
import org.nuclearfog.twidda.backend.api.twitter.impl.TwitterAccount;
|
||||
import org.nuclearfog.twidda.database.AppDatabase;
|
||||
import org.nuclearfog.twidda.database.GlobalSettings;
|
||||
import org.nuclearfog.twidda.model.Account;
|
||||
|
@ -35,12 +36,17 @@ public class LoginAction extends AsyncTask<String, Void, String> {
|
|||
/**
|
||||
* use Twitter account to login
|
||||
*/
|
||||
public static final int LOGIN_TWITTER = 10;
|
||||
public static final int LOGIN_TWITTER_1 = 10;
|
||||
|
||||
/**
|
||||
* use Twitter account to login
|
||||
*/
|
||||
public static final int LOGIN_TWITTER_2 = 11;
|
||||
|
||||
/**
|
||||
* use Mastodon account to login
|
||||
*/
|
||||
public static final int LOGIN_MASTODON = 11;
|
||||
public static final int LOGIN_MASTODON = 20;
|
||||
|
||||
private WeakReference<LoginActivity> weakRef;
|
||||
private AppDatabase database;
|
||||
|
@ -49,7 +55,7 @@ public class LoginAction extends AsyncTask<String, Void, String> {
|
|||
@Nullable
|
||||
private ConnectionException exception;
|
||||
|
||||
private int mode;
|
||||
private int mode, network;
|
||||
|
||||
/**
|
||||
* Account to twitter with PIN
|
||||
|
@ -64,8 +70,9 @@ public class LoginAction extends AsyncTask<String, Void, String> {
|
|||
database = new AppDatabase(activity);
|
||||
settings = GlobalSettings.getInstance(activity);
|
||||
this.mode = mode;
|
||||
this.network = network;
|
||||
|
||||
if (network == LOGIN_TWITTER) {
|
||||
if (network == LOGIN_TWITTER_1 || network == LOGIN_TWITTER_2) {
|
||||
connection = ConnectionManager.get(activity, ConnectionManager.SELECT_TWITTER);
|
||||
} else if (network == LOGIN_MASTODON) {
|
||||
connection = ConnectionManager.get(activity, ConnectionManager.SELECT_MASTODON);
|
||||
|
@ -91,6 +98,9 @@ public class LoginAction extends AsyncTask<String, Void, String> {
|
|||
case MODE_LOGIN:
|
||||
// login with pin and access token
|
||||
Account account = connection.loginApp(param);
|
||||
if (network == LOGIN_TWITTER_2 && account instanceof TwitterAccount) {
|
||||
((TwitterAccount) account).enableV2();
|
||||
}
|
||||
// save new user information
|
||||
database.saveLogin(account);
|
||||
return "";
|
||||
|
|
|
@ -100,6 +100,7 @@ public class GlobalSettings {
|
|||
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 ENABLE_V2 = "enable_twitter_v2";
|
||||
private static final String HOSTNAME = "mastodon_host";
|
||||
|
||||
// login specific preference names
|
||||
|
@ -144,6 +145,7 @@ public class GlobalSettings {
|
|||
private boolean filterResults;
|
||||
private boolean enableLike;
|
||||
private boolean twitterAlt;
|
||||
private boolean enableV2;
|
||||
private int background_color;
|
||||
private int font_color;
|
||||
private int highlight_color;
|
||||
|
@ -505,7 +507,7 @@ public class GlobalSettings {
|
|||
* @return saved location information
|
||||
*/
|
||||
public Location getTrendLocation() {
|
||||
if (account.getApiType() == Account.API_TWITTER)
|
||||
if (account.getApiType() == Account.API_TWITTER_1 || account.getApiType() == Account.API_TWITTER_2)
|
||||
return location;
|
||||
return new LocationImpl(-1L, "");
|
||||
}
|
||||
|
@ -661,6 +663,13 @@ public class GlobalSettings {
|
|||
initLogin();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true if Twitter API v2 is enabled
|
||||
*/
|
||||
public boolean isTwitterV2Enabled() {
|
||||
return enableV2;
|
||||
}
|
||||
|
||||
/**
|
||||
* set proxy address
|
||||
*
|
||||
|
@ -866,8 +875,11 @@ public class GlobalSettings {
|
|||
e.remove(HOSTNAME);
|
||||
} else {
|
||||
AccountImpl account = new AccountImpl(login);
|
||||
enableV2 = account.getApiType() == Account.API_TWITTER_2;
|
||||
this.account = account;
|
||||
loggedIn = true;
|
||||
// setup alternative Twitter host
|
||||
if (account.getApiType() == Account.API_TWITTER && twitterAlt) {
|
||||
if ((account.getApiType() == Account.API_TWITTER_1 || account.getApiType() == Account.API_TWITTER_2) && twitterAlt) {
|
||||
account.setHost(TWITTER_ALT_HOST);
|
||||
}
|
||||
e.putString(HOSTNAME, account.getHostname());
|
||||
|
@ -879,8 +891,7 @@ public class GlobalSettings {
|
|||
e.putString(BEARER_TOKEN, account.getBearerToken());
|
||||
e.putInt(CURRENT_API, account.getApiType());
|
||||
e.putBoolean(LOGGED_IN, true);
|
||||
this.account = account;
|
||||
loggedIn = true;
|
||||
e.putBoolean(ENABLE_V2, enableV2);
|
||||
}
|
||||
e.apply();
|
||||
if (notify) {
|
||||
|
@ -937,6 +948,7 @@ public class GlobalSettings {
|
|||
filterResults = settings.getBoolean(FILTER_RESULTS, true);
|
||||
enableLike = settings.getBoolean(ENABLE_LIKE, false);
|
||||
twitterAlt = settings.getBoolean(ENABLE_TWITTER_ALT, false);
|
||||
enableV2 = settings.getBoolean(ENABLE_V2, false);
|
||||
proxyHost = settings.getString(PROXY_ADDR, "");
|
||||
proxyPort = settings.getString(PROXY_PORT, "");
|
||||
proxyUser = settings.getString(PROXY_USER, "");
|
||||
|
@ -958,9 +970,9 @@ public class GlobalSettings {
|
|||
String consumerSecret = settings.getString(CONSUMER_SECRET, "");
|
||||
String bearerToken = settings.getString(BEARER_TOKEN, "");
|
||||
String hostname = settings.getString(HOSTNAME, TWITTER_HOST);
|
||||
int apiId = settings.getInt(CURRENT_API, Account.API_TWITTER);
|
||||
int apiId = settings.getInt(CURRENT_API, Account.API_TWITTER_1);
|
||||
long userId = settings.getLong(CURRENT_ID, 0);
|
||||
if (apiId == Account.API_TWITTER && twitterAlt)
|
||||
if ((apiId == Account.API_TWITTER_1 || apiId == Account.API_TWITTER_2) && twitterAlt)
|
||||
hostname = TWITTER_ALT_HOST;
|
||||
account = new AccountImpl(userId, oauthToken, oauthSecret, consumerToken, consumerSecret, bearerToken, hostname, apiId);
|
||||
}
|
||||
|
|
|
@ -150,7 +150,7 @@ public class AccountImpl implements Account {
|
|||
|
||||
@Override
|
||||
public boolean usingDefaultTokens() {
|
||||
if (apiType != API_TWITTER)
|
||||
if (apiType != API_TWITTER_1 && apiType != Account.API_TWITTER_2)
|
||||
return false;
|
||||
return consumerToken == null || consumerToken.isEmpty() || consumerSecret == null || consumerSecret.isEmpty();
|
||||
}
|
||||
|
|
|
@ -70,12 +70,14 @@ public class UserImpl implements User {
|
|||
defaultImage = (register & DEFAULT_IMAGE_MASK) != 0;
|
||||
isCurrentUser = account.getId() == id;
|
||||
|
||||
if (account.getApiType() != Account.API_TWITTER || defaultImage || profileImageOrig.isEmpty()) {
|
||||
if ((account.getApiType() != Account.API_TWITTER_1 && account.getApiType() != Account.API_TWITTER_2)
|
||||
|| defaultImage || profileImageOrig.isEmpty()) {
|
||||
profileImageSmall = profileImageOrig;
|
||||
} else {
|
||||
profileImageSmall = profileImageOrig + "_bigger";
|
||||
}
|
||||
if (account.getApiType() != Account.API_TWITTER || profileBannerOrig.isEmpty()) {
|
||||
if ((account.getApiType() != Account.API_TWITTER_1 && account.getApiType() != Account.API_TWITTER_2)
|
||||
|| profileBannerOrig.isEmpty()) {
|
||||
profileBannerSmall = profileBannerOrig;
|
||||
} else if (profileBannerOrig.endsWith("/1500x500")) {
|
||||
profileBannerSmall = profileBannerOrig.substring(0, profileBannerOrig.length() - 9) + "/600x200";
|
||||
|
|
|
@ -13,9 +13,14 @@ import java.io.Serializable;
|
|||
public interface Account extends Serializable {
|
||||
|
||||
/**
|
||||
* API ID used for Twitter accounts
|
||||
* API ID for twitter version 1.1
|
||||
*/
|
||||
int API_TWITTER = 1;
|
||||
int API_TWITTER_1 = 1;
|
||||
|
||||
/**
|
||||
* API ID for twitter version 2.0
|
||||
*/
|
||||
int API_TWITTER_2 = 3;
|
||||
|
||||
/**
|
||||
* API ID used for Mastodon accounts
|
||||
|
@ -69,7 +74,7 @@ public interface Account extends Serializable {
|
|||
String getHostname();
|
||||
|
||||
/**
|
||||
* @return type of the ID {@link #API_TWITTER,#API_MASTODON}
|
||||
* @return type of the ID {@link #API_TWITTER_1,#API_TWITTER_2,#API_MASTODON}
|
||||
*/
|
||||
int getApiType();
|
||||
|
||||
|
|
|
@ -185,22 +185,27 @@ public class LoginActivity extends AppCompatActivity implements OnClickListener,
|
|||
}
|
||||
// generate Twitter login link
|
||||
else if (hostSelector.getSelectedItemId() == NetworkAdapter.ID_TWITTER) {
|
||||
int network = TWITTER_V1.equals(hostname) ? LoginAction.LOGIN_TWITTER_1 : LoginAction.LOGIN_TWITTER_2;
|
||||
// use user defined token keys
|
||||
if (key1 != null && key2 != null) {
|
||||
if (key1.trim().isEmpty() || key2.trim().isEmpty()) {
|
||||
Toast.makeText(getApplicationContext(), R.string.error_empty_token, LENGTH_SHORT).show();
|
||||
} else {
|
||||
Toast.makeText(getApplicationContext(), R.string.info_open_twitter_login, LENGTH_LONG).show();
|
||||
loginAsync = new LoginAction(this, LoginAction.LOGIN_TWITTER, LoginAction.MODE_REQUEST);
|
||||
loginAsync = new LoginAction(this, network, LoginAction.MODE_REQUEST);
|
||||
loginAsync.execute(key1, key2);
|
||||
}
|
||||
}
|
||||
// use system tokens
|
||||
else if (Tokens.USE_DEFAULT_KEYS) {
|
||||
Toast.makeText(getApplicationContext(), R.string.info_open_twitter_login, LENGTH_LONG).show();
|
||||
loginAsync = new LoginAction(this, LoginAction.LOGIN_TWITTER, LoginAction.MODE_REQUEST);
|
||||
loginAsync = new LoginAction(this, network, LoginAction.MODE_REQUEST);
|
||||
loginAsync.execute();
|
||||
}
|
||||
// no tokens are set, print error message
|
||||
else {
|
||||
Toast.makeText(getApplicationContext(), R.string.info_missing_api_keys, LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
// generate Mastodon login
|
||||
else if (hostSelector.getSelectedItemId() == NetworkAdapter.ID_MASTODON) {
|
||||
|
@ -235,21 +240,26 @@ public class LoginActivity extends AppCompatActivity implements OnClickListener,
|
|||
}
|
||||
// login to Twitter
|
||||
else if (hostSelector.getSelectedItemId() == NetworkAdapter.ID_TWITTER) {
|
||||
int network = TWITTER_V1.equals(hostname) ? LoginAction.LOGIN_TWITTER_1 : LoginAction.LOGIN_TWITTER_2;
|
||||
if (key1 != null && key2 != null) {
|
||||
if (key1.trim().isEmpty() || key2.trim().isEmpty()) {
|
||||
Toast.makeText(getApplicationContext(), R.string.error_empty_token, LENGTH_SHORT).show();
|
||||
} else {
|
||||
Toast.makeText(getApplicationContext(), R.string.info_login_to_twitter, LENGTH_LONG).show();
|
||||
loginAsync = new LoginAction(this, LoginAction.LOGIN_TWITTER, LoginAction.MODE_LOGIN);
|
||||
loginAsync = new LoginAction(this, network, LoginAction.MODE_LOGIN);
|
||||
loginAsync.execute(loginLink, code, key1, key2);
|
||||
}
|
||||
}
|
||||
// use system tokens
|
||||
else if (Tokens.USE_DEFAULT_KEYS) {
|
||||
Toast.makeText(getApplicationContext(), R.string.info_login_to_twitter, LENGTH_LONG).show();
|
||||
loginAsync = new LoginAction(this, LoginAction.LOGIN_TWITTER, LoginAction.MODE_LOGIN);
|
||||
loginAsync = new LoginAction(this, network, LoginAction.MODE_LOGIN);
|
||||
loginAsync.execute(loginLink, code);
|
||||
}
|
||||
// no tokens are set
|
||||
else {
|
||||
Toast.makeText(getApplicationContext(), R.string.info_missing_api_keys, LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
// login to mastodon
|
||||
else if (hostSelector.getSelectedItemId() == NetworkAdapter.ID_MASTODON) {
|
||||
|
|
|
@ -116,10 +116,15 @@ public class MainActivity extends AppCompatActivity implements OnTabSelectedList
|
|||
// initialize lists
|
||||
else if (adapter.isEmpty()) {
|
||||
adapter.setupForHomePage();
|
||||
if (settings.getLogin().getApiType() == Account.API_TWITTER) {
|
||||
AppStyles.setTabIcons(tabLayout, settings, R.array.home_twitter_icons);
|
||||
} else if (settings.getLogin().getApiType() == Account.API_MASTODON) {
|
||||
AppStyles.setTabIcons(tabLayout, settings, R.array.home_mastodon_icons);
|
||||
switch (settings.getLogin().getApiType()) {
|
||||
case Account.API_TWITTER_1:
|
||||
case Account.API_TWITTER_2:
|
||||
AppStyles.setTabIcons(tabLayout, settings, R.array.home_twitter_icons);
|
||||
break;
|
||||
|
||||
case Account.API_MASTODON:
|
||||
AppStyles.setTabIcons(tabLayout, settings, R.array.home_mastodon_icons);
|
||||
break;
|
||||
}
|
||||
// check if there is a Twitter link
|
||||
if (getIntent().getData() != null) {
|
||||
|
@ -176,10 +181,15 @@ public class MainActivity extends AppCompatActivity implements OnTabSelectedList
|
|||
break;
|
||||
}
|
||||
AppStyles.setTheme(root);
|
||||
if (settings.getLogin().getApiType() == Account.API_TWITTER) {
|
||||
AppStyles.setTabIcons(tabLayout, settings, R.array.home_twitter_icons);
|
||||
} else if (settings.getLogin().getApiType() == Account.API_MASTODON) {
|
||||
AppStyles.setTabIcons(tabLayout, settings, R.array.home_mastodon_icons);
|
||||
switch (settings.getLogin().getApiType()) {
|
||||
case Account.API_TWITTER_1:
|
||||
case Account.API_TWITTER_2:
|
||||
AppStyles.setTabIcons(tabLayout, settings, R.array.home_twitter_icons);
|
||||
break;
|
||||
|
||||
case Account.API_MASTODON:
|
||||
AppStyles.setTabIcons(tabLayout, settings, R.array.home_mastodon_icons);
|
||||
break;
|
||||
}
|
||||
AppStyles.setOverflowIcon(toolbar, settings.getIconColor());
|
||||
}
|
||||
|
|
|
@ -214,14 +214,13 @@ public class ProfileActivity extends AppCompatActivity implements OnClickListene
|
|||
Intent i = getIntent();
|
||||
Object o = i.getSerializableExtra(KEY_PROFILE_USER);
|
||||
Account login = settings.getLogin();
|
||||
boolean enableFavs = login.getApiType() == Account.API_TWITTER_1 || login.getApiType() == Account.API_TWITTER_2;
|
||||
if (o instanceof User) {
|
||||
user = (User) o;
|
||||
boolean enableFavs = login.getApiType() == Account.API_TWITTER || login.getId() == user.getId();
|
||||
adapter.setupProfilePage(user.getId(), enableFavs);
|
||||
adapter.setupProfilePage(user.getId(), enableFavs || login.getId() == user.getId());
|
||||
} else {
|
||||
long userId = i.getLongExtra(KEY_PROFILE_ID, 0);
|
||||
boolean enableFavs = login.getApiType() == Account.API_TWITTER || login.getId() == userId;
|
||||
adapter.setupProfilePage(userId, enableFavs);
|
||||
adapter.setupProfilePage(userId, enableFavs || login.getId() == userId);
|
||||
}
|
||||
if (settings.likeEnabled()) {
|
||||
tabIndicator = AppStyles.setTabIconsWithText(tabLayout, settings, R.array.profile_tab_icons_like);
|
||||
|
@ -321,7 +320,8 @@ public class ProfileActivity extends AppCompatActivity implements OnClickListene
|
|||
AppStyles.setMenuItemColor(followIcon, settings.getFollowPendingColor());
|
||||
followIcon.setTitle(R.string.menu_follow_requested);
|
||||
}
|
||||
if (user.isCurrentUser() || (!user.isProtected() && settings.getLogin().getApiType() == Account.API_TWITTER)) {
|
||||
if (user.isCurrentUser() || (!user.isProtected() && (settings.getLogin().getApiType() == Account.API_TWITTER_1
|
||||
|| settings.getLogin().getApiType() == Account.API_TWITTER_2))) {
|
||||
MenuItem listItem = m.findItem(R.id.profile_lists);
|
||||
listItem.setVisible(true);
|
||||
}
|
||||
|
@ -493,8 +493,9 @@ public class ProfileActivity extends AppCompatActivity implements OnClickListene
|
|||
// open following page
|
||||
if (v.getId() == R.id.following) {
|
||||
if (relation != null) {
|
||||
if ((settings.getLogin().getApiType() != Account.API_TWITTER || !user.isProtected())
|
||||
|| user.isCurrentUser() || relation.isFollowing()) {
|
||||
int apiType = settings.getLogin().getApiType();
|
||||
if (((apiType != Account.API_TWITTER_1 && settings.getLogin().getApiType() != Account.API_TWITTER_2)
|
||||
|| !user.isProtected()) || user.isCurrentUser() || relation.isFollowing()) {
|
||||
Intent usersIntent = new Intent(this, UsersActivity.class);
|
||||
usersIntent.putExtra(KEY_USERS_ID, user.getId());
|
||||
usersIntent.putExtra(KEY_USERS_MODE, USERS_FRIENDS);
|
||||
|
@ -505,8 +506,9 @@ public class ProfileActivity extends AppCompatActivity implements OnClickListene
|
|||
// open follower page
|
||||
else if (v.getId() == R.id.follower) {
|
||||
if (relation != null) {
|
||||
if ((settings.getLogin().getApiType() != Account.API_TWITTER || !user.isProtected())
|
||||
|| user.isCurrentUser() || relation.isFollowing()) {
|
||||
int apiType = settings.getLogin().getApiType();
|
||||
if (((apiType != Account.API_TWITTER_1 && settings.getLogin().getApiType() != Account.API_TWITTER_2)
|
||||
|| !user.isProtected()) || user.isCurrentUser() || relation.isFollowing()) {
|
||||
Intent usersIntent = new Intent(this, UsersActivity.class);
|
||||
usersIntent.putExtra(KEY_USERS_ID, user.getId());
|
||||
usersIntent.putExtra(KEY_USERS_MODE, USERS_FOLLOWER);
|
||||
|
|
|
@ -127,7 +127,7 @@ public class ProfileEditor extends MediaActivity implements OnClickListener, OnP
|
|||
constraints.connect(R.id.profile_edit_add_banner, ConstraintSet.TOP, R.id.profile_edit_banner, ConstraintSet.TOP);
|
||||
constraints.applyTo(root);
|
||||
}
|
||||
if (settings.getLogin().getApiType() != Account.API_TWITTER) {
|
||||
if (settings.getLogin().getApiType() != Account.API_TWITTER_1 || settings.getLogin().getApiType() != Account.API_TWITTER_2) {
|
||||
profileUrl.setVisibility(View.GONE);
|
||||
location.setVisibility(View.GONE);
|
||||
locationDescription.setVisibility(View.GONE);
|
||||
|
|
|
@ -105,7 +105,7 @@ public class SearchActivity extends AppCompatActivity implements OnTabSelectedLi
|
|||
MenuItem searchItem = m.findItem(R.id.new_search);
|
||||
MenuItem searchFilter = m.findItem(R.id.search_filter);
|
||||
SearchView searchView = (SearchView) searchItem.getActionView();
|
||||
if (settings.getLogin().getApiType() == Account.API_TWITTER) {
|
||||
if (settings.getLogin().getApiType() == Account.API_TWITTER_1 || settings.getLogin().getApiType() == Account.API_TWITTER_2) {
|
||||
searchFilter.setChecked(settings.filterResults());
|
||||
} else {
|
||||
searchFilter.setVisible(false);
|
||||
|
|
|
@ -184,7 +184,8 @@ public class SettingsActivity extends AppCompatActivity implements OnClickListen
|
|||
appInfo = new InfoDialog(this);
|
||||
license = new LicenseDialog(this);
|
||||
|
||||
if (settings.getLogin().getApiType() != Account.API_TWITTER) {
|
||||
if (settings.getLogin().getApiType() != Account.API_TWITTER_1
|
||||
&& settings.getLogin().getApiType() != Account.API_TWITTER_2) {
|
||||
enableTwitterAlt.setVisibility(GONE);
|
||||
EnableTwitterAltDescr.setVisibility(GONE);
|
||||
trend_card.setVisibility(GONE);
|
||||
|
@ -244,7 +245,8 @@ public class SettingsActivity extends AppCompatActivity implements OnClickListen
|
|||
@Override
|
||||
protected void onStart() {
|
||||
super.onStart();
|
||||
if (settings.getLogin().getApiType() == Account.API_TWITTER && locationAsync == null) {
|
||||
int apiType = settings.getLogin().getApiType();
|
||||
if ((apiType == Account.API_TWITTER_1 || apiType == Account.API_TWITTER_2) && locationAsync == null) {
|
||||
locationAsync = new LocationLoader(this);
|
||||
locationAsync.execute();
|
||||
}
|
||||
|
|
|
@ -88,10 +88,10 @@ public class ConnectionDialog extends Dialog implements OnCheckedChangeListener,
|
|||
}
|
||||
dismiss();
|
||||
} else if (!enableApi.isChecked()) {
|
||||
if (!Tokens.DISABLE_API_V2) {
|
||||
callback.onConnectionSet(null, null, OnConnectionSetCallback.TWITTER_V2);
|
||||
} else {
|
||||
if (Tokens.DISABLE_API_V2) {
|
||||
callback.onConnectionSet(null, null, OnConnectionSetCallback.TWITTER_V1);
|
||||
} else {
|
||||
callback.onConnectionSet(null, null, OnConnectionSetCallback.TWITTER_V2);
|
||||
}
|
||||
dismiss();
|
||||
} else {
|
||||
|
|
|
@ -267,4 +267,5 @@
|
|||
<string name="login_network_settings">Verbindungseinstellungen</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_api_keys">Bitte API-Schlüssel hinzufügen</string>
|
||||
</resources>
|
|
@ -18,6 +18,7 @@
|
|||
<string name="info_list_updated">Userlist updated</string>
|
||||
<string name="info_list_created">Userlist created</string>
|
||||
<string name="info_open_twitter_login">redirecting to Twitter login website. Please wait</string>
|
||||
<string name="info_missing_api_keys">please add API tokens first before proceeding</string>
|
||||
<string name="info_open_mastodon_login">redirecting to Mastodon login website. Please wait</string>
|
||||
<string name="info_login_to_twitter">login to Twitter, please wait</string>
|
||||
<string name="info_login_to_mastodon">login to Mastodon, please wait</string>
|
||||
|
|
Loading…
Reference in New Issue