database bug fix
Signed-off-by: nuclearfog <hatespirit666@gmail.com>
This commit is contained in:
parent
bf420d254e
commit
596dd812c1
|
@ -265,9 +265,7 @@ public class AppSettings extends AppCompatActivity implements OnClickListener, O
|
||||||
// reset twitter singleton
|
// reset twitter singleton
|
||||||
TwitterEngine.resetTwitter();
|
TwitterEngine.resetTwitter();
|
||||||
// remove account from database
|
// remove account from database
|
||||||
// todo remove database and entry asynchronously
|
|
||||||
AccountDatabase.getInstance(this).removeLogin(settings.getCurrentUserId());
|
AccountDatabase.getInstance(this).removeLogin(settings.getCurrentUserId());
|
||||||
DatabaseAdapter.deleteDatabase(getApplicationContext());
|
|
||||||
settings.logout();
|
settings.logout();
|
||||||
setResult(RETURN_APP_LOGOUT);
|
setResult(RETURN_APP_LOGOUT);
|
||||||
finish();
|
finish();
|
||||||
|
|
|
@ -90,14 +90,18 @@ public class AccountAdapter extends Adapter<LoginHolder> {
|
||||||
String date = StringTools.formatCreationTime(account.getLoginDate());
|
String date = StringTools.formatCreationTime(account.getLoginDate());
|
||||||
holder.date.setText(date);
|
holder.date.setText(date);
|
||||||
if (user != null) {
|
if (user != null) {
|
||||||
|
// set profile information
|
||||||
holder.username.setText(user.getUsername());
|
holder.username.setText(user.getUsername());
|
||||||
holder.screenname.setText(user.getScreenname());
|
holder.screenname.setText(user.getScreenname());
|
||||||
String pbLink = user.getImageLink();
|
// set profile image
|
||||||
if (!user.hasDefaultProfileImage()) {
|
if (settings.imagesEnabled()) {
|
||||||
pbLink += settings.getImageSuffix();
|
String pbLink = user.getImageLink();
|
||||||
|
if (!user.hasDefaultProfileImage()) {
|
||||||
|
pbLink += settings.getImageSuffix();
|
||||||
|
}
|
||||||
|
Picasso.get().load(pbLink).transform(new RoundedCornersTransformation(2, 0))
|
||||||
|
.error(R.drawable.no_image).into(holder.profile);
|
||||||
}
|
}
|
||||||
Picasso.get().load(pbLink).transform(new RoundedCornersTransformation(2, 0))
|
|
||||||
.error(R.drawable.no_image).into(holder.profile);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ import org.nuclearfog.twidda.backend.engine.TwitterEngine;
|
||||||
import org.nuclearfog.twidda.backend.model.Account;
|
import org.nuclearfog.twidda.backend.model.Account;
|
||||||
import org.nuclearfog.twidda.backend.model.User;
|
import org.nuclearfog.twidda.backend.model.User;
|
||||||
import org.nuclearfog.twidda.database.AccountDatabase;
|
import org.nuclearfog.twidda.database.AccountDatabase;
|
||||||
|
import org.nuclearfog.twidda.database.GlobalSettings;
|
||||||
import org.nuclearfog.twidda.fragment.AccountFragment;
|
import org.nuclearfog.twidda.fragment.AccountFragment;
|
||||||
|
|
||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
|
@ -19,7 +20,7 @@ import java.util.List;
|
||||||
*
|
*
|
||||||
* @author nuclearfog
|
* @author nuclearfog
|
||||||
*/
|
*/
|
||||||
public class LoginLoader extends AsyncTask<Account, Void, List<Account>> {
|
public class AccountLoader extends AsyncTask<Account, Void, List<Account>> {
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private EngineException err;
|
private EngineException err;
|
||||||
|
@ -27,14 +28,19 @@ public class LoginLoader extends AsyncTask<Account, Void, List<Account>> {
|
||||||
private TwitterEngine mTwitter;
|
private TwitterEngine mTwitter;
|
||||||
private WeakReference<AccountFragment> callback;
|
private WeakReference<AccountFragment> callback;
|
||||||
|
|
||||||
|
private boolean loggedIn;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public LoginLoader(AccountFragment fragment) {
|
public AccountLoader(AccountFragment fragment) {
|
||||||
super();
|
super();
|
||||||
callback = new WeakReference<>(fragment);
|
callback = new WeakReference<>(fragment);
|
||||||
database = AccountDatabase.getInstance(fragment.requireContext());
|
database = AccountDatabase.getInstance(fragment.requireContext());
|
||||||
mTwitter = TwitterEngine.getInstance(fragment.requireContext());
|
mTwitter = TwitterEngine.getInstance(fragment.requireContext());
|
||||||
|
|
||||||
|
GlobalSettings settings = GlobalSettings.getInstance(fragment.requireContext());
|
||||||
|
loggedIn = settings.isLoggedIn();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -54,10 +60,13 @@ public class LoginLoader extends AsyncTask<Account, Void, List<Account>> {
|
||||||
for (int i = 0; i < ids.length; i++) {
|
for (int i = 0; i < ids.length; i++) {
|
||||||
ids[i] = result.get(i).getId();
|
ids[i] = result.get(i).getId();
|
||||||
}
|
}
|
||||||
// get user information
|
// attach user information if logged in
|
||||||
List<User> users = mTwitter.getUsers(ids);
|
if (loggedIn) {
|
||||||
for (int i = 0; i < users.size(); i++) {
|
// get user information
|
||||||
result.get(i).attachUser(users.get(i));
|
List<User> users = mTwitter.getUsers(ids);
|
||||||
|
for (int i = 0; i < users.size(); i++) {
|
||||||
|
result.get(i).attachUser(users.get(i));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
|
@ -6,7 +6,7 @@ import android.database.Cursor;
|
||||||
import android.database.sqlite.SQLiteDatabase;
|
import android.database.sqlite.SQLiteDatabase;
|
||||||
|
|
||||||
import org.nuclearfog.twidda.backend.model.Account;
|
import org.nuclearfog.twidda.backend.model.Account;
|
||||||
import org.nuclearfog.twidda.database.DatabaseAdapter.LoginTable;
|
import org.nuclearfog.twidda.database.DatabaseAdapter.AccountTable;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -24,22 +24,22 @@ public class AccountDatabase {
|
||||||
* projection of the columns with fixed order
|
* projection of the columns with fixed order
|
||||||
*/
|
*/
|
||||||
private static final String[] PROJECTION = {
|
private static final String[] PROJECTION = {
|
||||||
LoginTable.ID,
|
AccountTable.ID,
|
||||||
LoginTable.KEY1,
|
AccountTable.KEY1,
|
||||||
LoginTable.KEY2,
|
AccountTable.KEY2,
|
||||||
LoginTable.DATE
|
AccountTable.DATE
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final String ACCOUNT_SELECTION = LoginTable.ID + "=?";
|
private static final String ACCOUNT_SELECTION = AccountTable.ID + "=?";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* default sort order of the entries
|
* default sort order of the entries
|
||||||
* sort by date of creation, starting with the latest entry
|
* sort by date of creation, starting with the latest entry
|
||||||
*/
|
*/
|
||||||
private static final String SORT_BY_CREATION = LoginTable.DATE + " DESC";
|
private static final String SORT_BY_CREATION = AccountTable.DATE + " DESC";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* singleton instance
|
* singleton instance
|
||||||
|
@ -74,14 +74,14 @@ public class AccountDatabase {
|
||||||
public void setLogin(long id, String key1, String key2) {
|
public void setLogin(long id, String key1, String key2) {
|
||||||
ContentValues values = new ContentValues(4);
|
ContentValues values = new ContentValues(4);
|
||||||
|
|
||||||
values.put(LoginTable.ID, id);
|
values.put(AccountTable.ID, id);
|
||||||
values.put(LoginTable.KEY1, key1);
|
values.put(AccountTable.KEY1, key1);
|
||||||
values.put(LoginTable.KEY2, key2);
|
values.put(AccountTable.KEY2, key2);
|
||||||
values.put(LoginTable.DATE, System.currentTimeMillis());
|
values.put(AccountTable.DATE, System.currentTimeMillis());
|
||||||
|
|
||||||
SQLiteDatabase db = dataHelper.getDatabase();
|
SQLiteDatabase db = dataHelper.getDatabase();
|
||||||
db.beginTransaction();
|
db.beginTransaction();
|
||||||
db.insertWithOnConflict(LoginTable.NAME, "", values, CONFLICT_REPLACE);
|
db.insertWithOnConflict(AccountTable.NAME, "", values, CONFLICT_REPLACE);
|
||||||
db.setTransactionSuccessful();
|
db.setTransactionSuccessful();
|
||||||
db.endTransaction();
|
db.endTransaction();
|
||||||
}
|
}
|
||||||
|
@ -95,7 +95,7 @@ public class AccountDatabase {
|
||||||
ArrayList<Account> result = new ArrayList<>();
|
ArrayList<Account> result = new ArrayList<>();
|
||||||
|
|
||||||
SQLiteDatabase db = dataHelper.getDatabase();
|
SQLiteDatabase db = dataHelper.getDatabase();
|
||||||
Cursor cursor = db.query(LoginTable.NAME, PROJECTION, null, null, null, null, SORT_BY_CREATION);
|
Cursor cursor = db.query(AccountTable.NAME, PROJECTION, null, null, null, null, SORT_BY_CREATION);
|
||||||
if (cursor.moveToFirst()) {
|
if (cursor.moveToFirst()) {
|
||||||
result.ensureCapacity(cursor.getCount());
|
result.ensureCapacity(cursor.getCount());
|
||||||
do {
|
do {
|
||||||
|
@ -120,7 +120,7 @@ public class AccountDatabase {
|
||||||
String[] args = {Long.toString(id)};
|
String[] args = {Long.toString(id)};
|
||||||
|
|
||||||
SQLiteDatabase db = dataHelper.getDatabase();
|
SQLiteDatabase db = dataHelper.getDatabase();
|
||||||
db.delete(LoginTable.NAME, ACCOUNT_SELECTION, args);
|
db.delete(AccountTable.NAME, ACCOUNT_SELECTION, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -132,7 +132,7 @@ public class AccountDatabase {
|
||||||
public boolean exists(long id) {
|
public boolean exists(long id) {
|
||||||
String[] args = {Long.toString(id)};
|
String[] args = {Long.toString(id)};
|
||||||
SQLiteDatabase db = dataHelper.getDatabase();
|
SQLiteDatabase db = dataHelper.getDatabase();
|
||||||
Cursor cursor = db.query(LoginTable.NAME, null, ACCOUNT_SELECTION, args, null, null, null, "1");
|
Cursor cursor = db.query(AccountTable.NAME, null, ACCOUNT_SELECTION, args, null, null, null, "1");
|
||||||
boolean found = cursor.moveToFirst();
|
boolean found = cursor.moveToFirst();
|
||||||
cursor.close();
|
cursor.close();
|
||||||
return found;
|
return found;
|
||||||
|
|
|
@ -82,6 +82,7 @@ public class AppDatabase {
|
||||||
static final String HOME_QUERY = "SELECT * FROM " + TWEET_TABLE
|
static final String HOME_QUERY = "SELECT * FROM " + TWEET_TABLE
|
||||||
+ " WHERE " + TweetRegisterTable.NAME + "." + TweetRegisterTable.REGISTER + "&" + HOM_MASK + " IS NOT 0"
|
+ " WHERE " + TweetRegisterTable.NAME + "." + TweetRegisterTable.REGISTER + "&" + HOM_MASK + " IS NOT 0"
|
||||||
+ " AND " + TweetRegisterTable.NAME + "." + TweetRegisterTable.OWNER + "=?"
|
+ " AND " + TweetRegisterTable.NAME + "." + TweetRegisterTable.OWNER + "=?"
|
||||||
|
+ " AND " + UserRegisterTable.NAME + "." + UserRegisterTable.OWNER + "=?"
|
||||||
+ " ORDER BY " + TweetTable.ID
|
+ " ORDER BY " + TweetTable.ID
|
||||||
+ " DESC LIMIT ?";
|
+ " DESC LIMIT ?";
|
||||||
|
|
||||||
|
@ -92,6 +93,7 @@ public class AppDatabase {
|
||||||
+ " WHERE " + TweetRegisterTable.NAME + "." + TweetRegisterTable.REGISTER + "&" + MEN_MASK + " IS NOT 0"
|
+ " WHERE " + TweetRegisterTable.NAME + "." + TweetRegisterTable.REGISTER + "&" + MEN_MASK + " IS NOT 0"
|
||||||
+ " AND " + UserRegisterTable.NAME + "." + UserRegisterTable.REGISTER + "&" + EXCL_USR + " IS 0"
|
+ " AND " + UserRegisterTable.NAME + "." + UserRegisterTable.REGISTER + "&" + EXCL_USR + " IS 0"
|
||||||
+ " AND " + TweetRegisterTable.NAME + "." + TweetRegisterTable.OWNER + "=?"
|
+ " AND " + TweetRegisterTable.NAME + "." + TweetRegisterTable.OWNER + "=?"
|
||||||
|
+ " AND " + UserRegisterTable.NAME + "." + UserRegisterTable.OWNER + "=?"
|
||||||
+ " ORDER BY " + TweetTable.ID
|
+ " ORDER BY " + TweetTable.ID
|
||||||
+ " DESC LIMIT ?";
|
+ " DESC LIMIT ?";
|
||||||
|
|
||||||
|
@ -101,6 +103,7 @@ public class AppDatabase {
|
||||||
static final String USERTWEET_QUERY = "SELECT * FROM " + TWEET_TABLE
|
static final String USERTWEET_QUERY = "SELECT * FROM " + TWEET_TABLE
|
||||||
+ " WHERE " + TweetRegisterTable.NAME + "." + TweetRegisterTable.REGISTER + "&" + UTW_MASK + " IS NOT 0"
|
+ " WHERE " + TweetRegisterTable.NAME + "." + TweetRegisterTable.REGISTER + "&" + UTW_MASK + " IS NOT 0"
|
||||||
+ " AND " + TweetRegisterTable.NAME + "." + TweetRegisterTable.OWNER + "=?"
|
+ " AND " + TweetRegisterTable.NAME + "." + TweetRegisterTable.OWNER + "=?"
|
||||||
|
+ " AND " + UserRegisterTable.NAME + "." + UserRegisterTable.OWNER + "=?"
|
||||||
+ " AND " + TweetTable.NAME + "." + TweetTable.USER + "=?"
|
+ " AND " + TweetTable.NAME + "." + TweetTable.USER + "=?"
|
||||||
+ " ORDER BY " + TweetTable.ID
|
+ " ORDER BY " + TweetTable.ID
|
||||||
+ " DESC LIMIT ?";
|
+ " DESC LIMIT ?";
|
||||||
|
@ -113,6 +116,7 @@ public class AppDatabase {
|
||||||
+ " ON " + TweetTable.NAME + "." + TweetTable.ID + "=" + FavoriteTable.NAME + "." + FavoriteTable.TWEETID
|
+ " ON " + TweetTable.NAME + "." + TweetTable.ID + "=" + FavoriteTable.NAME + "." + FavoriteTable.TWEETID
|
||||||
+ " WHERE " + FavoriteTable.NAME + "." + FavoriteTable.FAVORITEDBY + "=?"
|
+ " WHERE " + FavoriteTable.NAME + "." + FavoriteTable.FAVORITEDBY + "=?"
|
||||||
+ " AND " + TweetRegisterTable.NAME + "." + TweetRegisterTable.OWNER + "=?"
|
+ " AND " + TweetRegisterTable.NAME + "." + TweetRegisterTable.OWNER + "=?"
|
||||||
|
+ " AND " + UserRegisterTable.NAME + "." + UserRegisterTable.OWNER + "=?"
|
||||||
+ " ORDER BY " + TweetTable.ID
|
+ " ORDER BY " + TweetTable.ID
|
||||||
+ " DESC LIMIT ?";
|
+ " DESC LIMIT ?";
|
||||||
|
|
||||||
|
@ -120,7 +124,10 @@ public class AppDatabase {
|
||||||
* SQL query to get a single tweet specified by an ID
|
* SQL query to get a single tweet specified by an ID
|
||||||
*/
|
*/
|
||||||
static final String SINGLE_TWEET_QUERY = "SELECT * FROM " + TWEET_TABLE
|
static final String SINGLE_TWEET_QUERY = "SELECT * FROM " + TWEET_TABLE
|
||||||
+ " WHERE " + TweetTable.NAME + "." + TweetTable.ID + "=? LIMIT 1";
|
+ " WHERE " + TweetTable.NAME + "." + TweetTable.ID + "=?"
|
||||||
|
+ " AND " + TweetRegisterTable.NAME + "." + TweetRegisterTable.OWNER + "=?"
|
||||||
|
+ " AND " + UserRegisterTable.NAME + "." + UserRegisterTable.OWNER + "=?"
|
||||||
|
+ " LIMIT 1";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SQL query to get replies of a tweet specified by a reply ID
|
* SQL query to get replies of a tweet specified by a reply ID
|
||||||
|
@ -128,6 +135,7 @@ public class AppDatabase {
|
||||||
static final String ANSWER_QUERY = "SELECT * FROM " + TWEET_TABLE
|
static final String ANSWER_QUERY = "SELECT * FROM " + TWEET_TABLE
|
||||||
+ " WHERE " + TweetTable.NAME + "." + TweetTable.REPLYTWEET + "=?"
|
+ " WHERE " + TweetTable.NAME + "." + TweetTable.REPLYTWEET + "=?"
|
||||||
+ " AND " + TweetRegisterTable.NAME + "." + TweetRegisterTable.OWNER + "=?"
|
+ " AND " + TweetRegisterTable.NAME + "." + TweetRegisterTable.OWNER + "=?"
|
||||||
|
+ " AND " + UserRegisterTable.NAME + "." + UserRegisterTable.OWNER + "=?"
|
||||||
+ " AND " + TweetRegisterTable.NAME + "." + TweetRegisterTable.REGISTER + "&" + RPL_MASK + " IS NOT 0"
|
+ " AND " + TweetRegisterTable.NAME + "." + TweetRegisterTable.REGISTER + "&" + RPL_MASK + " IS NOT 0"
|
||||||
+ " AND " + UserRegisterTable.NAME + "." + UserRegisterTable.REGISTER + "&" + EXCL_USR + " IS 0"
|
+ " AND " + UserRegisterTable.NAME + "." + UserRegisterTable.REGISTER + "&" + EXCL_USR + " IS 0"
|
||||||
+ " ORDER BY " + TweetTable.ID + " DESC LIMIT ?";
|
+ " ORDER BY " + TweetTable.ID + " DESC LIMIT ?";
|
||||||
|
@ -351,7 +359,8 @@ public class AppDatabase {
|
||||||
* @return tweet list
|
* @return tweet list
|
||||||
*/
|
*/
|
||||||
public List<Tweet> getHomeTimeline() {
|
public List<Tweet> getHomeTimeline() {
|
||||||
String[] args = {Long.toString(homeId), Integer.toString(limit)};
|
String homeStr = Long.toString(homeId);
|
||||||
|
String[] args = {homeStr, homeStr, Integer.toString(limit)};
|
||||||
|
|
||||||
SQLiteDatabase db = getDbRead();
|
SQLiteDatabase db = getDbRead();
|
||||||
List<Tweet> tweetList = new LinkedList<>();
|
List<Tweet> tweetList = new LinkedList<>();
|
||||||
|
@ -372,9 +381,8 @@ public class AppDatabase {
|
||||||
* @return tweet list
|
* @return tweet list
|
||||||
*/
|
*/
|
||||||
public List<Tweet> getMentions() {
|
public List<Tweet> getMentions() {
|
||||||
String[] args = {
|
String homeStr = Long.toString(homeId);
|
||||||
Long.toString(homeId), Integer.toString(limit)
|
String[] args = {homeStr, homeStr, Integer.toString(limit)};
|
||||||
};
|
|
||||||
|
|
||||||
SQLiteDatabase db = getDbRead();
|
SQLiteDatabase db = getDbRead();
|
||||||
List<Tweet> tweetList = new LinkedList<>();
|
List<Tweet> tweetList = new LinkedList<>();
|
||||||
|
@ -396,10 +404,8 @@ public class AppDatabase {
|
||||||
* @return Tweet list of user tweets
|
* @return Tweet list of user tweets
|
||||||
*/
|
*/
|
||||||
public List<Tweet> getUserTweets(long userID) {
|
public List<Tweet> getUserTweets(long userID) {
|
||||||
String[] args = {
|
String homeStr = Long.toString(homeId);
|
||||||
Long.toString(homeId), Long.toString(userID),
|
String[] args = {homeStr, homeStr, Long.toString(userID), Integer.toString(limit)};
|
||||||
Integer.toString(limit)
|
|
||||||
};
|
|
||||||
|
|
||||||
SQLiteDatabase db = getDbRead();
|
SQLiteDatabase db = getDbRead();
|
||||||
List<Tweet> tweetList = new LinkedList<>();
|
List<Tweet> tweetList = new LinkedList<>();
|
||||||
|
@ -421,10 +427,8 @@ public class AppDatabase {
|
||||||
* @return favored tweets by user
|
* @return favored tweets by user
|
||||||
*/
|
*/
|
||||||
public List<Tweet> getUserFavorites(long ownerID) {
|
public List<Tweet> getUserFavorites(long ownerID) {
|
||||||
String[] args = {
|
String homeStr = Long.toString(homeId);
|
||||||
Long.toString(ownerID), Long.toString(homeId),
|
String[] args = {Long.toString(ownerID), homeStr, homeStr, Integer.toString(limit)};
|
||||||
Integer.toString(limit)
|
|
||||||
};
|
|
||||||
|
|
||||||
SQLiteDatabase db = getDbRead();
|
SQLiteDatabase db = getDbRead();
|
||||||
List<Tweet> tweetList = new LinkedList<>();
|
List<Tweet> tweetList = new LinkedList<>();
|
||||||
|
@ -459,7 +463,8 @@ public class AppDatabase {
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public Tweet getStatus(long tweetId) {
|
public Tweet getStatus(long tweetId) {
|
||||||
String[] args = {Long.toString(tweetId)};
|
String homeStr = Long.toString(homeId);
|
||||||
|
String[] args = {Long.toString(tweetId), homeStr, homeStr};
|
||||||
|
|
||||||
SQLiteDatabase db = getDbRead();
|
SQLiteDatabase db = getDbRead();
|
||||||
Tweet result = null;
|
Tweet result = null;
|
||||||
|
@ -477,10 +482,8 @@ public class AppDatabase {
|
||||||
* @return list of tweet answers
|
* @return list of tweet answers
|
||||||
*/
|
*/
|
||||||
public List<Tweet> getAnswers(long tweetId) {
|
public List<Tweet> getAnswers(long tweetId) {
|
||||||
String[] args = {
|
String homeStr = Long.toString(homeId);
|
||||||
Long.toString(tweetId), Long.toString(homeId),
|
String[] args = {Long.toString(tweetId), homeStr, homeStr, Integer.toString(limit)};
|
||||||
Integer.toString(limit)
|
|
||||||
};
|
|
||||||
|
|
||||||
SQLiteDatabase db = getDbRead();
|
SQLiteDatabase db = getDbRead();
|
||||||
List<Tweet> tweetList = new LinkedList<>();
|
List<Tweet> tweetList = new LinkedList<>();
|
||||||
|
@ -529,18 +532,17 @@ public class AppDatabase {
|
||||||
*/
|
*/
|
||||||
public void removeFavorite(Tweet tweet) {
|
public void removeFavorite(Tweet tweet) {
|
||||||
long tweetId = tweet.getId();
|
long tweetId = tweet.getId();
|
||||||
if (tweet.getEmbeddedTweet() != null)
|
|
||||||
tweetId = tweet.getEmbeddedTweet().getId();
|
|
||||||
String[] delArgs = {Long.toString(tweetId), Long.toString(homeId)};
|
String[] delArgs = {Long.toString(tweetId), Long.toString(homeId)};
|
||||||
String[] updateArgs = {Long.toString(tweetId), Long.toString(homeId)};
|
|
||||||
|
|
||||||
|
if (tweet.getEmbeddedTweet() != null) {
|
||||||
|
tweetId = tweet.getEmbeddedTweet().getId();
|
||||||
|
}
|
||||||
SQLiteDatabase db = getDbWrite();
|
SQLiteDatabase db = getDbWrite();
|
||||||
// get tweet register
|
// get tweet register
|
||||||
ContentValues status = new ContentValues(1);
|
int register = getTweetRegister(db, tweetId);
|
||||||
int flags = getTweetFlags(db, tweetId) & ~FAV_MASK; // unset favorite flag
|
register &= ~FAV_MASK; // unset favorite flag
|
||||||
status.put(TweetRegisterTable.REGISTER, flags);
|
|
||||||
// update database
|
// update database
|
||||||
db.update(TweetRegisterTable.NAME, status, TWEET_REG_SELECT, updateArgs);
|
setTweetRegister(db, tweetId, register);
|
||||||
db.delete(FavoriteTable.NAME, FAVORITE_SELECT, delArgs);
|
db.delete(FavoriteTable.NAME, FAVORITE_SELECT, delArgs);
|
||||||
commit(db);
|
commit(db);
|
||||||
}
|
}
|
||||||
|
@ -644,18 +646,14 @@ public class AppDatabase {
|
||||||
* @param mute true remove user tweets from mention results
|
* @param mute true remove user tweets from mention results
|
||||||
*/
|
*/
|
||||||
public void muteUser(long id, boolean mute) {
|
public void muteUser(long id, boolean mute) {
|
||||||
String[] args = {Long.toString(id), Long.toString(homeId)};
|
|
||||||
|
|
||||||
SQLiteDatabase db = getDbWrite();
|
SQLiteDatabase db = getDbWrite();
|
||||||
int flags = getUserFlags(db, id);
|
int register = getUserFlags(db, id);
|
||||||
if (mute) {
|
if (mute) {
|
||||||
flags |= EXCL_USR;
|
register |= EXCL_USR;
|
||||||
} else {
|
} else {
|
||||||
flags &= ~EXCL_USR;
|
register &= ~EXCL_USR;
|
||||||
}
|
}
|
||||||
ContentValues registerColumn = new ContentValues(1);
|
setUserFlags(db, id, register);
|
||||||
registerColumn.put(UserRegisterTable.REGISTER, flags);
|
|
||||||
db.update(UserRegisterTable.NAME, registerColumn, USER_REG_SELECT, args);
|
|
||||||
commit(db);
|
commit(db);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -759,26 +757,25 @@ public class AppDatabase {
|
||||||
* @param mode SQLITE mode {@link SQLiteDatabase#CONFLICT_IGNORE} or {@link SQLiteDatabase#CONFLICT_REPLACE}
|
* @param mode SQLITE mode {@link SQLiteDatabase#CONFLICT_IGNORE} or {@link SQLiteDatabase#CONFLICT_REPLACE}
|
||||||
*/
|
*/
|
||||||
private void storeUser(User user, SQLiteDatabase db, int mode) {
|
private void storeUser(User user, SQLiteDatabase db, int mode) {
|
||||||
ContentValues userRegister = new ContentValues(3);
|
int register = getUserFlags(db, user.getId());
|
||||||
ContentValues userColumn = new ContentValues(13);
|
|
||||||
int flags = getUserFlags(db, user.getId());
|
|
||||||
if (user.isVerified())
|
if (user.isVerified())
|
||||||
flags |= VER_MASK;
|
register |= VER_MASK;
|
||||||
else
|
else
|
||||||
flags &= ~VER_MASK;
|
register &= ~VER_MASK;
|
||||||
if (user.isLocked())
|
if (user.isLocked())
|
||||||
flags |= LCK_MASK;
|
register |= LCK_MASK;
|
||||||
else
|
else
|
||||||
flags &= ~LCK_MASK;
|
register &= ~LCK_MASK;
|
||||||
if (user.followRequested())
|
if (user.followRequested())
|
||||||
flags |= FRQ_MASK;
|
register |= FRQ_MASK;
|
||||||
else
|
else
|
||||||
flags &= ~FRQ_MASK;
|
register &= ~FRQ_MASK;
|
||||||
if (user.hasDefaultProfileImage())
|
if (user.hasDefaultProfileImage())
|
||||||
flags |= DEF_IMG;
|
register |= DEF_IMG;
|
||||||
else
|
else
|
||||||
flags &= ~DEF_IMG;
|
register &= ~DEF_IMG;
|
||||||
|
|
||||||
|
ContentValues userColumn = new ContentValues(13);
|
||||||
userColumn.put(UserTable.ID, user.getId());
|
userColumn.put(UserTable.ID, user.getId());
|
||||||
userColumn.put(UserTable.USERNAME, user.getUsername());
|
userColumn.put(UserTable.USERNAME, user.getUsername());
|
||||||
userColumn.put(UserTable.SCREENNAME, user.getScreenname());
|
userColumn.put(UserTable.SCREENNAME, user.getScreenname());
|
||||||
|
@ -793,12 +790,8 @@ public class AppDatabase {
|
||||||
userColumn.put(UserTable.TWEETS, user.getTweetCount());
|
userColumn.put(UserTable.TWEETS, user.getTweetCount());
|
||||||
userColumn.put(UserTable.FAVORS, user.getFavorCount());
|
userColumn.put(UserTable.FAVORS, user.getFavorCount());
|
||||||
|
|
||||||
userRegister.put(UserRegisterTable.ID, user.getId());
|
|
||||||
userRegister.put(UserRegisterTable.OWNER, homeId);
|
|
||||||
userRegister.put(UserRegisterTable.REGISTER, flags);
|
|
||||||
|
|
||||||
db.insertWithOnConflict(UserRegisterTable.NAME, null, userRegister, mode);
|
|
||||||
db.insertWithOnConflict(UserTable.NAME, null, userColumn, mode);
|
db.insertWithOnConflict(UserTable.NAME, null, userColumn, mode);
|
||||||
|
setUserFlags(db, user.getId(), register);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -810,8 +803,6 @@ public class AppDatabase {
|
||||||
* @param db SQLite database
|
* @param db SQLite database
|
||||||
*/
|
*/
|
||||||
private void storeStatus(Tweet tweet, int statusRegister, SQLiteDatabase db) {
|
private void storeStatus(Tweet tweet, int statusRegister, SQLiteDatabase db) {
|
||||||
ContentValues register = new ContentValues(3);
|
|
||||||
ContentValues status = new ContentValues(16);
|
|
||||||
User user = tweet.getUser();
|
User user = tweet.getUser();
|
||||||
Tweet rtStat = tweet.getEmbeddedTweet();
|
Tweet rtStat = tweet.getEmbeddedTweet();
|
||||||
long rtId = -1L;
|
long rtId = -1L;
|
||||||
|
@ -819,7 +810,7 @@ public class AppDatabase {
|
||||||
storeStatus(rtStat, 0, db);
|
storeStatus(rtStat, 0, db);
|
||||||
rtId = rtStat.getId();
|
rtId = rtStat.getId();
|
||||||
}
|
}
|
||||||
statusRegister |= getTweetFlags(db, tweet.getId());
|
statusRegister |= getTweetRegister(db, tweet.getId());
|
||||||
if (tweet.favored()) {
|
if (tweet.favored()) {
|
||||||
statusRegister |= FAV_MASK;
|
statusRegister |= FAV_MASK;
|
||||||
} else {
|
} else {
|
||||||
|
@ -842,6 +833,7 @@ public class AppDatabase {
|
||||||
} else if (tweet.getMediaType() == GIF) {
|
} else if (tweet.getMediaType() == GIF) {
|
||||||
statusRegister |= MEDIA_ANGIF_MASK;
|
statusRegister |= MEDIA_ANGIF_MASK;
|
||||||
}
|
}
|
||||||
|
ContentValues status = new ContentValues(16);
|
||||||
status.put(TweetTable.MEDIA, getMediaLinks(tweet));
|
status.put(TweetTable.MEDIA, getMediaLinks(tweet));
|
||||||
status.put(TweetTable.ID, tweet.getId());
|
status.put(TweetTable.ID, tweet.getId());
|
||||||
status.put(TweetTable.USER, user.getId());
|
status.put(TweetTable.USER, user.getId());
|
||||||
|
@ -859,13 +851,10 @@ public class AppDatabase {
|
||||||
status.put(TweetTable.REPLYUSER, tweet.getReplyUserId());
|
status.put(TweetTable.REPLYUSER, tweet.getReplyUserId());
|
||||||
status.put(TweetTable.REPLYNAME, tweet.getReplyName());
|
status.put(TweetTable.REPLYNAME, tweet.getReplyName());
|
||||||
|
|
||||||
register.put(TweetRegisterTable.ID, tweet.getId());
|
db.insertWithOnConflict(TweetTable.NAME, null, status, CONFLICT_REPLACE);
|
||||||
register.put(TweetRegisterTable.OWNER, homeId);
|
|
||||||
register.put(TweetRegisterTable.REGISTER, statusRegister);
|
|
||||||
|
|
||||||
storeUser(user, db, CONFLICT_IGNORE);
|
storeUser(user, db, CONFLICT_IGNORE);
|
||||||
db.insertWithOnConflict(TweetTable.NAME, null, status, CONFLICT_REPLACE);
|
setTweetRegister(db, tweet.getId(), statusRegister);
|
||||||
db.insertWithOnConflict(TweetRegisterTable.NAME, null, register, CONFLICT_REPLACE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -876,13 +865,10 @@ public class AppDatabase {
|
||||||
*/
|
*/
|
||||||
private void updateStatus(Tweet tweet, SQLiteDatabase db) {
|
private void updateStatus(Tweet tweet, SQLiteDatabase db) {
|
||||||
String[] tweetIdArg = {Long.toString(tweet.getId())};
|
String[] tweetIdArg = {Long.toString(tweet.getId())};
|
||||||
String[] tweetRegArg = {Long.toString(tweet.getId()), Long.toString(homeId)};
|
|
||||||
String[] userIdArg = {Long.toString(tweet.getUser().getId())};
|
String[] userIdArg = {Long.toString(tweet.getUser().getId())};
|
||||||
|
|
||||||
ContentValues tweetColumn = new ContentValues(6);
|
User user = tweet.getUser();
|
||||||
ContentValues tweetRegColumn = new ContentValues(3);
|
int register = getTweetRegister(db, tweet.getId());
|
||||||
ContentValues userColumn = new ContentValues(9);
|
|
||||||
int register = getTweetFlags(db, tweet.getId());
|
|
||||||
if (tweet.retweeted())
|
if (tweet.retweeted())
|
||||||
register |= RTW_MASK;
|
register |= RTW_MASK;
|
||||||
else
|
else
|
||||||
|
@ -891,6 +877,8 @@ public class AppDatabase {
|
||||||
register |= FAV_MASK;
|
register |= FAV_MASK;
|
||||||
else
|
else
|
||||||
register &= ~FAV_MASK;
|
register &= ~FAV_MASK;
|
||||||
|
|
||||||
|
ContentValues tweetColumn = new ContentValues(6);
|
||||||
tweetColumn.put(TweetTable.TWEET, tweet.getTweet());
|
tweetColumn.put(TweetTable.TWEET, tweet.getTweet());
|
||||||
tweetColumn.put(TweetTable.RETWEET, tweet.getRetweetCount());
|
tweetColumn.put(TweetTable.RETWEET, tweet.getRetweetCount());
|
||||||
tweetColumn.put(TweetTable.FAVORITE, tweet.getFavoriteCount());
|
tweetColumn.put(TweetTable.FAVORITE, tweet.getFavoriteCount());
|
||||||
|
@ -898,11 +886,7 @@ public class AppDatabase {
|
||||||
tweetColumn.put(TweetTable.REPLYNAME, tweet.getReplyName());
|
tweetColumn.put(TweetTable.REPLYNAME, tweet.getReplyName());
|
||||||
tweetColumn.put(TweetTable.MEDIA, getMediaLinks(tweet));
|
tweetColumn.put(TweetTable.MEDIA, getMediaLinks(tweet));
|
||||||
|
|
||||||
tweetRegColumn.put(TweetRegisterTable.ID, tweet.getId());
|
ContentValues userColumn = new ContentValues(9);
|
||||||
tweetRegColumn.put(TweetRegisterTable.OWNER, homeId);
|
|
||||||
tweetRegColumn.put(TweetRegisterTable.REGISTER, register);
|
|
||||||
|
|
||||||
User user = tweet.getUser();
|
|
||||||
userColumn.put(UserTable.USERNAME, user.getUsername());
|
userColumn.put(UserTable.USERNAME, user.getUsername());
|
||||||
userColumn.put(UserTable.SCREENNAME, user.getScreenname());
|
userColumn.put(UserTable.SCREENNAME, user.getScreenname());
|
||||||
userColumn.put(UserTable.IMAGE, user.getImageLink());
|
userColumn.put(UserTable.IMAGE, user.getImageLink());
|
||||||
|
@ -914,8 +898,8 @@ public class AppDatabase {
|
||||||
userColumn.put(UserTable.FOLLOWER, user.getFollower());
|
userColumn.put(UserTable.FOLLOWER, user.getFollower());
|
||||||
|
|
||||||
db.update(TweetTable.NAME, tweetColumn, TWEET_SELECT, tweetIdArg);
|
db.update(TweetTable.NAME, tweetColumn, TWEET_SELECT, tweetIdArg);
|
||||||
db.update(TweetRegisterTable.NAME, tweetRegColumn, TWEET_REG_SELECT, tweetRegArg);
|
|
||||||
db.update(UserTable.NAME, userColumn, USER_SELECT, userIdArg);
|
db.update(UserTable.NAME, userColumn, USER_SELECT, userIdArg);
|
||||||
|
setTweetRegister(db, tweet.getId(), register);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -950,8 +934,8 @@ public class AppDatabase {
|
||||||
* @param db database instance
|
* @param db database instance
|
||||||
*/
|
*/
|
||||||
private void storeMessage(Message message, SQLiteDatabase db) {
|
private void storeMessage(Message message, SQLiteDatabase db) {
|
||||||
ContentValues messageColumn = new ContentValues(5);
|
|
||||||
// store message information
|
// store message information
|
||||||
|
ContentValues messageColumn = new ContentValues(5);
|
||||||
messageColumn.put(MessageTable.ID, message.getId());
|
messageColumn.put(MessageTable.ID, message.getId());
|
||||||
messageColumn.put(MessageTable.SINCE, message.getTime());
|
messageColumn.put(MessageTable.SINCE, message.getTime());
|
||||||
messageColumn.put(MessageTable.SENDER, message.getSender().getId());
|
messageColumn.put(MessageTable.SENDER, message.getSender().getId());
|
||||||
|
@ -968,9 +952,9 @@ public class AppDatabase {
|
||||||
*
|
*
|
||||||
* @param db database instance
|
* @param db database instance
|
||||||
* @param tweetID ID of the tweet
|
* @param tweetID ID of the tweet
|
||||||
* @return tweet flags
|
* @return tweet register
|
||||||
*/
|
*/
|
||||||
private int getTweetFlags(SQLiteDatabase db, long tweetID) {
|
private int getTweetRegister(SQLiteDatabase db, long tweetID) {
|
||||||
String[] columns = {TweetRegisterTable.REGISTER};
|
String[] columns = {TweetRegisterTable.REGISTER};
|
||||||
String[] args = {Long.toString(tweetID), Long.toString(homeId)};
|
String[] args = {Long.toString(tweetID), Long.toString(homeId)};
|
||||||
|
|
||||||
|
@ -983,7 +967,28 @@ public class AppDatabase {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get flags of a twitter user or zero if user was not found
|
* set status register of a tweet. if an entry exists, update it
|
||||||
|
*
|
||||||
|
* @param db database instance
|
||||||
|
* @param id Tweet ID
|
||||||
|
* @param register tweet register
|
||||||
|
*/
|
||||||
|
public void setTweetRegister(SQLiteDatabase db, long id, int register) {
|
||||||
|
String[] args = {Long.toString(id), Long.toString(homeId)};
|
||||||
|
|
||||||
|
ContentValues values = new ContentValues(3);
|
||||||
|
values.put(TweetRegisterTable.ID, id);
|
||||||
|
values.put(TweetRegisterTable.OWNER, homeId);
|
||||||
|
values.put(TweetRegisterTable.REGISTER, register);
|
||||||
|
|
||||||
|
int cnt = db.update(TweetRegisterTable.NAME, values, TWEET_REG_SELECT, args);
|
||||||
|
if (cnt == 0) {
|
||||||
|
db.insert(TweetRegisterTable.NAME, null, values);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get user register or zero if not found
|
||||||
*
|
*
|
||||||
* @param db database instance
|
* @param db database instance
|
||||||
* @param userID ID of the user
|
* @param userID ID of the user
|
||||||
|
@ -1001,6 +1006,27 @@ public class AppDatabase {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set user register. If entry exists, update it.
|
||||||
|
*
|
||||||
|
* @param db database instance
|
||||||
|
* @param id User ID
|
||||||
|
* @param register tweet register
|
||||||
|
*/
|
||||||
|
public void setUserFlags(SQLiteDatabase db, long id, int register) {
|
||||||
|
String[] args = {Long.toString(id), Long.toString(homeId)};
|
||||||
|
|
||||||
|
ContentValues values = new ContentValues(3);
|
||||||
|
values.put(UserRegisterTable.ID, id);
|
||||||
|
values.put(UserRegisterTable.OWNER, homeId);
|
||||||
|
values.put(UserRegisterTable.REGISTER, register);
|
||||||
|
|
||||||
|
int cnt = db.update(UserRegisterTable.NAME, values, USER_REG_SELECT, args);
|
||||||
|
if (cnt == 0) {
|
||||||
|
db.insert(UserRegisterTable.NAME, null, values);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* check if tweet exists in database
|
* check if tweet exists in database
|
||||||
*
|
*
|
||||||
|
|
|
@ -127,11 +127,11 @@ public class DatabaseAdapter {
|
||||||
* SQL query to create a table for user logins
|
* SQL query to create a table for user logins
|
||||||
*/
|
*/
|
||||||
private static final String TABLE_LOGINS = "CREATE TABLE IF NOT EXISTS "
|
private static final String TABLE_LOGINS = "CREATE TABLE IF NOT EXISTS "
|
||||||
+ LoginTable.NAME + "("
|
+ AccountTable.NAME + "("
|
||||||
+ LoginTable.ID + " INTEGER PRIMARY KEY,"
|
+ AccountTable.ID + " INTEGER PRIMARY KEY,"
|
||||||
+ LoginTable.DATE + " INTEGER,"
|
+ AccountTable.DATE + " INTEGER,"
|
||||||
+ LoginTable.KEY1 + " TEXT,"
|
+ AccountTable.KEY1 + " TEXT,"
|
||||||
+ LoginTable.KEY2 + " TEXT);";
|
+ AccountTable.KEY2 + " TEXT);";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* index for tweet table
|
* index for tweet table
|
||||||
|
@ -511,7 +511,7 @@ public class DatabaseAdapter {
|
||||||
/**
|
/**
|
||||||
* Table for multi user login information
|
* Table for multi user login information
|
||||||
*/
|
*/
|
||||||
public interface LoginTable {
|
public interface AccountTable {
|
||||||
/**
|
/**
|
||||||
* SQL table name
|
* SQL table name
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -5,7 +5,7 @@ import androidx.appcompat.app.AlertDialog;
|
||||||
|
|
||||||
import org.nuclearfog.twidda.adapter.AccountAdapter;
|
import org.nuclearfog.twidda.adapter.AccountAdapter;
|
||||||
import org.nuclearfog.twidda.adapter.AccountAdapter.OnLoginClickListener;
|
import org.nuclearfog.twidda.adapter.AccountAdapter.OnLoginClickListener;
|
||||||
import org.nuclearfog.twidda.backend.LoginLoader;
|
import org.nuclearfog.twidda.backend.AccountLoader;
|
||||||
import org.nuclearfog.twidda.backend.engine.EngineException;
|
import org.nuclearfog.twidda.backend.engine.EngineException;
|
||||||
import org.nuclearfog.twidda.backend.model.Account;
|
import org.nuclearfog.twidda.backend.model.Account;
|
||||||
import org.nuclearfog.twidda.backend.utils.ErrorHandler;
|
import org.nuclearfog.twidda.backend.utils.ErrorHandler;
|
||||||
|
@ -29,7 +29,7 @@ import static org.nuclearfog.twidda.dialog.ConfirmDialog.DialogType;
|
||||||
public class AccountFragment extends ListFragment implements OnLoginClickListener, OnConfirmListener {
|
public class AccountFragment extends ListFragment implements OnLoginClickListener, OnConfirmListener {
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private LoginLoader loginTask;
|
private AccountLoader loginTask;
|
||||||
private GlobalSettings settings;
|
private GlobalSettings settings;
|
||||||
private AccountAdapter adapter;
|
private AccountAdapter adapter;
|
||||||
private AlertDialog dialog;
|
private AlertDialog dialog;
|
||||||
|
@ -48,7 +48,7 @@ public class AccountFragment extends ListFragment implements OnLoginClickListene
|
||||||
super.onStart();
|
super.onStart();
|
||||||
if (loginTask == null) {
|
if (loginTask == null) {
|
||||||
setRefresh(true);
|
setRefresh(true);
|
||||||
loginTask = new LoginLoader(this);
|
loginTask = new AccountLoader(this);
|
||||||
loginTask.execute();
|
loginTask.execute();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,7 +65,7 @@ public class AccountFragment extends ListFragment implements OnLoginClickListene
|
||||||
@Override
|
@Override
|
||||||
protected void onReload() {
|
protected void onReload() {
|
||||||
if (loginTask == null || loginTask.getStatus() != RUNNING)
|
if (loginTask == null || loginTask.getStatus() != RUNNING)
|
||||||
loginTask = new LoginLoader(this);
|
loginTask = new AccountLoader(this);
|
||||||
loginTask.execute();
|
loginTask.execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ public class AccountFragment extends ListFragment implements OnLoginClickListene
|
||||||
@Override
|
@Override
|
||||||
protected void onReset() {
|
protected void onReset() {
|
||||||
adapter.clear();
|
adapter.clear();
|
||||||
loginTask = new LoginLoader(this);
|
loginTask = new AccountLoader(this);
|
||||||
loginTask.execute();
|
loginTask.execute();
|
||||||
setRefresh(true);
|
setRefresh(true);
|
||||||
}
|
}
|
||||||
|
@ -108,12 +108,12 @@ public class AccountFragment extends ListFragment implements OnLoginClickListene
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onConfirm(DialogType type) {
|
public void onConfirm(DialogType type) {
|
||||||
loginTask = new LoginLoader(this);
|
loginTask = new AccountLoader(this);
|
||||||
loginTask.execute(selection);
|
loginTask.execute(selection);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* called from {@link LoginLoader}
|
* called from {@link AccountLoader}
|
||||||
*
|
*
|
||||||
* @param result login information
|
* @param result login information
|
||||||
*/
|
*/
|
||||||
|
@ -123,7 +123,7 @@ public class AccountFragment extends ListFragment implements OnLoginClickListene
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* called from {@link LoginLoader} when an error occurs
|
* called from {@link AccountLoader} when an error occurs
|
||||||
*/
|
*/
|
||||||
public void onError(EngineException err) {
|
public void onError(EngineException err) {
|
||||||
ErrorHandler.handleFailure(requireContext(), err);
|
ErrorHandler.handleFailure(requireContext(), err);
|
||||||
|
|
Loading…
Reference in New Issue