multi account bug fix, updated strings

Signed-off-by: nuclearfog <hatespirit666@gmail.com>
This commit is contained in:
nuclearfog 2021-06-10 20:15:13 +02:00
parent 733051da63
commit fd839dc956
No known key found for this signature in database
GPG Key ID: AA0271FBE406DB98
4 changed files with 43 additions and 17 deletions

View File

@ -35,7 +35,9 @@ public class Registration extends AsyncTask<String, Void, String> {
public Registration(LoginActivity activity) {
super();
this.callback = new WeakReference<>(activity);
mTwitter = TwitterEngine.getInstance(activity);
// get empty instance
mTwitter = TwitterEngine.getInstance();
// init database and storage
accountDB = AccountDatabase.getInstance(activity);
settings = GlobalSettings.getInstance(activity);
}

View File

@ -65,8 +65,6 @@ public class TwitterEngine {
@Nullable
private RequestToken reqToken;
@Nullable
private AccessToken aToken;
private GlobalSettings settings;
private AccountDatabase accountDB;
private Twitter twitter;
@ -80,9 +78,10 @@ public class TwitterEngine {
/**
* Initialize Twitter4J instance
*/
private void initTwitter() {
private void initTwitter(AccessToken aToken) {
TLSSocketFactory.getSupportTLSifNeeded();
ConfigurationBuilder builder = new ConfigurationBuilder();
// set API keys
if (settings.isCustomApiSet()) {
builder.setOAuthConsumerKey(settings.getConsumerKey());
builder.setOAuthConsumerSecret(settings.getConsumerSecret());
@ -99,13 +98,15 @@ public class TwitterEngine {
builder.setHttpProxyPassword(settings.getProxyPass());
}
}
// init proxy connection
ProxySetup.setConnection(settings);
// init Twitter instance
TwitterFactory factory = new TwitterFactory(builder.build());
if (aToken != null) {
twitter = factory.getInstance(aToken);
} else {
twitter = factory.getInstance();
}
ProxySetup.setConnection(settings);
}
/**
@ -116,25 +117,41 @@ public class TwitterEngine {
*/
public static TwitterEngine getInstance(Context context) {
if (!mTwitter.isInitialized) {
mTwitter.isInitialized = true;
// initialize database and settings
mTwitter.settings = GlobalSettings.getInstance(context);
mTwitter.accountDB = AccountDatabase.getInstance(context);
// check if already logged in
if (mTwitter.settings.isLoggedIn()) {
// init login access
String[] keys = mTwitter.settings.getCurrentUserAccessToken();
mTwitter.aToken = new AccessToken(keys[0], keys[1]);
AccessToken token = new AccessToken(keys[0], keys[1]);
mTwitter.initTwitter(token);
} else {
// init empty session
mTwitter.initTwitter(null);
}
mTwitter.initTwitter();
mTwitter.isInitialized = true;
}
return mTwitter;
}
/**
* get singleton instance with empty session
*
* @return TwitterEngine Instance
*/
public static TwitterEngine getInstance() {
mTwitter.isInitialized = false;
// init empty session
mTwitter.initTwitter(null);
return mTwitter;
}
/**
* reset Twitter state
*/
public static void resetTwitter() {
mTwitter.isInitialized = false;
mTwitter.reqToken = null; // Destroy connections
mTwitter.aToken = null; //
}
/**
@ -145,8 +162,9 @@ public class TwitterEngine {
*/
public String request() throws EngineException {
try {
if (reqToken == null)
if (reqToken == null) {
reqToken = twitter.getOAuthRequestToken();
}
} catch (Exception err) {
throw new EngineException(err);
}
@ -154,22 +172,28 @@ public class TwitterEngine {
}
/**
* Get Access-Token, store and initialize Twitter
* Get account access keys, store them and initialize Twitter login
*
* @param twitterPin PIN for accessing account
* @param twitterPin PIN from the twitter login page, after successful login
* @throws EngineException if pin is false or request token is null
*/
public void initialize(String twitterPin) throws EngineException {
try {
// check if corresponding request key is valid
if (reqToken != null) {
// get login keys
AccessToken accessToken = twitter.getOAuthAccessToken(reqToken, twitterPin);
String key1 = accessToken.getToken();
String key2 = accessToken.getTokenSecret();
aToken = new AccessToken(key1, key2);
initTwitter();
// init twitter login
initTwitter(new AccessToken(key1, key2));
// save login to storage and database
settings.setConnection(key1, key2, twitter.getId());
accountDB.setLogin(twitter.getId(), key1, key2);
// request token is not needed anymore
reqToken = null;
} else {
// request token does not exist, open login page first
throw new EngineException(EngineException.InternalErrorType.TOKENNOTSET);
}
} catch (Exception err) {

View File

@ -165,7 +165,7 @@
<string name="info_list_unfollowed">Liste entfolgt</string>
<string name="info_unfollowed">entfolgt!</string>
<string name="descr_add_profile_image">Profilbild ändern</string>
<string name="settings_enable_hq_img">Hohe Qualität</string>
<string name="settings_enable_hq_img">Bilder in hoher Auflösung</string>
<string name="menu_app_info">Über</string>
<string name="info_user_added_to_list">Nutzer wurde zur Liste hinzugefügt!</string>
<string name="error_username_format">Nutzername falsch!</string>

View File

@ -79,7 +79,7 @@
<string name="enter_username">enter username</string>
<string name="profile_banner">Banner Image</string>
<string name="editprofile_add_banner">add banner</string>
<string name="settings_enable_hq_img">high quality</string>
<string name="settings_enable_hq_img">High resolution images</string>
<string name="settings_app_information">For app and licensing information visit:</string>
<string name="settings_enable_toolbar_overlap">overlap profile banner</string>
<string name="settings_look">Look</string>