From a370ce10eac6ecb1765801301c31675f3b50a622 Mon Sep 17 00:00:00 2001 From: nuclearfog Date: Thu, 24 Dec 2020 18:33:38 +0100 Subject: [PATCH] bug fix, renamed variables, added comments --- .../twidda/activity/ListDetail.java | 5 +- .../nuclearfog/twidda/activity/ListPopup.java | 17 +-- .../twidda/activity/TweetActivity.java | 5 +- .../twidda/activity/TweetPopup.java | 3 + .../twidda/activity/UserProfile.java | 5 +- .../nuclearfog/twidda/backend/ListAction.java | 5 +- .../nuclearfog/twidda/backend/UserLoader.java | 10 +- .../twidda/fragment/TweetFragment.java | 113 ++++++++++++------ .../twidda/fragment/UserFragment.java | 24 ++-- .../twidda/fragment/UserListFragment.java | 28 +++-- 10 files changed, 135 insertions(+), 80 deletions(-) diff --git a/app/src/main/java/org/nuclearfog/twidda/activity/ListDetail.java b/app/src/main/java/org/nuclearfog/twidda/activity/ListDetail.java index d5016f36..59e7e2a4 100644 --- a/app/src/main/java/org/nuclearfog/twidda/activity/ListDetail.java +++ b/app/src/main/java/org/nuclearfog/twidda/activity/ListDetail.java @@ -116,8 +116,9 @@ public class ListDetail extends AppCompatActivity implements OnTabSelectedListen Bundle param = getIntent().getExtras(); if (param != null) { boolean currentUserOwnsList; - if (param.containsKey(KEY_LIST_DATA)) { - userList = (UserList) param.getSerializable(KEY_LIST_DATA); + Object data = param.getSerializable(KEY_LIST_DATA); + if (data instanceof UserList) { + userList = (UserList) data; toolbar.setTitle(userList.getTitle()); toolbar.setSubtitle(userList.getDescription()); currentUserOwnsList = userList.isListOwner(); diff --git a/app/src/main/java/org/nuclearfog/twidda/activity/ListPopup.java b/app/src/main/java/org/nuclearfog/twidda/activity/ListPopup.java index 9bfdcc80..4c66b92e 100644 --- a/app/src/main/java/org/nuclearfog/twidda/activity/ListPopup.java +++ b/app/src/main/java/org/nuclearfog/twidda/activity/ListPopup.java @@ -68,13 +68,16 @@ public class ListPopup extends AppCompatActivity implements OnClickListener, OnD FontTool.setViewFont(settings, root); Bundle extras = getIntent().getExtras(); - if (extras != null && extras.containsKey(KEY_LIST_EDITOR_DATA)) { - userList = (UserList) extras.getSerializable(KEY_LIST_EDITOR_DATA); - titleInput.setText(userList.getTitle()); - subTitleInput.setText(userList.getDescription()); - visibility.setChecked(!userList.isPrivate()); - popupTitle.setText(R.string.menu_edit_list); - updateButton.setText(R.string.update_list); + if (extras != null) { + Object data = extras.getSerializable(KEY_LIST_EDITOR_DATA); + if (data instanceof UserList) { + userList = (UserList) data; + titleInput.setText(userList.getTitle()); + subTitleInput.setText(userList.getDescription()); + visibility.setChecked(!userList.isPrivate()); + popupTitle.setText(R.string.menu_edit_list); + updateButton.setText(R.string.update_list); + } } leaveDialog = DialogBuilder.create(this, LISTPOPUP_LEAVE, this); updateButton.setOnClickListener(this); diff --git a/app/src/main/java/org/nuclearfog/twidda/activity/TweetActivity.java b/app/src/main/java/org/nuclearfog/twidda/activity/TweetActivity.java index f0b1c2c7..cc357d12 100644 --- a/app/src/main/java/org/nuclearfog/twidda/activity/TweetActivity.java +++ b/app/src/main/java/org/nuclearfog/twidda/activity/TweetActivity.java @@ -134,8 +134,9 @@ public class TweetActivity extends AppCompatActivity implements OnClickListener, FragmentAdapter adapter = new FragmentAdapter(getSupportFragmentManager()); if (param != null) { String username; - if (param.containsKey(KEY_TWEET_DATA)) { - tweet = (Tweet) param.getSerializable(KEY_TWEET_DATA); + Object data = param.getSerializable(KEY_TWEET_DATA); + if (data instanceof Tweet) { + tweet = (Tweet) data; username = tweet.getUser().getScreenname(); tweetId = tweet.getId(); } else { diff --git a/app/src/main/java/org/nuclearfog/twidda/activity/TweetPopup.java b/app/src/main/java/org/nuclearfog/twidda/activity/TweetPopup.java index ca9f06e1..d286547a 100644 --- a/app/src/main/java/org/nuclearfog/twidda/activity/TweetPopup.java +++ b/app/src/main/java/org/nuclearfog/twidda/activity/TweetPopup.java @@ -1,5 +1,6 @@ package org.nuclearfog.twidda.activity; +import android.annotation.SuppressLint; import android.app.Dialog; import android.content.ActivityNotFoundException; import android.content.Context; @@ -179,6 +180,7 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener, Lo } + @SuppressLint("MissingPermission") @Override protected void onDestroy() { if (uploaderAsync != null && uploaderAsync.getStatus() == RUNNING) @@ -457,6 +459,7 @@ public class TweetPopup extends AppCompatActivity implements OnClickListener, Lo /** * Get current GPS location to attach to tweet */ + @SuppressLint("MissingPermission") // suppressing because of an android studio bug private void getLocation() { boolean accessGranted = true; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { diff --git a/app/src/main/java/org/nuclearfog/twidda/activity/UserProfile.java b/app/src/main/java/org/nuclearfog/twidda/activity/UserProfile.java index 0c389064..444e0a50 100644 --- a/app/src/main/java/org/nuclearfog/twidda/activity/UserProfile.java +++ b/app/src/main/java/org/nuclearfog/twidda/activity/UserProfile.java @@ -197,8 +197,9 @@ public class UserProfile extends AppCompatActivity implements OnClickListener, O Bundle param = getIntent().getExtras(); if (param != null) { - if (param.containsKey(KEY_PROFILE_DATA)) { - user = (User) param.getSerializable(KEY_PROFILE_DATA); + Object data = param.getSerializable(KEY_PROFILE_DATA); + if (data instanceof User) { + user = (User) data; userId = user.getId(); username = user.getScreenname(); } else { diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/ListAction.java b/app/src/main/java/org/nuclearfog/twidda/backend/ListAction.java index 712c236a..e5a55018 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/ListAction.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/ListAction.java @@ -41,6 +41,8 @@ public class ListAction extends AsyncTask { private EngineException err; private Action action; + private long missingListId; + /** * @param callback Callback to update list information * @param action what action should be performed @@ -72,6 +74,7 @@ public class ListAction extends AsyncTask { } } catch (EngineException err) { this.err = err; + missingListId = ids[0]; } return null; } @@ -84,7 +87,7 @@ public class ListAction extends AsyncTask { if (userList != null) { callback.onSuccess(userList, action); } else { - callback.onFailure(err, userList.getId()); + callback.onFailure(err, missingListId); } } } diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/UserLoader.java b/app/src/main/java/org/nuclearfog/twidda/backend/UserLoader.java index 84385f5a..4a0d466d 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/UserLoader.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/UserLoader.java @@ -23,7 +23,7 @@ public class UserLoader extends AsyncTask { /** * actions to perform */ - public enum Action { + public enum Type { /** * load follower list */ @@ -60,16 +60,16 @@ public class UserLoader extends AsyncTask { private final WeakReference callback; private final TwitterEngine mTwitter; - private final Action action; + private final Type type; private final String search; private final long id; - public UserLoader(UserFragment callback, Action action, long id, String search) { + public UserLoader(UserFragment callback, Type type, long id, String search) { super(); this.callback = new WeakReference<>(callback); mTwitter = TwitterEngine.getInstance(callback.getContext()); - this.action = action; + this.type = type; this.search = search; this.id = id; } @@ -79,7 +79,7 @@ public class UserLoader extends AsyncTask { protected TwitterUserList doInBackground(Long[] param) { try { long cursor = param[0]; - switch (action) { + switch (type) { case FOLLOWS: return mTwitter.getFollower(id, cursor); diff --git a/app/src/main/java/org/nuclearfog/twidda/fragment/TweetFragment.java b/app/src/main/java/org/nuclearfog/twidda/fragment/TweetFragment.java index 1f5a3f9a..dec20d56 100644 --- a/app/src/main/java/org/nuclearfog/twidda/fragment/TweetFragment.java +++ b/app/src/main/java/org/nuclearfog/twidda/fragment/TweetFragment.java @@ -47,25 +47,73 @@ public class TweetFragment extends ListFragment implements TweetClickListener { */ public static final String INTENT_TWEET_REMOVED_ID = "tweet_removed_id"; + /** + * setup list for home timeline + */ public static final int TWEET_FRAG_HOME = 1; + + /** + * setup list for mention timeline + */ public static final int TWEET_FRAG_MENT = 2; + + /** + * setup list for user tweets + */ public static final int TWEET_FRAG_TWEETS = 3; + + /** + * setup list for user favorites + */ public static final int TWEET_FRAG_FAVORS = 4; + + /** + * setup list for tweet replies + */ public static final int TWEET_FRAG_ANSWER = 5; + + /** + * setup list for search + */ public static final int TWEET_FRAG_SEARCH = 6; + + /** + * setup list for user list tweets + */ public static final int TWEET_FRAG_LIST = 7; + /** + * replace all items from list + */ public static final int CLEAR_LIST = -1; + + /** + * return code if a tweet was not found + */ public static final int RETURN_TWEET_CHANGED = 1; + + /** + * request code to check for tweet changes + */ private static final int REQUEST_TWEET_CHANGED = 2; private TweetLoader tweetTask; private TweetAdapter adapter; + private String search = ""; + private int mode = 0; + private long id = 0; + @Override protected void onCreated() { settings = GlobalSettings.getInstance(requireContext()); + Bundle param = getArguments(); + if (param != null) { + mode = param.getInt(KEY_FRAG_TWEET_MODE, 0); + id = param.getLong(KEY_FRAG_TWEET_ID, 0); + search = param.getString(KEY_FRAG_TWEET_SEARCH, ""); + } } @@ -143,7 +191,6 @@ public class TweetFragment extends ListFragment implements TweetClickListener { } } - /** * Set Tweet data to list * @@ -159,7 +206,6 @@ public class TweetFragment extends ListFragment implements TweetClickListener { setRefresh(false); } - /** * called from {@link TweetLoader} if an error occurs * @@ -171,7 +217,6 @@ public class TweetFragment extends ListFragment implements TweetClickListener { setRefresh(false); } - /** * load content into the list * @@ -180,47 +225,41 @@ public class TweetFragment extends ListFragment implements TweetClickListener { * @param index index where tweet list should be added */ private void load(long sinceId, long maxId, int index) { - Bundle param = getArguments(); - if (param != null) { - int mode = param.getInt(KEY_FRAG_TWEET_MODE, 0); - long id = param.getLong(KEY_FRAG_TWEET_ID, 0); - String search = param.getString(KEY_FRAG_TWEET_SEARCH, ""); - ListType action = ListType.NONE; + ListType listType = ListType.NONE; - switch (mode) { - case TWEET_FRAG_HOME: - action = ListType.TL_HOME; - break; + switch (mode) { + case TWEET_FRAG_HOME: + listType = ListType.TL_HOME; + break; - case TWEET_FRAG_MENT: - action = ListType.TL_MENT; - break; + case TWEET_FRAG_MENT: + listType = ListType.TL_MENT; + break; - case TWEET_FRAG_TWEETS: - action = ListType.USR_TWEETS; - break; + case TWEET_FRAG_TWEETS: + listType = ListType.USR_TWEETS; + break; - case TWEET_FRAG_FAVORS: - action = ListType.USR_FAVORS; - break; + case TWEET_FRAG_FAVORS: + listType = ListType.USR_FAVORS; + break; - case TWEET_FRAG_ANSWER: - if (tweetTask != null || settings.getAnswerLoad()) - action = ListType.REPLIES; - else - action = ListType.DB_ANS; - break; + case TWEET_FRAG_ANSWER: + if (tweetTask != null || settings.getAnswerLoad()) + listType = ListType.REPLIES; + else + listType = ListType.DB_ANS; + break; - case TWEET_FRAG_SEARCH: - action = ListType.TWEET_SEARCH; - break; + case TWEET_FRAG_SEARCH: + listType = ListType.TWEET_SEARCH; + break; - case TWEET_FRAG_LIST: - action = ListType.USERLIST; - break; - } - tweetTask = new TweetLoader(this, action, id, search, index); - tweetTask.execute(sinceId, maxId); + case TWEET_FRAG_LIST: + listType = ListType.USERLIST; + break; } + tweetTask = new TweetLoader(this, listType, id, search, index); + tweetTask.execute(sinceId, maxId); } } \ No newline at end of file diff --git a/app/src/main/java/org/nuclearfog/twidda/fragment/UserFragment.java b/app/src/main/java/org/nuclearfog/twidda/fragment/UserFragment.java index 3f528a7a..98545e7f 100644 --- a/app/src/main/java/org/nuclearfog/twidda/fragment/UserFragment.java +++ b/app/src/main/java/org/nuclearfog/twidda/fragment/UserFragment.java @@ -12,7 +12,7 @@ import org.nuclearfog.twidda.adapter.UserAdapter.UserClickListener; import org.nuclearfog.twidda.backend.ListManager; import org.nuclearfog.twidda.backend.ListManager.ListManagerCallback; import org.nuclearfog.twidda.backend.UserLoader; -import org.nuclearfog.twidda.backend.UserLoader.Action; +import org.nuclearfog.twidda.backend.UserLoader.Type; import org.nuclearfog.twidda.backend.engine.EngineException; import org.nuclearfog.twidda.backend.holder.TwitterUserList; import org.nuclearfog.twidda.backend.items.User; @@ -39,7 +39,7 @@ public class UserFragment extends ListFragment implements UserClickListener, public static final String KEY_FRAG_USER_MODE = "user_mode"; /** - * key to define search string + * key to define search string like username */ public static final String KEY_FRAG_USER_SEARCH = "user_search"; @@ -143,6 +143,7 @@ public class UserFragment extends ListFragment implements UserClickListener, @Override protected UserAdapter initAdapter() { adapter = new UserAdapter(this, settings); + adapter.enableDeleteButton(delUser); return adapter; } @@ -233,38 +234,37 @@ public class UserFragment extends ListFragment implements UserClickListener, * @param cursor cursor of the list or {@link UserLoader#NO_CURSOR} if there is none */ private void load(long cursor) { - Action action = Action.NONE; + Type listType = Type.NONE; switch (mode) { case USER_FRAG_FOLLOWS: - action = Action.FOLLOWS; + listType = Type.FOLLOWS; break; case USER_FRAG_FRIENDS: - action = Action.FRIENDS; + listType = UserLoader.Type.FRIENDS; break; case USER_FRAG_RETWEET: - action = Action.RETWEET; + listType = Type.RETWEET; break; case USER_FRAG_FAVORIT: - action = Action.FAVORIT; + listType = Type.FAVORIT; break; case USER_FRAG_SEARCH: - action = Action.SEARCH; + listType = Type.SEARCH; break; case USER_FRAG_SUBSCR: - action = Action.SUBSCRIBER; + listType = Type.SUBSCRIBER; break; case USER_FRAG_LISTS: - action = Action.LISTMEMBER; + listType = Type.LISTMEMBER; break; } - adapter.enableDeleteButton(delUser); - userTask = new UserLoader(this, action, id, search); + userTask = new UserLoader(this, listType, id, search); userTask.execute(cursor); if (cursor == NO_CURSOR) { setRefresh(true); diff --git a/app/src/main/java/org/nuclearfog/twidda/fragment/UserListFragment.java b/app/src/main/java/org/nuclearfog/twidda/fragment/UserListFragment.java index 64b6b3d5..530f47e9 100644 --- a/app/src/main/java/org/nuclearfog/twidda/fragment/UserListFragment.java +++ b/app/src/main/java/org/nuclearfog/twidda/fragment/UserListFragment.java @@ -74,9 +74,19 @@ public class UserListFragment extends ListFragment implements ListClickListener private ListLoader listTask; private ListAdapter adapter; + private String ownerName = ""; + private long id = 0; + private int type = 0; + @Override protected void onCreated() { + Bundle param = getArguments(); + if (param != null) { + id = param.getLong(KEY_FRAG_LIST_OWNER_ID, -1); + ownerName = param.getString(KEY_FRAG_LIST_OWNER_NAME, ""); + type = param.getInt(KEY_FRAG_LIST_LIST_TYPE); + } settings = GlobalSettings.getInstance(requireContext()); } @@ -179,18 +189,12 @@ public class UserListFragment extends ListFragment implements ListClickListener * load content into the list */ private void load(long cursor) { - Bundle param = getArguments(); - if (param != null) { - long id = param.getLong(KEY_FRAG_LIST_OWNER_ID, -1); - String ownerName = param.getString(KEY_FRAG_LIST_OWNER_NAME, ""); - int type = param.getInt(KEY_FRAG_LIST_LIST_TYPE); - if (type == LIST_USER_OWNS) { - listTask = new ListLoader(this, LOAD_USERLISTS, id, ownerName); - listTask.execute(cursor); - } else if (type == LIST_USER_SUBSCR_TO) { - listTask = new ListLoader(this, LOAD_MEMBERSHIPS, id, ownerName); - listTask.execute(cursor); - } + if (type == LIST_USER_OWNS) { + listTask = new ListLoader(this, LOAD_USERLISTS, id, ownerName); + listTask.execute(cursor); + } else if (type == LIST_USER_SUBSCR_TO) { + listTask = new ListLoader(this, LOAD_MEMBERSHIPS, id, ownerName); + listTask.execute(cursor); } } } \ No newline at end of file