This commit is contained in:
NudeDude 2019-06-09 12:23:37 +02:00
parent 5e1bc04966
commit cc8c621a9b
5 changed files with 56 additions and 47 deletions

View File

@ -290,20 +290,24 @@ public class StatusLoader extends AsyncTask<Long, Tweet, Void> {
if (ui.get() == null) return; if (ui.get() == null) return;
if (!failure) { if (!failure) {
if (mode == Mode.DELETE) { switch (mode) {
Toast.makeText(ui.get(), R.string.tweet_removed, Toast.LENGTH_SHORT).show(); case FAVORITE:
ui.get().setResult(RETURN_TWEET_CHANGED); ui.get().setResult(RETURN_TWEET_CHANGED);
ui.get().finish(); break;
}
} else { case DELETE:
if (err != null) { Toast.makeText(ui.get(), R.string.tweet_removed, Toast.LENGTH_SHORT).show();
int rCode = err.getErrorCode();
if (rCode == 144 || rCode == 34 || rCode == 63)
ui.get().setResult(RETURN_TWEET_CHANGED); ui.get().setResult(RETURN_TWEET_CHANGED);
boolean killActivity = ErrorHandler.printError(ui.get(), err);
if (killActivity)
ui.get().finish(); 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();
} }
} }
} }

View File

