From cc8c621a9bd71dcc1125b33132f7ba07cdba08f0 Mon Sep 17 00:00:00 2001 From: NudeDude Date: Sun, 9 Jun 2019 12:23:37 +0200 Subject: [PATCH] bug fix --- .../twidda/backend/StatusLoader.java | 26 ++++++++++------- .../twidda/database/DatabaseAdapter.java | 29 ++++++++++++------- .../twidda/fragment/TweetListFragment.java | 14 +++++---- .../nuclearfog/twidda/window/TweetPopup.java | 28 ++++++++---------- app/src/main/res/layout/page_media.xml | 6 ++-- 5 files changed, 56 insertions(+), 47 deletions(-) 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 9f137266..f2a3197d 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/StatusLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/StatusLoader.java @@ -290,20 +290,24 @@ public class StatusLoader extends AsyncTask { if (ui.get() == null) return; if (!failure) { - if (mode == Mode.DELETE) { - Toast.makeText(ui.get(), R.string.tweet_removed, Toast.LENGTH_SHORT).show(); - ui.get().setResult(RETURN_TWEET_CHANGED); - ui.get().finish(); - } - } else { - if (err != null) { - int rCode = err.getErrorCode(); - if (rCode == 144 || rCode == 34 || rCode == 63) + switch (mode) { + case FAVORITE: + ui.get().setResult(RETURN_TWEET_CHANGED); + break; + + case DELETE: + Toast.makeText(ui.get(), R.string.tweet_removed, Toast.LENGTH_SHORT).show(); ui.get().setResult(RETURN_TWEET_CHANGED); - boolean killActivity = ErrorHandler.printError(ui.get(), err); - if (killActivity) ui.get().finish(); + break; } + } else if (err != null) { + int rCode = err.getErrorCode(); + if (rCode == 144 || rCode == 34 || rCode == 63) + ui.get().setResult(RETURN_TWEET_CHANGED); + boolean killActivity = ErrorHandler.printError(ui.get(), err); + if (killActivity) + ui.get().finish(); } } } \ No newline at end of file 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 4146ff98..82637272 100644 --- a/app/src/main/java/org/nuclearfog/twidda/database/DatabaseAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/database/DatabaseAdapter.java @@ -370,20 +370,24 @@ public class DatabaseAdapter { userColumn.put("following", user.getFollowing()); userColumn.put("follower", user.getFollower()); - db.update("tweet", statColumn, "tweet.tweetID=" + tweet.getId(), null); - db.update("user", userColumn, "user.userID=" + user.getId(), null); + final String[] tweetIdArg = {Long.toString(tweet.getId())}; + final String[] userIdArg = {Long.toString(user.getId())}; + db.update("tweet", statColumn, "tweet.tweetID=?", tweetIdArg); + db.update("user", userColumn, "user.userID=?", userIdArg); commit(db); } /** * remove status * - * @param id Tweet ID + * @param tweetId Tweet ID */ - public void removeStatus(long id) { + public void removeStatus(long tweetId) { SQLiteDatabase db = getDbWrite(); - db.delete("tweet", "tweetID=" + id, null); - db.delete("favorit", "tweetID=" + id + " AND ownerID=" + homeId, null); + final String[] delTwt = {Long.toString(tweetId)}; + final String[] delFav = {Long.toString(tweetId), Long.toString(homeId)}; + db.delete("tweet", "tweetID=?", delTwt); + db.delete("favorit", "tweetID=? AND ownerID=?", delFav); commit(db); } @@ -396,8 +400,8 @@ public class DatabaseAdapter { Tweet tweet = getStatus(tweetId); if (tweet != null) { SQLiteDatabase db = getDbWrite(); - long retweetedId = tweet.getMyRetweetId(); - db.delete("tweet", "tweetID=" + retweetedId, null); + final String[] args = {Long.toString(tweet.getMyRetweetId())}; + db.delete("tweet", "tweetID=?", args); commit(db); } } @@ -409,12 +413,14 @@ public class DatabaseAdapter { */ public void removeFavorite(long tweetId) { SQLiteDatabase db = getDbWrite(); + final String[] delArgs = {Long.toString(tweetId), Long.toString(homeId)}; + final String[] updateArgs = {Long.toString(tweetId)}; int register = getTweetStatus(db, tweetId); register &= ~FAV_MASK; ContentValues status = new ContentValues(); status.put("statusregister", register); - db.delete("favorit", "tweetID=" + tweetId + " AND ownerID=" + homeId, null); - db.update("tweet", status, "tweet.tweetID=" + tweetId, null); + db.delete("favorit", "tweetID=? AND ownerID=?", delArgs); + db.update("tweet", status, "tweet.tweetID=?", updateArgs); commit(db); } @@ -425,7 +431,8 @@ public class DatabaseAdapter { */ public void deleteDm(long id) { SQLiteDatabase db = getDbWrite(); - db.delete("message", "messageID=" + id, null); + final String[] messageId = {Long.toString(id)}; + db.delete("message", "messageID=?", messageId); commit(db); } diff --git a/app/src/main/java/org/nuclearfog/twidda/fragment/TweetListFragment.java b/app/src/main/java/org/nuclearfog/twidda/fragment/TweetListFragment.java index 742c1e3c..128dae0d 100644 --- a/app/src/main/java/org/nuclearfog/twidda/fragment/TweetListFragment.java +++ b/app/src/main/java/org/nuclearfog/twidda/fragment/TweetListFragment.java @@ -94,7 +94,7 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On public void onStart() { super.onStart(); if (tweetTask == null) { - load(); + load(false); } } @@ -103,7 +103,7 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On public void onResume() { super.onResume(); if (tweetTask == null) { - load(); + load(false); } } @@ -126,7 +126,7 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On @Override public void onRefresh() { - load(); + load(true); } @@ -169,7 +169,7 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On } - private void load() { + private void load(boolean loadAnswer) { switch (mode) { case HOME: tweetTask = new TweetLoader(root, Mode.TL_HOME); @@ -192,8 +192,10 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On break; case TWEET_ANSR: - tweetTask = new TweetLoader(root, Mode.TWEET_ANS); - tweetTask.execute(id, search); + if (loadAnswer) { + tweetTask = new TweetLoader(root, Mode.TWEET_ANS); + tweetTask.execute(id, search); + } break; case SEARCH: diff --git a/app/src/main/java/org/nuclearfog/twidda/window/TweetPopup.java b/app/src/main/java/org/nuclearfog/twidda/window/TweetPopup.java index 221336aa..dd185c32 100644 --- a/app/src/main/java/org/nuclearfog/twidda/window/TweetPopup.java +++ b/app/src/main/java/org/nuclearfog/twidda/window/TweetPopup.java @@ -18,6 +18,8 @@ import androidx.appcompat.app.AppCompatActivity; import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.backend.StatusUploader; +import org.nuclearfog.twidda.backend.helper.FilenameTools; +import org.nuclearfog.twidda.backend.helper.FilenameTools.FileType; import org.nuclearfog.twidda.backend.items.TweetHolder; import org.nuclearfog.twidda.database.GlobalSettings; @@ -54,8 +56,8 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener { private static final String[] READ_STORAGE = {READ_EXTERNAL_STORAGE}; private static final String[] GET_MEDIA = {MediaStore.Images.Media.DATA}; - private static final String TYPE_IMAGE = "image/*.jpeg image/*.jpg image/*.png "; - private static final String TYPE_VIDEO = "video/*.mp4 video/*.3gp video/*.gif "; + private static final String TYPE_IMAGE = "image/*"; + private static final String TYPE_VIDEO = "video/*"; private static final int PICK_MEDIA = 3; private static final int CHECK_PERM = 4; private static final int MAX_IMAGES = 4; @@ -123,16 +125,10 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener { if (cursor != null && cursor.moveToFirst()) { int index = cursor.getColumnIndex(GET_MEDIA[0]); String path = cursor.getString(index); - String ext = ""; - int pos = path.lastIndexOf(".") + 1; - if (pos > 0 && pos < path.length()) { - ext = path.substring(pos); - ext = ext.toLowerCase(); - } - switch (ext) { - case "png": - case "jpg": - case "jpeg": + FileType type = FilenameTools.getFileType(path); + + switch (type) { + case IMAGE: if (mode == Mode.NONE) mode = Mode.IMAGE; if (mediaPath.size() < MAX_IMAGES && mode == Mode.IMAGE) { @@ -145,7 +141,7 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener { } break; - case "gif": + case ANGIF: if (mode == Mode.NONE) mode = Mode.GIF; if (mode == Mode.GIF) { @@ -155,8 +151,7 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener { } break; - case "mp4": - case "3gp": + case VIDEO: if (mode == Mode.NONE) mode = Mode.VIDEO; if (mode == Mode.VIDEO) { @@ -281,7 +276,8 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener { mediaIntent.setDataAndType(EXTERNAL_CONTENT_URI, TYPE_IMAGE + TYPE_VIDEO); startActivityForResult(mediaIntent, PICK_MEDIA); } else if (mode == Mode.IMAGE) { - Intent imageIntent = new Intent(ACTION_PICK, EXTERNAL_CONTENT_URI); + Intent imageIntent = new Intent(ACTION_PICK); + imageIntent.setDataAndType(EXTERNAL_CONTENT_URI, TYPE_IMAGE); startActivityForResult(imageIntent, PICK_MEDIA); } } diff --git a/app/src/main/res/layout/page_media.xml b/app/src/main/res/layout/page_media.xml index 1724e68e..9a1dae81 100644 --- a/app/src/main/res/layout/page_media.xml +++ b/app/src/main/res/layout/page_media.xml @@ -2,8 +2,7 @@ + android:layout_height="match_parent"> + android:scrollbars="horizontal" + android:layout_margin="@dimen/preview_margin" />