From 2ecbd756af993fbbb1d536adfe0432dde786140a Mon Sep 17 00:00:00 2001 From: Sufian Date: Tue, 22 May 2018 18:53:51 +0200 Subject: [PATCH] bugfix --- app/build.gradle | 3 +- .../nuclearfog/twidda/backend/ImagePopup.java | 2 - .../twidda/backend/StatusLoader.java | 9 ++-- .../twidda/backend/TwitterEngine.java | 4 +- .../twidda/database/DatabaseAdapter.java | 41 ++++++++++++++----- .../twidda/viewadapter/LogAdapter.java | 3 -- .../nuclearfog/twidda/window/AppSettings.java | 5 +-- .../nuclearfog/twidda/window/SearchPage.java | 19 ++++++++- .../nuclearfog/twidda/window/UserDetail.java | 2 +- .../nuclearfog/twidda/window/UserProfile.java | 28 +++++++++---- app/src/main/res/drawable/downarrow.xml | 4 -- app/src/main/res/drawable/result.xml | 4 -- app/src/main/res/drawable/users.xml | 4 -- app/src/main/res/layout/videopreview.xml | 7 ---- app/src/main/res/values/styles.xml | 2 +- build.gradle | 2 +- 16 files changed, 81 insertions(+), 58 deletions(-) delete mode 100644 app/src/main/res/drawable/downarrow.xml delete mode 100644 app/src/main/res/drawable/result.xml delete mode 100644 app/src/main/res/drawable/users.xml delete mode 100644 app/src/main/res/layout/videopreview.xml diff --git a/app/build.gradle b/app/build.gradle index 92c7673e..7c96a804 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,8 +13,9 @@ android { } buildTypes { release { - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' debuggable false + minifyEnabled true + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/ImagePopup.java b/app/src/main/java/org/nuclearfog/twidda/backend/ImagePopup.java index 9631e850..ebab31e6 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/ImagePopup.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/ImagePopup.java @@ -7,7 +7,6 @@ import android.content.DialogInterface; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; -import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.Window; @@ -74,7 +73,6 @@ public class ImagePopup extends AsyncTask { } return true; } catch (Exception err) { - Log.e("shitter:","Image download failed!"); err.printStackTrace(); ErrorLog errorLog = new ErrorLog(ui.get()); errorLog.add(err.getMessage()); diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/StatusLoader.java b/app/src/main/java/org/nuclearfog/twidda/backend/StatusLoader.java index f736390e..af972749 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/StatusLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/StatusLoader.java @@ -99,7 +99,9 @@ public class StatusLoader extends AsyncTask implements View.On } else { tweet = mTwitter.getStatus(tweetID); if(MODE == LOAD_TWEET) { - new DatabaseAdapter(ui.get()).storeStatus(tweet); + DatabaseAdapter dbAdp = new DatabaseAdapter(ui.get()); + if(dbAdp.containStatus(tweetID)) + dbAdp.storeStatus(tweet); } } @@ -155,7 +157,7 @@ public class StatusLoader extends AsyncTask implements View.On } else if(MODE == LOAD_REPLY) { List answers; - DatabaseAdapter twdb = new DatabaseAdapter(ui.get()); + DatabaseAdapter mData = new DatabaseAdapter(ui.get()); String replyname = tweet.user.screenname; if(tlAdp.getItemCount() > 0) { long sinceId = tlAdp.getItemId(0); @@ -166,7 +168,8 @@ public class StatusLoader extends AsyncTask implements View.On } tlAdp.setData(answers); tlAdp.setColor(highlight, font); - twdb.store(answers,DatabaseAdapter.TWEET,-1L); + if(mData.containStatus(tweetID)) + mData.store(answers,DatabaseAdapter.TWEET,-1L); } else if(MODE == DELETE) { mTwitter.deleteTweet(tweetID); diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/TwitterEngine.java b/app/src/main/java/org/nuclearfog/twidda/backend/TwitterEngine.java index 6b6be871..844dcffa 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/TwitterEngine.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/TwitterEngine.java @@ -38,7 +38,7 @@ import twitter4j.conf.ConfigurationBuilder; public class TwitterEngine { private final String TWITTER_CONSUMER_KEY = "0EKRHWYcakpCkl8Lr4OcBFMZb"; - private final String TWITTER_CONSUMER_SECRET = "GET YOUR OWN KEY"; + private final String TWITTER_CONSUMER_SECRET = "RQrf0uQus5v7IMuYgdlVeBuLw1ApRJhxcAMM8MyUVRh1nKSxnR"; private static TwitterEngine mTwitter; private static long twitterID = -1L; @@ -149,7 +149,7 @@ public class TwitterEngine { * set amount of tweets to be loaded */ private void setLoad() { - load = settings.getInt("preload", 10); + load = settings.getInt("preload", 20); } /** 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 2eb2537a..51c5e7a8 100644 --- a/app/src/main/java/org/nuclearfog/twidda/database/DatabaseAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/database/DatabaseAdapter.java @@ -180,6 +180,36 @@ public class DatabaseAdapter { } + /** + * Delete Status + * @param id Status id + */ + public void removeStatus(final long id) { + new Thread(new Runnable() { + @Override + public void run() { + SQLiteDatabase db = dataHelper.getWritableDatabase(); + db.delete("tweet", "tweetID="+id, null); + } + }).start(); + } + + /** + * Check if Tweet exists in Database + * @param id Tweet ID + * @return true if found + */ + public boolean containStatus(long id) { + SQLiteDatabase db = dataHelper.getReadableDatabase(); + String query = "SELECT EXISTS(SELECT tweetID FROM tweet WHERE tweetID="+id+" LIMIT 1);"; + Cursor c = db.rawQuery(query,null); + c.moveToFirst(); + boolean found = c.getInt(0) == 1; + c.close(); + return found; + } + + private Tweet getStatus(Cursor cursor) { int index; index = cursor.getColumnIndex("time"); @@ -289,15 +319,4 @@ public class DatabaseAdapter { userColumn.put("follower", user.follower); db.insertWithOnConflict("user",null, userColumn,SQLiteDatabase.CONFLICT_REPLACE); } - - - public void removeStatus(final long id) { - new Thread(new Runnable() { - @Override - public void run() { - SQLiteDatabase db = dataHelper.getWritableDatabase(); - db.delete("tweet", "tweetID="+id, null); - } - }).start(); - } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/viewadapter/LogAdapter.java b/app/src/main/java/org/nuclearfog/twidda/viewadapter/LogAdapter.java index adc7107e..00167ec1 100644 --- a/app/src/main/java/org/nuclearfog/twidda/viewadapter/LogAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/viewadapter/LogAdapter.java @@ -22,7 +22,6 @@ public class LogAdapter extends RecyclerView.Adapter { @Override public int getItemCount(){return messages.size();} - @NonNull @Override public LogAdapter.ItemHolder onCreateViewHolder(@NonNull ViewGroup parent, int index) { @@ -36,7 +35,6 @@ public class LogAdapter extends RecyclerView.Adapter { vh.message.setTextColor(0xffff0000); } - class ItemHolder extends RecyclerView.ViewHolder { public final TextView message; ItemHolder(View v) { @@ -44,5 +42,4 @@ public class LogAdapter extends RecyclerView.Adapter { message = v.findViewById(R.id.errortext); } } - } diff --git a/app/src/main/java/org/nuclearfog/twidda/window/AppSettings.java b/app/src/main/java/org/nuclearfog/twidda/window/AppSettings.java index 4f7cc9d6..60ae3719 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/AppSettings.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/AppSettings.java @@ -138,7 +138,7 @@ public class AppSettings extends AppCompatActivity implements View.OnClickListen case R.id.error_call: List messages = new ErrorLog(this).getErrorList(); LogAdapter adp = new LogAdapter(messages); - View list = LayoutInflater.from(this).inflate(R.layout.errorpage,null,false); + View list = LayoutInflater.from(this).inflate(R.layout.errorpage,null); RecyclerView loglist = list.findViewById(R.id.log_list); loglist.setLayoutManager(new LinearLayoutManager(this)); loglist.setAdapter(adp); @@ -244,9 +244,8 @@ public class AppSettings extends AppCompatActivity implements View.OnClickListen } private void loadSettings() { - settings = getSharedPreferences("settings", 0); clip = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); - row = settings.getInt("preload",10); + row = settings.getInt("preload",20); wId = settings.getInt("woeid",23424829); imgEnabled = settings.getBoolean("image_load",true); diff --git a/app/src/main/java/org/nuclearfog/twidda/window/SearchPage.java b/app/src/main/java/org/nuclearfog/twidda/window/SearchPage.java index feaad756..d8ab7545 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/SearchPage.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/SearchPage.java @@ -34,6 +34,8 @@ public class SearchPage extends AppCompatActivity implements UserRecycler.OnItem private RecyclerView tweetSearch,userSearch; private SwipeRefreshLayout tweetReload; private TwitterSearch mSearch; + private TabHost tabhost; + private String currenttab = "search_result"; private String search = ""; @Override @@ -57,7 +59,7 @@ public class SearchPage extends AppCompatActivity implements UserRecycler.OnItem setSupportActionBar(tool); if(getSupportActionBar() != null) getSupportActionBar().setDisplayShowTitleEnabled(false); - TabHost tabhost = findViewById(R.id.search_tab); + tabhost = findViewById(R.id.search_tab); tabhost.setup(); setTabs(tabhost); @@ -66,6 +68,17 @@ public class SearchPage extends AppCompatActivity implements UserRecycler.OnItem getContent(); } + + @Override + public void onBackPressed() { + if(currenttab.equals("user_result")) { + tabhost.setCurrentTab(0); + } + else { + super.onBackPressed(); + } + } + @Override protected void onDestroy() { mSearch.cancel(true); @@ -165,8 +178,10 @@ public class SearchPage extends AppCompatActivity implements UserRecycler.OnItem @Override public void onTabChanged(String tabId) { - if(tabId.equals("user_result")) + currenttab = tabId; + if(tabId.equals("user_result")) { tweetReload.setRefreshing(false); + } } private void setTabs(TabHost tabhost) { diff --git a/app/src/main/java/org/nuclearfog/twidda/window/UserDetail.java b/app/src/main/java/org/nuclearfog/twidda/window/UserDetail.java index f66da033..d0740e0a 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/UserDetail.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/UserDetail.java @@ -55,7 +55,7 @@ public class UserDetail extends AppCompatActivity implements UserRecycler.OnItem * Home Button */ @Override - protected void onUserLeaveHint(){ + protected void onUserLeaveHint() { super.onUserLeaveHint(); overridePendingTransition(0,0); } diff --git a/app/src/main/java/org/nuclearfog/twidda/window/UserProfile.java b/app/src/main/java/org/nuclearfog/twidda/window/UserProfile.java index 5691e811..0f81ce59 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/UserProfile.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/UserProfile.java @@ -35,6 +35,7 @@ public class UserProfile extends AppCompatActivity implements View.OnClickListen private SwipeRefreshLayout homeReload, favoriteReload; private RecyclerView homeList, favoritList; private long userId; + private TabHost mTab; private boolean home; private String username = ""; private String currentTab = "tweets"; @@ -73,8 +74,8 @@ public class UserProfile extends AppCompatActivity implements View.OnClickListen TextView txtFollowing = findViewById(R.id.following); TextView txtFollower = findViewById(R.id.follower); - TabHost mTab = findViewById(R.id.profile_tab); - setTabs(mTab); + mTab = findViewById(R.id.profile_tab); + setTabs(); mTab.setOnTabChangedListener(this); txtFollowing.setOnClickListener(this); txtFollower.setOnClickListener(this); @@ -85,12 +86,11 @@ public class UserProfile extends AppCompatActivity implements View.OnClickListen @Override public void onBackPressed() { - mProfile.cancel(true); - if(mTweets != null) - mTweets.cancel(true); - if(mFavorits != null) - mFavorits.cancel(true); - super.onBackPressed(); + if(currentTab.equals("tweets")) { + super.onBackPressed(); + } else { + mTab.setCurrentTab(0); + } } /** @@ -102,6 +102,16 @@ public class UserProfile extends AppCompatActivity implements View.OnClickListen overridePendingTransition(0,0); } + @Override + protected void onDestroy() { + mProfile.cancel(true); + if(mTweets != null) + mTweets.cancel(true); + if(mFavorits != null) + mFavorits.cancel(true); + super.onDestroy(); + } + @Override public boolean onCreateOptionsMenu(Menu m) { getMenuInflater().inflate(R.menu.profile, m); @@ -194,7 +204,7 @@ public class UserProfile extends AppCompatActivity implements View.OnClickListen } - private void setTabs(TabHost mTab) { + private void setTabs() { mTab.setup(); TabHost.TabSpec tab1 = mTab.newTabSpec("tweets"); tab1.setContent(R.id.hometweets); diff --git a/app/src/main/res/drawable/downarrow.xml b/app/src/main/res/drawable/downarrow.xml deleted file mode 100644 index f80ca75d..00000000 --- a/app/src/main/res/drawable/downarrow.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/result.xml b/app/src/main/res/drawable/result.xml deleted file mode 100644 index 26824b0b..00000000 --- a/app/src/main/res/drawable/result.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/users.xml b/app/src/main/res/drawable/users.xml deleted file mode 100644 index e36c37a5..00000000 --- a/app/src/main/res/drawable/users.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - diff --git a/app/src/main/res/layout/videopreview.xml b/app/src/main/res/layout/videopreview.xml deleted file mode 100644 index 06984413..00000000 --- a/app/src/main/res/layout/videopreview.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index e2a9138d..df75244d 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -25,7 +25,7 @@