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