@ -370,20 +370,24 @@ public class DatabaseAdapter {
userColumn.put("following", user.getFollowing()); userColumn.put("following", user.getFollowing());
userColumn.put("follower", user.getFollower()); userColumn.put("follower", user.getFollower());
db.update("tweet", statColumn, "tweet.tweetID=" + tweet.getId(), null); final String[] tweetIdArg = {Long.toString(tweet.getId())};
db.update("user", userColumn, "user.userID=" + user.getId(), null); final String[] userIdArg = {Long.toString(user.getId())};
db.update("tweet", statColumn, "tweet.tweetID=?", tweetIdArg);
db.update("user", userColumn, "user.userID=?", userIdArg);
commit(db); commit(db);
} }
/** /**
* remove status * remove status
* *
* @param id Tweet ID * @param tweetId Tweet ID
*/ */
public void removeStatus(long id) { public void removeStatus(long tweetId) {
SQLiteDatabase db = getDbWrite(); SQLiteDatabase db = getDbWrite();
db.delete("tweet", "tweetID=" + id, null); final String[] delTwt = {Long.toString(tweetId)};
db.delete("favorit", "tweetID=" + id + " AND ownerID=" + homeId, null); final String[] delFav = {Long.toString(tweetId), Long.toString(homeId)};
db.delete("tweet", "tweetID=?", delTwt);
db.delete("favorit", "tweetID=? AND ownerID=?", delFav);
commit(db); commit(db);
} }
@ -396,8 +400,8 @@ public class DatabaseAdapter {
Tweet tweet = getStatus(tweetId); Tweet tweet = getStatus(tweetId);
if (tweet != null) { if (tweet != null) {
SQLiteDatabase db = getDbWrite(); SQLiteDatabase db = getDbWrite();
long retweetedId = tweet.getMyRetweetId(); final String[] args = {Long.toString(tweet.getMyRetweetId())};
db.delete("tweet", "tweetID=" + retweetedId, null); db.delete("tweet", "tweetID=?", args);
commit(db); commit(db);
} }
} }
@ -409,12 +413,14 @@ public class DatabaseAdapter {
*/ */
public void removeFavorite(long tweetId) { public void removeFavorite(long tweetId) {
SQLiteDatabase db = getDbWrite(); SQLiteDatabase db = getDbWrite();
final String[] delArgs = {Long.toString(tweetId), Long.toString(homeId)};
final String[] updateArgs = {Long.toString(tweetId)};
int register = getTweetStatus(db, tweetId); int register = getTweetStatus(db, tweetId);
register &= ~FAV_MASK; register &= ~FAV_MASK;
ContentValues status = new ContentValues(); ContentValues status = new ContentValues();
status.put("statusregister", register); status.put("statusregister", register);
db.delete("favorit", "tweetID=" + tweetId + " AND ownerID=" + homeId, null); db.delete("favorit", "tweetID=? AND ownerID=?", delArgs);
db.update("tweet", status, "tweet.tweetID=" + tweetId, null); db.update("tweet", status, "tweet.tweetID=?", updateArgs);
commit(db); commit(db);
} }
@ -425,7 +431,8 @@ public class DatabaseAdapter {
*/ */
public void deleteDm(long id) { public void deleteDm(long id) {
SQLiteDatabase db = getDbWrite(); SQLiteDatabase db = getDbWrite();
db.delete("message", "messageID=" + id, null); final String[] messageId = {Long.toString(id)};
db.delete("message", "messageID=?", messageId);
commit(db); commit(db);
} }

View File

@ -94,7 +94,7 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On
public void onStart() { public void onStart() {
super.onStart(); super.onStart();
if (tweetTask == null) { if (tweetTask == null) {
load(); load(false);
} }
} }
@ -103,7 +103,7 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
if (tweetTask == null) { if (tweetTask == null) {
load(); load(false);
} }
} }
@ -126,7 +126,7 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On
@Override @Override
public void onRefresh() { 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) { switch (mode) {
case HOME: case HOME:
tweetTask = new TweetLoader(root, Mode.TL_HOME); tweetTask = new TweetLoader(root, Mode.TL_HOME);
@ -192,8 +192,10 @@ public class TweetListFragment extends Fragment implements OnRefreshListener, On
break; break;
case TWEET_ANSR: case TWEET_ANSR:
tweetTask = new TweetLoader(root, Mode.TWEET_ANS); if (loadAnswer) {
tweetTask.execute(id, search); tweetTask = new TweetLoader(root, Mode.TWEET_ANS);
tweetTask.execute(id, search);
}
break; break;
case SEARCH: case SEARCH:

View File

@ -18,6 +18,8 @@ import androidx.appcompat.app.AppCompatActivity;
import org.nuclearfog.twidda.R; import org.nuclearfog.twidda.R;
import org.nuclearfog.twidda.backend.StatusUploader; 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.backend.items.TweetHolder;
import org.nuclearfog.twidda.database.GlobalSettings; 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[] READ_STORAGE = {READ_EXTERNAL_STORAGE};
private static final String[] GET_MEDIA = {MediaStore.Images.Media.DATA}; 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_IMAGE = "image/*";
private static final String TYPE_VIDEO = "video/*.mp4 video/*.3gp video/*.gif "; private static final String TYPE_VIDEO = "video/*";
private static final int PICK_MEDIA = 3; private static final int PICK_MEDIA = 3;
private static final int CHECK_PERM = 4; private static final int CHECK_PERM = 4;
private static final int MAX_IMAGES = 4; private static final int MAX_IMAGES = 4;
@ -123,16 +125,10 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener {
if (cursor != null && cursor.moveToFirst()) { if (cursor != null && cursor.moveToFirst()) {
int index = cursor.getColumnIndex(GET_MEDIA[0]); int index = cursor.getColumnIndex(GET_MEDIA[0]);
String path = cursor.getString(index); String path = cursor.getString(index);
String ext = ""; FileType type = FilenameTools.getFileType(path);
int pos = path.lastIndexOf(".") + 1;
if (pos > 0 && pos < path.length()) { switch (type) {
ext = path.substring(pos); case IMAGE:
ext = ext.toLowerCase();
}
switch (ext) {
case "png":
case "jpg":
case "jpeg":
if (mode == Mode.NONE) if (mode == Mode.NONE)
mode = Mode.IMAGE; mode = Mode.IMAGE;
if (mediaPath.size() < MAX_IMAGES && mode == Mode.IMAGE) { if (mediaPath.size() < MAX_IMAGES && mode == Mode.IMAGE) {
@ -145,7 +141,7 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener {
} }
break; break;
case "gif": case ANGIF:
if (mode == Mode.NONE) if (mode == Mode.NONE)
mode = Mode.GIF; mode = Mode.GIF;
if (mode == Mode.GIF) { if (mode == Mode.GIF) {
@ -155,8 +151,7 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener {
} }
break; break;
case "mp4": case VIDEO:
case "3gp":
if (mode == Mode.NONE) if (mode == Mode.NONE)
mode = Mode.VIDEO; mode = Mode.VIDEO;
if (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); mediaIntent.setDataAndType(EXTERNAL_CONTENT_URI, TYPE_IMAGE + TYPE_VIDEO);
startActivityForResult(mediaIntent, PICK_MEDIA); startActivityForResult(mediaIntent, PICK_MEDIA);
} else if (mode == Mode.IMAGE) { } 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); startActivityForResult(imageIntent, PICK_MEDIA);
} }
} }

View File

@ -2,8 +2,7 @@
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent">
android:layout_margin="@dimen/preview_margin">
<FrameLayout <FrameLayout
android:id="@+id/image_window" android:id="@+id/image_window"
@ -30,7 +29,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="bottom" android:layout_gravity="bottom"
android:scrollbars="horizontal" /> android:scrollbars="horizontal"
android:layout_margin="@dimen/preview_margin" />
</FrameLayout> </FrameLayout>