major bug fix

This commit is contained in:
NudeDude 2019-04-02 15:50:16 +02:00
parent eb82f6d1b8
commit a389fe19bb
15 changed files with 97 additions and 79 deletions

View File

@ -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());

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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) {

View File

@ -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);
}
}

View File

@ -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();
}
}

View File

@ -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();
}

View File

@ -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);
}
}
}

View File

@ -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);

View File

@ -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());

View File

@ -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());

View File

@ -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);

View File

@ -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());