major bug fix
This commit is contained in:
parent
eb82f6d1b8
commit
a389fe19bb
@ -322,7 +322,7 @@ public class MainActivity extends AppCompatActivity implements OnRefreshListener
|
||||
switch (parent.getId()) {
|
||||
case R.id.tl_list:
|
||||
if (!timelineReload.isRefreshing()) {
|
||||
Tweet tweet = timelineAdapter.getData().get(position);
|
||||
Tweet tweet = timelineAdapter.getData(position);
|
||||
if (tweet.getEmbeddedTweet() != null)
|
||||
tweet = tweet.getEmbeddedTweet();
|
||||
openTweet(tweet.getId(), tweet.getUser().getId(), tweet.getUser().getScreenname());
|
||||
@ -331,7 +331,7 @@ public class MainActivity extends AppCompatActivity implements OnRefreshListener
|
||||
|
||||
case R.id.tr_list:
|
||||
if (!trendReload.isRefreshing()) {
|
||||
String search = trendsAdapter.getData().get(position).getName();
|
||||
String search = trendsAdapter.getData(position).getName();
|
||||
Intent intent = new Intent(this, SearchPage.class);
|
||||
if (!search.startsWith("#"))
|
||||
search = '\"' + search + '\"';
|
||||
@ -342,7 +342,7 @@ public class MainActivity extends AppCompatActivity implements OnRefreshListener
|
||||
|
||||
case R.id.m_list:
|
||||
if (!mentionReload.isRefreshing()) {
|
||||
Tweet tweet = mentionAdapter.getData().get(position);
|
||||
Tweet tweet = mentionAdapter.getData(position);
|
||||
if (tweet.getEmbeddedTweet() != null)
|
||||
tweet = tweet.getEmbeddedTweet();
|
||||
openTweet(tweet.getId(), tweet.getUser().getId(), tweet.getUser().getScreenname());
|
||||
|
@ -41,8 +41,8 @@ public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.MessageH
|
||||
}
|
||||
|
||||
|
||||
public List<Message> getData() {
|
||||
return messages;
|
||||
public Message getData(int pos) {
|
||||
return messages.get(pos);
|
||||
}
|
||||
|
||||
|
||||
|
@ -53,15 +53,18 @@ public class TimelineAdapter extends Adapter<TimelineAdapter.ItemHolder> {
|
||||
}
|
||||
|
||||
|
||||
public List<Tweet> getData() {
|
||||
public Tweet getData(int pos) {
|
||||
return tweets.get(pos);
|
||||
}
|
||||
|
||||
|
||||
public List<Tweet>getData() {
|
||||
return tweets;
|
||||
}
|
||||
|
||||
|
||||
public void setData(@NonNull List<Tweet> newTweets) {
|
||||
List<Tweet> result = new ArrayList<>(newTweets);
|
||||
result.addAll(tweets);
|
||||
tweets = result;
|
||||
this.tweets = new ArrayList<>(newTweets);
|
||||
}
|
||||
|
||||
|
||||
|
@ -34,8 +34,8 @@ public class TrendAdapter extends Adapter<TrendAdapter.ItemHolder> {
|
||||
}
|
||||
|
||||
|
||||
public List<Trend> getData() {
|
||||
return trendList;
|
||||
public Trend getData(int pos) {
|
||||
return trendList.get(pos);
|
||||
}
|
||||
|
||||
|
||||
|
@ -33,13 +33,13 @@ public class UserAdapter extends Adapter<UserAdapter.ItemHolder> {
|
||||
}
|
||||
|
||||
|
||||
public List<TwitterUser> getData() {
|
||||
return mUser;
|
||||
public TwitterUser getData(int pos) {
|
||||
return mUser.get(pos);
|
||||
}
|
||||
|
||||
|
||||
public void setData(@NonNull List<TwitterUser> mUser) {
|
||||
this.mUser = mUser;
|
||||
this.mUser = new ArrayList<>(mUser);
|
||||
}
|
||||
|
||||
|
||||
|
@ -29,10 +29,22 @@ public class MainPage extends AsyncTask<Integer, Void, Void> {
|
||||
TRND,
|
||||
MENT
|
||||
}
|
||||
|
||||
private final Mode mode;
|
||||
private boolean failure = false;
|
||||
|
||||
private WeakReference<MainActivity> ui;
|
||||
private TwitterEngine mTwitter;
|
||||
private TwitterException err;
|
||||
|
||||
private TimelineAdapter timelineAdapter, mentionAdapter;
|
||||
private TrendAdapter trendsAdapter;
|
||||
private DatabaseAdapter tweetDb;
|
||||
private List<Tweet> tweets, mention;
|
||||
private List<Trend> trends;
|
||||
|
||||
private int woeId;
|
||||
|
||||
|
||||
public MainPage(@NonNull MainActivity context, Mode mode) {
|
||||
ui = new WeakReference<>(context);
|
||||
mTwitter = TwitterEngine.getInstance(context);
|
||||
@ -54,17 +66,6 @@ public class MainPage extends AsyncTask<Integer, Void, Void> {
|
||||
mentionAdapter = (TimelineAdapter) mentionList.getAdapter();
|
||||
}
|
||||
|
||||
private WeakReference<MainActivity> ui;
|
||||
private TwitterEngine mTwitter;
|
||||
private TwitterException err;
|
||||
|
||||
private TimelineAdapter timelineAdapter, mentionAdapter;
|
||||
private TrendAdapter trendsAdapter;
|
||||
private DatabaseAdapter tweetDb;
|
||||
private List<Tweet> tweets, mention;
|
||||
private List<Trend> trends;
|
||||
|
||||
private int woeId;
|
||||
|
||||
@Override
|
||||
protected Void doInBackground(Integer... args) {
|
||||
@ -76,8 +77,9 @@ public class MainPage extends AsyncTask<Integer, Void, Void> {
|
||||
if (timelineAdapter.getItemCount() > 0)
|
||||
sinceId = timelineAdapter.getItemId(0);
|
||||
tweets = mTwitter.getHome(PAGE, sinceId);
|
||||
publishProgress();
|
||||
tweetDb.storeHomeTimeline(tweets);
|
||||
tweets.addAll(timelineAdapter.getData());
|
||||
publishProgress();
|
||||
break;
|
||||
|
||||
case TRND:
|
||||
@ -90,8 +92,9 @@ public class MainPage extends AsyncTask<Integer, Void, Void> {
|
||||
if (mentionAdapter.getItemCount() > 0)
|
||||
sinceId = mentionAdapter.getItemId(0);
|
||||
mention = mTwitter.getMention(PAGE, sinceId);
|
||||
publishProgress();
|
||||
mention.addAll(mentionAdapter.getData());
|
||||
tweetDb.storeMentions(mention);
|
||||
publishProgress();
|
||||
break;
|
||||
|
||||
case DATA:
|
||||
@ -100,7 +103,6 @@ public class MainPage extends AsyncTask<Integer, Void, Void> {
|
||||
mention = tweetDb.getMentions();
|
||||
publishProgress();
|
||||
}
|
||||
|
||||
} catch (TwitterException err) {
|
||||
this.err = err;
|
||||
failure = true;
|
||||
@ -111,6 +113,7 @@ public class MainPage extends AsyncTask<Integer, Void, Void> {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onProgressUpdate(Void... v) {
|
||||
disableSwipe();
|
||||
@ -141,6 +144,7 @@ public class MainPage extends AsyncTask<Integer, Void, Void> {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(Void v) {
|
||||
if (failure && ui.get() != null) {
|
||||
@ -150,11 +154,13 @@ public class MainPage extends AsyncTask<Integer, Void, Void> {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onCancelled() {
|
||||
disableSwipe();
|
||||
}
|
||||
|
||||
|
||||
private void disableSwipe() {
|
||||
if (ui.get() != null) {
|
||||
switch (mode) {
|
||||
|
@ -144,13 +144,15 @@ public class ProfileLoader extends AsyncTask<Long, Void, Void> {
|
||||
if (!user.isLocked() || isFollowing || isHome) {
|
||||
if (tweets.isEmpty()) {
|
||||
tweets = mTwitter.getUserTweets(UID, 1, page);
|
||||
publishProgress();
|
||||
database.storeUserTweets(tweets);
|
||||
tweets.addAll(homeTl.getData());
|
||||
publishProgress();
|
||||
}
|
||||
if (favors.isEmpty()) {
|
||||
favors = mTwitter.getUserFavs(UID, 1, page);
|
||||
publishProgress();
|
||||
database.storeUserFavs(favors, UID);
|
||||
favors.addAll(homeFav.getData());
|
||||
publishProgress();
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -161,8 +163,9 @@ public class ProfileLoader extends AsyncTask<Long, Void, Void> {
|
||||
if (homeTl.getItemCount() > 0)
|
||||
sinceId = homeTl.getItemId(0);
|
||||
tweets = mTwitter.getUserTweets(UID, sinceId, page);
|
||||
publishProgress();
|
||||
database.storeUserTweets(tweets);
|
||||
tweets.addAll(homeTl.getData());
|
||||
publishProgress();
|
||||
}
|
||||
break;
|
||||
|
||||
@ -172,8 +175,9 @@ public class ProfileLoader extends AsyncTask<Long, Void, Void> {
|
||||
if (homeFav.getItemCount() > 0)
|
||||
sinceId = homeFav.getItemId(0);
|
||||
favors = mTwitter.getUserFavs(UID, sinceId, page);
|
||||
publishProgress();
|
||||
database.storeUserFavs(favors, UID);
|
||||
favors.addAll(homeFav.getData());
|
||||
publishProgress();
|
||||
}
|
||||
break;
|
||||
|
||||
@ -227,6 +231,19 @@ public class ProfileLoader extends AsyncTask<Long, Void, Void> {
|
||||
protected void onProgressUpdate(Void... v) {
|
||||
if (ui.get() == null) return;
|
||||
|
||||
if (!tweets.isEmpty()) {
|
||||
SwipeRefreshLayout homeReload = ui.get().findViewById(R.id.hometweets);
|
||||
homeTl.setData(tweets);
|
||||
homeTl.notifyDataSetChanged();
|
||||
homeReload.setRefreshing(false);
|
||||
}
|
||||
if (!favors.isEmpty()) {
|
||||
SwipeRefreshLayout favReload = ui.get().findViewById(R.id.homefavorits);
|
||||
homeFav.setData(favors);
|
||||
homeFav.notifyDataSetChanged();
|
||||
favReload.setRefreshing(false);
|
||||
}
|
||||
|
||||
TextView txtUser = ui.get().findViewById(R.id.profile_username);
|
||||
TextView txtScrName = ui.get().findViewById(R.id.profile_screenname);
|
||||
TextView txtBio = ui.get().findViewById(R.id.bio);
|
||||
@ -319,19 +336,6 @@ public class ProfileLoader extends AsyncTask<Long, Void, Void> {
|
||||
profile_head.setVisibility(VISIBLE);
|
||||
|
||||
ui.get().setTweetCount(user.getTweetCount(), user.getFavorCount());
|
||||
|
||||
if (!tweets.isEmpty()) {
|
||||
SwipeRefreshLayout homeReload = ui.get().findViewById(R.id.hometweets);
|
||||
homeTl.setData(tweets);
|
||||
homeTl.notifyDataSetChanged();
|
||||
homeReload.setRefreshing(false);
|
||||
}
|
||||
if (!favors.isEmpty()) {
|
||||
SwipeRefreshLayout favReload = ui.get().findViewById(R.id.homefavorits);
|
||||
homeFav.setData(favors);
|
||||
homeFav.notifyDataSetChanged();
|
||||
favReload.setRefreshing(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -108,14 +108,15 @@ public class StatusLoader extends AsyncTask<Long, Void, Void> {
|
||||
if (answerAdapter.getItemCount() > 0)
|
||||
sinceId = answerAdapter.getItemId(0);
|
||||
answers = mTwitter.getAnswers(tweet.getUser().getScreenname(), TWEETID, sinceId);
|
||||
if (database.containStatus(TWEETID)) {
|
||||
database.updateStatus(tweet);
|
||||
if (!answers.isEmpty())
|
||||
database.storeReplies(answers);
|
||||
}
|
||||
answers.addAll(answerAdapter.getData());
|
||||
}
|
||||
publishProgress();
|
||||
|
||||
if (database.containStatus(TWEETID)) {
|
||||
database.updateStatus(tweet);
|
||||
if (!answers.isEmpty())
|
||||
database.storeReplies(answers);
|
||||
}
|
||||
break;
|
||||
|
||||
case DELETE:
|
||||
@ -160,6 +161,13 @@ public class StatusLoader extends AsyncTask<Long, Void, Void> {
|
||||
protected void onProgressUpdate(Void... v) {
|
||||
if (ui.get() == null) return;
|
||||
|
||||
if(!answers.isEmpty()) {
|
||||
SwipeRefreshLayout ansReload = ui.get().findViewById(R.id.answer_reload);
|
||||
ansReload.setRefreshing(false);
|
||||
answerAdapter.setData(answers);
|
||||
answerAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
if(mode == Mode.LOAD) {
|
||||
TextView tweetText = ui.get().findViewById(R.id.tweet_detailed);
|
||||
TextView tweetDate = ui.get().findViewById(R.id.timedetail);
|
||||
@ -269,12 +277,6 @@ public class StatusLoader extends AsyncTask<Long, Void, Void> {
|
||||
tweet_header.setVisibility(VISIBLE);
|
||||
if(tweet_footer.getVisibility() != VISIBLE)
|
||||
tweet_footer.setVisibility(VISIBLE);
|
||||
if(!answers.isEmpty()) {
|
||||
SwipeRefreshLayout ansReload = ui.get().findViewById(R.id.answer_reload);
|
||||
ansReload.setRefreshing(false);
|
||||
answerAdapter.setData(answers);
|
||||
answerAdapter.notifyDataSetChanged();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -81,6 +81,7 @@ public class TwitterSearch extends AsyncTask<String, Void, Void> {
|
||||
tweetReload.setRefreshing(false);
|
||||
|
||||
if(!tweets.isEmpty()) {
|
||||
tweets.addAll(searchAdapter.getData());
|
||||
searchAdapter.setData(tweets);
|
||||
searchAdapter.notifyDataSetChanged();
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ public class AppDatabase extends SQLiteOpenHelper {
|
||||
"statusregister INTEGER,source VARCHAR(32),FOREIGN KEY (userID) REFERENCES user(userID));";
|
||||
|
||||
private static final String favoriteTable = "CREATE TABLE IF NOT EXISTS favorit (" +
|
||||
"ownerID INTEGER,tweetID INTEGER PRIMARY KEY," +
|
||||
"ownerID INTEGER,tweetID INTEGER," +
|
||||
"FOREIGN KEY (ownerID) REFERENCES user(userID)," +
|
||||
"FOREIGN KEY (tweetID) REFERENCES tweet(tweetID));";
|
||||
|
||||
@ -27,14 +27,13 @@ public class AppDatabase extends SQLiteOpenHelper {
|
||||
"messageID INTEGER PRIMARY KEY,time INTEGER,senderID INTEGER,receiverID INTEGER," +
|
||||
"message TEXT);";
|
||||
|
||||
private static final String INDX_USER_ID = "CREATE UNIQUE INDEX IF NOT EXISTS idx_user ON user(userID);";
|
||||
private static final String INDX_TWEET_ID = "CREATE UNIQUE INDEX IF NOT EXISTS idx_tweet ON tweet(tweetID);";
|
||||
private static final String INDX_TWEET_US = "CREATE INDEX IF NOT EXISTS idx_tweet ON tweet(userID,statusregister);";
|
||||
private static final String INDX_TWEET = "CREATE INDEX IF NOT EXISTS idx_tweet ON tweet(userID,statusregister);";
|
||||
private static final String INDX_FAVOR = "CREATE INDEX IF NOT EXISTS idx_favor ON favorit(ownerID,tweetID);";
|
||||
|
||||
private static AppDatabase mData;
|
||||
|
||||
private AppDatabase(Context context) {
|
||||
super(context, "database.db", null, 3);
|
||||
super(context, "database.db", null, 1);
|
||||
}
|
||||
|
||||
public static synchronized AppDatabase getInstance(Context context) {
|
||||
@ -55,9 +54,8 @@ public class AppDatabase extends SQLiteOpenHelper {
|
||||
|
||||
db.execSQL(messageTable);
|
||||
|
||||
db.execSQL(INDX_USER_ID);
|
||||
db.execSQL(INDX_TWEET_ID);
|
||||
db.execSQL(INDX_TWEET_US);
|
||||
db.execSQL(INDX_TWEET);
|
||||
db.execSQL(INDX_FAVOR);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -69,9 +67,13 @@ public class AppDatabase extends SQLiteOpenHelper {
|
||||
db.execSQL(F_QUERY);
|
||||
}
|
||||
if(oldVersion < 3 && newVersion >=3) {
|
||||
db.execSQL(INDX_USER_ID);
|
||||
db.execSQL(INDX_TWEET_ID);
|
||||
db.execSQL(INDX_TWEET_US);
|
||||
db.execSQL("DROP TABLE favorit");
|
||||
db.execSQL("DROP INDEX idx_tweet");
|
||||
|
||||
db.execSQL(favoriteTable);
|
||||
|
||||
db.execSQL(INDX_TWEET);
|
||||
db.execSQL(INDX_FAVOR);
|
||||
}
|
||||
}
|
||||
}
|
@ -106,9 +106,9 @@ public class DirectMessage extends AppCompatActivity implements OnRefreshListene
|
||||
|
||||
|
||||
@Override
|
||||
public void onAnswer(int index) {
|
||||
public void onAnswer(int position) {
|
||||
if (mAdapter != null && !refresh.isRefreshing()) {
|
||||
Message message = mAdapter.getData().get(index);
|
||||
Message message = mAdapter.getData(position);
|
||||
Intent sendDm = new Intent(this, MessagePopup.class);
|
||||
sendDm.putExtra("username", message.getSender().getScreenname());
|
||||
startActivity(sendDm);
|
||||
@ -117,9 +117,9 @@ public class DirectMessage extends AppCompatActivity implements OnRefreshListene
|
||||
|
||||
|
||||
@Override
|
||||
public void onDelete(int index) {
|
||||
public void onDelete(int position) {
|
||||
if (mAdapter != null && !refresh.isRefreshing()) {
|
||||
Message message = mAdapter.getData().get(index);
|
||||
Message message = mAdapter.getData(position);
|
||||
final long messageId = message.getId();
|
||||
new Builder(this).setMessage(R.string.confirm_delete_dm)
|
||||
.setNegativeButton(R.string.no_confirm, null)
|
||||
@ -137,7 +137,7 @@ public class DirectMessage extends AppCompatActivity implements OnRefreshListene
|
||||
@Override
|
||||
public void onProfileClick(int index) {
|
||||
if (mAdapter != null && !refresh.isRefreshing()) {
|
||||
Message message = mAdapter.getData().get(index);
|
||||
Message message = mAdapter.getData(index);
|
||||
long userId = message.getSender().getId();
|
||||
String username = message.getSender().getScreenname();
|
||||
Intent user = new Intent(this, UserProfile.class);
|
||||
|
@ -178,7 +178,7 @@ public class SearchPage extends AppCompatActivity implements OnRefreshListener,
|
||||
if (!tweetReload.isRefreshing()) {
|
||||
switch (rv.getId()) {
|
||||
case R.id.tweet_result:
|
||||
Tweet tweet = searchAdapter.getData().get(position);
|
||||
Tweet tweet = searchAdapter.getData(position);
|
||||
Intent tweetdetail = new Intent(this, TweetDetail.class);
|
||||
tweetdetail.putExtra("tweetID", tweet.getId());
|
||||
tweetdetail.putExtra("userID", tweet.getUser().getId());
|
||||
@ -187,7 +187,7 @@ public class SearchPage extends AppCompatActivity implements OnRefreshListener,
|
||||
break;
|
||||
|
||||
case R.id.user_result:
|
||||
TwitterUser user = userAdapter.getData().get(position);
|
||||
TwitterUser user = userAdapter.getData(position);
|
||||
Intent userprofile = new Intent(this, UserProfile.class);
|
||||
userprofile.putExtra("userID", user.getId());
|
||||
userprofile.putExtra("username", user.getScreenname());
|
||||
|
@ -246,7 +246,7 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener,
|
||||
@Override
|
||||
public void onItemClick(RecyclerView rv, int position) {
|
||||
if (!answerReload.isRefreshing()) {
|
||||
Tweet tweet = answerAdapter.getData().get(position);
|
||||
Tweet tweet = answerAdapter.getData(position);
|
||||
Intent intent = new Intent(this, TweetDetail.class);
|
||||
intent.putExtra("tweetID", tweet.getId());
|
||||
intent.putExtra("userID", tweet.getUser().getId());
|
||||
|
@ -113,7 +113,7 @@ public class UserDetail extends AppCompatActivity implements OnItemClickListener
|
||||
public void onItemClick(RecyclerView rv, int position) {
|
||||
UserAdapter userListAdapter = (UserAdapter) userList.getAdapter();
|
||||
if (userListAdapter != null && !refresh.isRefreshing()) {
|
||||
TwitterUser user = userListAdapter.getData().get(position);
|
||||
TwitterUser user = userListAdapter.getData(position);
|
||||
long userID = user.getId();
|
||||
String username = user.getScreenname();
|
||||
Intent intent = new Intent(this, UserProfile.class);
|
||||
|
@ -330,7 +330,7 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
|
||||
switch (parent.getId()) {
|
||||
case R.id.ht_list:
|
||||
if (!homeReload.isRefreshing()) {
|
||||
Tweet tweet = tweetAdapter.getData().get(position);
|
||||
Tweet tweet = tweetAdapter.getData(position);
|
||||
if (tweet.getEmbeddedTweet() != null)
|
||||
tweet = tweet.getEmbeddedTweet();
|
||||
openTweet(tweet.getId(), tweet.getUser().getId(), tweet.getUser().getScreenname());
|
||||
@ -339,7 +339,7 @@ public class UserProfile extends AppCompatActivity implements OnRefreshListener,
|
||||
|
||||
case R.id.hf_list:
|
||||
if (!favoriteReload.isRefreshing()) {
|
||||
Tweet tweet = favAdapter.getData().get(position);
|
||||
Tweet tweet = favAdapter.getData(position);
|
||||
if (tweet.getEmbeddedTweet() != null)
|
||||
tweet = tweet.getEmbeddedTweet();
|
||||
openTweet(tweet.getId(), tweet.getUser().getId(), tweet.getUser().getScreenname());
|
||||
|
Loading…
x
Reference in New Issue
Block a user