diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2015-09-05 19:06:46 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2015-09-05 19:06:46 +0900 |
commit | d87e8c2b04042b2d72fa11d016ae3e0bd4652681 (patch) | |
tree | c80c03351b87f9e33ca432a976d958049113de9b /app/src/main/java/net/lacolaco/smileessence/view | |
parent | 24ca4f49f0859f572ed73ea13d76a89716e4c176 (diff) | |
download | SmileEssence-d87e8c2b04042b2d72fa11d016ae3e0bd4652681.tar.gz |
[WIP] twitter4j.{Status,User,DirectMessage} を排除
Diffstat (limited to 'app/src/main/java/net/lacolaco/smileessence/view')
17 files changed, 221 insertions, 273 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/HomeFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/HomeFragment.java index dfadebaf..ad39f65b 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/HomeFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/HomeFragment.java @@ -30,6 +30,7 @@ import com.handmark.pulltorefresh.library.PullToRefreshBase; import net.lacolaco.smileessence.activity.MainActivity; import net.lacolaco.smileessence.entity.Account; +import net.lacolaco.smileessence.entity.Tweet; import net.lacolaco.smileessence.twitter.StatusFilter; import net.lacolaco.smileessence.twitter.TwitterApi; import net.lacolaco.smileessence.twitter.task.HomeTimelineTask; @@ -41,6 +42,9 @@ import net.lacolaco.smileessence.viewmodel.StatusViewModel; import twitter4j.Paging; import twitter4j.Twitter; +import java.util.List; +import java.util.ListIterator; + public class HomeFragment extends CustomListFragment { // --------------------- GETTER / SETTER METHODS --------------------- @@ -83,11 +87,11 @@ public class HomeFragment extends CustomListFragment { } new HomeTimelineTask(twitter, activity, paging) { @Override - protected void onPostExecute(twitter4j.Status[] statuses) { - super.onPostExecute(statuses); - for (int i = statuses.length - 1; i >= 0; i--) { - twitter4j.Status status = statuses[i]; - StatusViewModel viewModel = new StatusViewModel(status, currentAccount); + protected void onPostExecute(List<Tweet> tweets) { + super.onPostExecute(tweets); + ListIterator<Tweet> li = tweets.listIterator(tweets.size()); + while (li.hasPrevious()) { + StatusViewModel viewModel = new StatusViewModel(li.previous()); adapter.addToTop(viewModel); StatusFilter.filter(activity, viewModel); } @@ -109,10 +113,10 @@ public class HomeFragment extends CustomListFragment { } new HomeTimelineTask(twitter, activity, paging) { @Override - protected void onPostExecute(twitter4j.Status[] statuses) { - super.onPostExecute(statuses); - for (twitter4j.Status status : statuses) { - StatusViewModel viewModel = new StatusViewModel(status, currentAccount); + protected void onPostExecute(List<Tweet> tweets) { + super.onPostExecute(tweets); + for (Tweet tweet : tweets) { + StatusViewModel viewModel = new StatusViewModel(tweet); adapter.addToBottom(viewModel); StatusFilter.filter(activity, viewModel); } diff --git a/app/src/main/java/net/lacolaco/smileessence/view/MentionsFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/MentionsFragment.java index 3cbdfd4b..6d932eb3 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/MentionsFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/MentionsFragment.java @@ -30,6 +30,7 @@ import com.handmark.pulltorefresh.library.PullToRefreshBase; import net.lacolaco.smileessence.activity.MainActivity; import net.lacolaco.smileessence.entity.Account; +import net.lacolaco.smileessence.entity.Tweet; import net.lacolaco.smileessence.twitter.TwitterApi; import net.lacolaco.smileessence.twitter.task.MentionsTimelineTask; import net.lacolaco.smileessence.twitter.util.TwitterUtils; @@ -39,6 +40,8 @@ import net.lacolaco.smileessence.viewmodel.StatusViewModel; import twitter4j.Paging; import twitter4j.Twitter; +import java.util.List; + public class MentionsFragment extends CustomListFragment { // --------------------- GETTER / SETTER METHODS --------------------- @@ -70,11 +73,10 @@ public class MentionsFragment extends CustomListFragment { } new MentionsTimelineTask(twitter, activity, paging) { @Override - protected void onPostExecute(twitter4j.Status[] statuses) { - super.onPostExecute(statuses); - for (int i = statuses.length - 1; i >= 0; i--) { - twitter4j.Status status = statuses[i]; - adapter.addToTop(new StatusViewModel(status, currentAccount)); + protected void onPostExecute(List<Tweet> tweets) { + super.onPostExecute(tweets); + for (int i = tweets.size() - 1; i >= 0; i--) { + adapter.addToTop(new StatusViewModel(tweets.get(i))); } updateListViewWithNotice(refreshView.getRefreshableView(), adapter, true); refreshView.onRefreshComplete(); @@ -94,10 +96,10 @@ public class MentionsFragment extends CustomListFragment { } new MentionsTimelineTask(twitter, activity, paging) { @Override - protected void onPostExecute(twitter4j.Status[] statuses) { - super.onPostExecute(statuses); - for (twitter4j.Status status : statuses) { - adapter.addToBottom(new StatusViewModel(status, currentAccount)); + protected void onPostExecute(List<Tweet> tweets) { + super.onPostExecute(tweets); + for (Tweet tweet : tweets) { + adapter.addToBottom(new StatusViewModel(tweet)); } updateListViewWithNotice(refreshView.getRefreshableView(), adapter, false); refreshView.onRefreshComplete(); diff --git a/app/src/main/java/net/lacolaco/smileessence/view/MessagesFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/MessagesFragment.java index 0a10ba53..994b265c 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/MessagesFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/MessagesFragment.java @@ -36,10 +36,12 @@ import net.lacolaco.smileessence.twitter.util.TwitterUtils; import net.lacolaco.smileessence.view.adapter.MessageListAdapter; import net.lacolaco.smileessence.viewmodel.MessageViewModel; -import twitter4j.DirectMessage; +import net.lacolaco.smileessence.entity.DirectMessage; import twitter4j.Paging; import twitter4j.Twitter; +import java.util.List; + /** * Fragment of messages list */ @@ -74,10 +76,10 @@ public class MessagesFragment extends CustomListFragment { } new DirectMessagesTask(twitter, activity, paging) { @Override - protected void onPostExecute(DirectMessage[] directMessages) { + protected void onPostExecute(List<DirectMessage> directMessages) { super.onPostExecute(directMessages); - for (int i = directMessages.length - 1; i >= 0; i--) { - adapter.addToTop(new MessageViewModel(directMessages[i], currentAccount)); + for (int i = directMessages.size() - 1; i >= 0; i--) { + adapter.addToTop(new MessageViewModel(directMessages.get(i))); } updateListViewWithNotice(refreshView.getRefreshableView(), adapter, true); refreshView.onRefreshComplete(); @@ -97,10 +99,10 @@ public class MessagesFragment extends CustomListFragment { } new DirectMessagesTask(twitter, activity, paging) { @Override - protected void onPostExecute(DirectMessage[] directMessages) { + protected void onPostExecute(List<DirectMessage> directMessages) { super.onPostExecute(directMessages); for (DirectMessage directMessage : directMessages) { - adapter.addToBottom(new MessageViewModel(directMessage, currentAccount)); + adapter.addToBottom(new MessageViewModel(directMessage)); } updateListViewWithNotice(refreshView.getRefreshableView(), adapter, false); refreshView.onRefreshComplete(); diff --git a/app/src/main/java/net/lacolaco/smileessence/view/PostFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/PostFragment.java index 23358f46..fd980bff 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/PostFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/PostFragment.java @@ -43,6 +43,7 @@ import com.twitter.Validator; import net.lacolaco.smileessence.R; import net.lacolaco.smileessence.activity.MainActivity; import net.lacolaco.smileessence.entity.Account; +import net.lacolaco.smileessence.entity.Tweet; import net.lacolaco.smileessence.logging.Logger; import net.lacolaco.smileessence.preference.UserPreferenceHelper; import net.lacolaco.smileessence.twitter.TwitterApi; @@ -149,9 +150,9 @@ public class PostFragment extends Fragment implements TextWatcher, View.OnFocusC final Account account = activity.getCurrentAccount(); TwitterUtils.tryGetStatus(account, postState.getInReplyToStatusID(), new TwitterUtils.StatusCallback() { @Override - public void success(Status status) { + public void success(Tweet tweet) { View header = viewGroupReply.findViewById(R.id.layout_post_reply_status); - header = new StatusViewModel(status, account).getView(activity, activity.getLayoutInflater(), header); + header = new StatusViewModel(tweet).getView(activity, activity.getLayoutInflater(), header); header.setBackgroundColor(getResources().getColor(R.color.transparent)); header.setClickable(false); } diff --git a/app/src/main/java/net/lacolaco/smileessence/view/SearchFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/SearchFragment.java index 9372a5a1..3313bda1 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/SearchFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/SearchFragment.java @@ -47,6 +47,7 @@ import net.lacolaco.smileessence.command.Command; import net.lacolaco.smileessence.command.CommandOpenSearch; import net.lacolaco.smileessence.entity.Account; import net.lacolaco.smileessence.entity.SearchQuery; +import net.lacolaco.smileessence.entity.Tweet; import net.lacolaco.smileessence.notification.NotificationType; import net.lacolaco.smileessence.notification.Notificator; import net.lacolaco.smileessence.twitter.StatusFilter; @@ -154,7 +155,7 @@ public class SearchFragment extends CustomListFragment implements View.OnClickLi for (int i = tweets.size() - 1; i >= 0; i--) { twitter4j.Status status = tweets.get(i); if (!status.isRetweet()) { - StatusViewModel viewModel = new StatusViewModel(status, currentAccount); + StatusViewModel viewModel = new StatusViewModel(Tweet.fromTwitter(status)); adapter.addToTop(viewModel); StatusFilter.filter(activity, viewModel); } @@ -196,7 +197,7 @@ public class SearchFragment extends CustomListFragment implements View.OnClickLi List<twitter4j.Status> tweets = queryResult.getTweets(); for (twitter4j.Status status : tweets) { if (!status.isRetweet()) { - StatusViewModel viewModel = new StatusViewModel(status, currentAccount); + StatusViewModel viewModel = new StatusViewModel(Tweet.fromTwitter(status)); adapter.addToBottom(viewModel); StatusFilter.filter(activity, viewModel); } diff --git a/app/src/main/java/net/lacolaco/smileessence/view/UserListFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/UserListFragment.java index 89fe984f..f1922092 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/UserListFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/UserListFragment.java @@ -40,6 +40,7 @@ import com.handmark.pulltorefresh.library.PullToRefreshListView; import net.lacolaco.smileessence.R; import net.lacolaco.smileessence.activity.MainActivity; import net.lacolaco.smileessence.entity.Account; +import net.lacolaco.smileessence.entity.Tweet; import net.lacolaco.smileessence.notification.Notificator; import net.lacolaco.smileessence.twitter.StatusFilter; import net.lacolaco.smileessence.twitter.TwitterApi; @@ -53,6 +54,8 @@ import net.lacolaco.smileessence.viewmodel.UserListListAdapter; import twitter4j.Paging; import twitter4j.Twitter; +import java.util.List; + public class UserListFragment extends CustomListFragment implements View.OnClickListener { // ------------------------------ FIELDS ------------------------------ @@ -114,13 +117,12 @@ public class UserListFragment extends CustomListFragment implements View.OnClick if (adapter.getCount() > 0) { paging.setSinceId(adapter.getTopID()); } - new UserListStatusesTask(twitter, listFullName, activity, paging) { + new UserListStatusesTask(twitter, activity, listFullName, paging) { @Override - protected void onPostExecute(twitter4j.Status[] statuses) { - super.onPostExecute(statuses); - for (int i = statuses.length - 1; i >= 0; i--) { - twitter4j.Status status = statuses[i]; - StatusViewModel statusViewModel = new StatusViewModel(status, activity.getCurrentAccount()); + protected void onPostExecute(List<Tweet> tweets) { + super.onPostExecute(tweets); + for (int i = tweets.size() - 1; i >= 0; i--) { + StatusViewModel statusViewModel = new StatusViewModel(tweets.get(i)); adapter.addToTop(statusViewModel); StatusFilter.filter(activity, statusViewModel); } @@ -151,13 +153,12 @@ public class UserListFragment extends CustomListFragment implements View.OnClick if (adapter.getCount() > 0) { paging.setMaxId(adapter.getLastID() - 1); } - new UserListStatusesTask(twitter, listFullName, activity, paging) { + new UserListStatusesTask(twitter, activity, listFullName, paging) { @Override - protected void onPostExecute(twitter4j.Status[] statuses) { - super.onPostExecute(statuses); - for (int i = 0; i < statuses.length; i++) { - twitter4j.Status status = statuses[i]; - StatusViewModel statusViewModel = new StatusViewModel(status, activity.getCurrentAccount()); + protected void onPostExecute(List<Tweet> tweets) { + super.onPostExecute(tweets); + for (int i = 0; i < tweets.size(); i++) { + StatusViewModel statusViewModel = new StatusViewModel(tweets.get(i)); adapter.addToBottom(statusViewModel); StatusFilter.filter(activity, statusViewModel); } diff --git a/app/src/main/java/net/lacolaco/smileessence/view/adapter/MessageListAdapter.java b/app/src/main/java/net/lacolaco/smileessence/view/adapter/MessageListAdapter.java index b521e236..f9731a94 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/adapter/MessageListAdapter.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/adapter/MessageListAdapter.java @@ -43,11 +43,11 @@ public class MessageListAdapter extends CustomListAdapter<MessageViewModel> { // --------------------- GETTER / SETTER METHODS --------------------- public long getLastID() { - return ((MessageViewModel) getItem(getCount() - 1)).getID(); + return ((MessageViewModel) getItem(getCount() - 1)).getDirectMessage().getId(); } public long getTopID() { - return ((MessageViewModel) getItem(0)).getID(); + return ((MessageViewModel) getItem(0)).getDirectMessage().getId(); } // ------------------------ OVERRIDE METHODS ------------------------ @@ -78,7 +78,7 @@ public class MessageListAdapter extends CustomListAdapter<MessageViewModel> { Collections.sort(list, new Comparator<MessageViewModel>() { @Override public int compare(MessageViewModel lhs, MessageViewModel rhs) { - return rhs.getCreatedAt().compareTo(lhs.getCreatedAt()); + return rhs.getDirectMessage().getCreatedAt().compareTo(lhs.getDirectMessage().getCreatedAt()); } }); } @@ -91,7 +91,7 @@ public class MessageListAdapter extends CustomListAdapter<MessageViewModel> { Iterator<MessageViewModel> iterator = this.list.iterator(); while (iterator.hasNext()) { MessageViewModel message = iterator.next(); - if (message.getID() == messageID) { + if (message.getDirectMessage().getId() == messageID) { iterator.remove(); return message; } @@ -101,7 +101,7 @@ public class MessageListAdapter extends CustomListAdapter<MessageViewModel> { } private boolean preAdd(MessageViewModel item) { - removeByMessageID(item.getID()); + removeByMessageID(item.getDirectMessage().getId()); return true; } } diff --git a/app/src/main/java/net/lacolaco/smileessence/view/adapter/StatusListAdapter.java b/app/src/main/java/net/lacolaco/smileessence/view/adapter/StatusListAdapter.java index ece2eea8..e69e5214 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/adapter/StatusListAdapter.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/adapter/StatusListAdapter.java @@ -26,7 +26,7 @@ package net.lacolaco.smileessence.view.adapter; import android.app.Activity; -import net.lacolaco.smileessence.data.UserCache; +import net.lacolaco.smileessence.entity.MuteUserIds; import net.lacolaco.smileessence.viewmodel.StatusViewModel; import java.util.Collections; @@ -44,11 +44,11 @@ public class StatusListAdapter extends CustomListAdapter<StatusViewModel> { // --------------------- GETTER / SETTER METHODS --------------------- public long getLastID() { - return ((StatusViewModel) getItem(getCount() - 1)).getID(); + return ((StatusViewModel) getItem(getCount() - 1)).getTweet().getId(); } public long getTopID() { - return ((StatusViewModel) getItem(0)).getID(); + return ((StatusViewModel) getItem(0)).getTweet().getId(); } // ------------------------ OVERRIDE METHODS ------------------------ @@ -82,7 +82,7 @@ public class StatusListAdapter extends CustomListAdapter<StatusViewModel> { Collections.sort(list, new Comparator<StatusViewModel>() { @Override public int compare(StatusViewModel lhs, StatusViewModel rhs) { - return Long.valueOf(rhs.getID()).compareTo(lhs.getID()); + return Long.valueOf(rhs.getTweet().getId()).compareTo(lhs.getTweet().getId()); } }); } @@ -95,7 +95,7 @@ public class StatusListAdapter extends CustomListAdapter<StatusViewModel> { Iterator<StatusViewModel> iterator = this.list.iterator(); while (iterator.hasNext()) { StatusViewModel statusViewModel = iterator.next(); - if (statusViewModel.getID() == statusID || statusViewModel.getOriginal().getID() == statusID) { + if (statusViewModel.getTweet().getOriginalTweet().getId() == statusID) { iterator.remove(); } } @@ -103,11 +103,11 @@ public class StatusListAdapter extends CustomListAdapter<StatusViewModel> { } private boolean isBlockUser(StatusViewModel item) { - return UserCache.getInstance().isInvisibleUserID(item.getOriginalUserID()); + return MuteUserIds.isMuted(item.getTweet().getOriginalTweet().getUser().getId()); } private boolean preAdd(StatusViewModel item) { - removeByStatusID(item.getID()); + removeByStatusID(item.getTweet().getId()); return !isBlockUser(item); } } diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageDetailDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageDetailDialogFragment.java index 76b6e99d..bbe71d47 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageDetailDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageDetailDialogFragment.java @@ -34,13 +34,10 @@ import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.ListView; -import com.google.common.collect.Lists; - import net.lacolaco.smileessence.R; import net.lacolaco.smileessence.activity.MainActivity; import net.lacolaco.smileessence.command.Command; import net.lacolaco.smileessence.command.CommandOpenURL; -import net.lacolaco.smileessence.data.DirectMessageCache; import net.lacolaco.smileessence.entity.Account; import net.lacolaco.smileessence.notification.Notificator; import net.lacolaco.smileessence.twitter.TwitterApi; @@ -52,10 +49,8 @@ import net.lacolaco.smileessence.view.listener.ListItemClickListener; import net.lacolaco.smileessence.viewmodel.MessageViewModel; import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import twitter4j.DirectMessage; +import net.lacolaco.smileessence.entity.DirectMessage; import twitter4j.MediaEntity; import twitter4j.URLEntity; @@ -122,7 +117,7 @@ public class MessageDetailDialogFragment extends StackableDialogFragment impleme MainActivity activity = (MainActivity) getActivity(); final Account account = activity.getCurrentAccount(); - DirectMessage selectedMessage = DirectMessageCache.getInstance().get(getMessageID()); + DirectMessage selectedMessage = DirectMessage.fetch(getMessageID()); if (selectedMessage == null) { Notificator.publish(getActivity(), R.string.notice_error_get_messages); return new DisposeDialog(getActivity()); @@ -132,42 +127,43 @@ public class MessageDetailDialogFragment extends StackableDialogFragment impleme final MessageListAdapter adapter = new MessageListAdapter(getActivity()); listView.setAdapter(adapter); long replyToMessageId = -1; - ArrayList<DirectMessage> allMessages = Lists.newArrayList(DirectMessageCache.getInstance().all()); - Collections.sort(allMessages, new Comparator<DirectMessage>() { - @Override - public int compare(DirectMessage lhs, DirectMessage rhs) { - return rhs.getCreatedAt().compareTo(lhs.getCreatedAt()); - } - }); - for (DirectMessage directMessage : allMessages) { - if (selectedMessage.getId() == directMessage.getId()) { - continue; - } - if (directMessage.getCreatedAt().getTime() > selectedMessage.getCreatedAt().getTime()) { - continue; - } - if (directMessage.getSenderId() == selectedMessage.getRecipientId() && directMessage.getRecipientId() == selectedMessage.getSenderId()) { - replyToMessageId = directMessage.getId(); - break; - } - } - - if (replyToMessageId == -1) { - listView.setVisibility(View.GONE); - } else { - TwitterUtils.tryGetMessage(account, replyToMessageId, new TwitterUtils.MessageCallback() { - @Override - public void success(DirectMessage message) { - adapter.addToTop(new MessageViewModel(message, account)); - adapter.updateForce(); - } - - @Override - public void error() { - - } - }); - } + // ArrayList<DirectMessage> allMessages = Lists.newArrayList(DirectMessageCache.getInstance().all()); + // Collections.sort(allMessages, new Comparator<DirectMessage>() { + // @Override + // public int compare(DirectMessage lhs, DirectMessage rhs) { + // return rhs.getCreatedAt().compareTo(lhs.getCreatedAt()); + // } + // }); + // for (DirectMessage directMessage : allMessages) { + // if (selectedMessage.getId() == directMessage.getId()) { + // continue; + // } + // if (directMessage.getCreatedAt().getTime() > selectedMessage.getCreatedAt().getTime()) { + // continue; + // } + // if (directMessage.getSender().getId() == selectedMessage.getRecipient().getId() && + // directMessage.getRecipient().getId() == selectedMessage.getSender().getId()) { + // replyToMessageId = directMessage.getId(); + // break; + // } + // } + + // if (replyToMessageId == -1) { + listView.setVisibility(View.GONE); + // } else { + // TwitterUtils.tryGetMessage(account, replyToMessageId, new TwitterUtils.MessageCallback() { + // @Override + // public void success(DirectMessage message) { + // adapter.addToTop(new MessageViewModel(message)); + // adapter.updateForce(); + // } + + // @Override + // public void error() { + + // } + // }); + // } return new AlertDialog.Builder(getActivity()).setView(header).create(); } @@ -185,15 +181,15 @@ public class MessageDetailDialogFragment extends StackableDialogFragment impleme public void openSendMessageDialog(DirectMessage message) { SendMessageDialogFragment dialogFragment = new SendMessageDialogFragment(); - dialogFragment.setScreenName(message.getSenderScreenName()); + dialogFragment.setScreenName(message.getSender().getScreenName()); DialogHelper.showDialog(getActivity(), dialogFragment); } private ArrayList<Command> getCommands(Activity activity, DirectMessage message, Account account) { ArrayList<Command> commands = new ArrayList<>(); // URL - if (message.getURLEntities() != null) { - for (URLEntity urlEntity : message.getURLEntities()) { + if (message.getUrls() != null) { + for (URLEntity urlEntity : message.getUrls()) { commands.add(new CommandOpenURL(activity, urlEntity.getExpandedURL())); } } @@ -204,18 +200,18 @@ public class MessageDetailDialogFragment extends StackableDialogFragment impleme } private MediaEntity[] getMediaEntities(DirectMessage message) { - if (message.getExtendedMediaEntities().length == 0) { + if (message.getMedia().length == 0) { // direct message's media is contained also in url entities. return new MediaEntity[0]; } else { - return message.getExtendedMediaEntities(); + return message.getMedia(); } } private View getTitleView(MainActivity activity, Account account, DirectMessage message) { View view = activity.getLayoutInflater().inflate(R.layout.dialog_status_detail, null); View messageHeader = view.findViewById(R.id.layout_status_header); - MessageViewModel statusViewModel = new MessageViewModel(message, account); + MessageViewModel statusViewModel = new MessageViewModel(message); messageHeader = statusViewModel.getView(activity, activity.getLayoutInflater(), messageHeader); messageHeader.setClickable(false); int background = ((ColorDrawable) messageHeader.getBackground()).getColor(); @@ -252,7 +248,7 @@ public class MessageDetailDialogFragment extends StackableDialogFragment impleme } private boolean isDeletable(Account account, DirectMessage message) { - return message.getSenderId() == account.userID; + return message.getSender().getId() == account.userID; } private void openMenu(MainActivity activity) { diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageMenuDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageMenuDialogFragment.java index c4fd6028..d2c487b3 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageMenuDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageMenuDialogFragment.java @@ -40,7 +40,7 @@ import net.lacolaco.smileessence.view.adapter.CustomListAdapter; import java.util.ArrayList; import java.util.List; -import twitter4j.DirectMessage; +import net.lacolaco.smileessence.entity.DirectMessage; import twitter4j.HashtagEntity; import twitter4j.MediaEntity; import twitter4j.URLEntity; @@ -100,12 +100,12 @@ public class MessageMenuDialogFragment extends MenuDialogFragment { commands.add(command); } // Media - if (message.getURLEntities() != null) { - for (URLEntity urlEntity : message.getURLEntities()) { + if (message.getUrls() != null) { + for (URLEntity urlEntity : message.getUrls()) { commands.add(new CommandOpenURL(activity, urlEntity.getExpandedURL())); } } - for (MediaEntity mediaEntity : message.getExtendedMediaEntities().length == 0 ? message.getMediaEntities() : message.getExtendedMediaEntities()) { + for (MediaEntity mediaEntity : message.getMedia()) { commands.add(new CommandOpenURL(activity, mediaEntity.getMediaURL())); } } @@ -123,8 +123,8 @@ public class MessageMenuDialogFragment extends MenuDialogFragment { private ArrayList<Command> getHashtagCommands(Activity activity, DirectMessage status) { ArrayList<Command> commands = new ArrayList<>(); - if (status.getHashtagEntities() != null) { - for (HashtagEntity hashtagEntity : status.getHashtagEntities()) { + if (status.getHashtags() != null) { + for (HashtagEntity hashtagEntity : status.getHashtags()) { commands.add(new CommandOpenHashtagDialog(activity, hashtagEntity)); } } diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/QuoteDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/QuoteDialogFragment.java index e0f51d69..049c3ee2 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/QuoteDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/QuoteDialogFragment.java @@ -32,6 +32,7 @@ import net.lacolaco.smileessence.command.Command; import net.lacolaco.smileessence.command.status.StatusCommandTextQuote; import net.lacolaco.smileessence.command.status.StatusCommandURLQuote; import net.lacolaco.smileessence.entity.Account; +import net.lacolaco.smileessence.entity.Tweet; import net.lacolaco.smileessence.twitter.util.TwitterUtils; import net.lacolaco.smileessence.view.adapter.CustomListAdapter; @@ -67,8 +68,8 @@ public class QuoteDialogFragment extends MenuDialogFragment { TwitterUtils.tryGetStatus(account, getStatusID(), new TwitterUtils.StatusCallback() { @Override - public void success(Status status) { - List<Command> commands = getCommands(activity, status); + public void success(Tweet tweet) { + List<Command> commands = getCommands(activity, tweet); Command.filter(commands); for (Command command : commands) { adapter.addToBottom(command); @@ -85,10 +86,10 @@ public class QuoteDialogFragment extends MenuDialogFragment { // -------------------------- OTHER METHODS -------------------------- - public List<Command> getCommands(Activity activity, Status status) { + public List<Command> getCommands(Activity activity, Tweet tweet) { ArrayList<Command> commands = new ArrayList<>(); - commands.add(new StatusCommandTextQuote(activity, status)); - commands.add(new StatusCommandURLQuote(activity, status)); + commands.add(new StatusCommandTextQuote(activity, tweet)); + commands.add(new StatusCommandURLQuote(activity, tweet)); return commands; } } diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/ReviewDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/ReviewDialogFragment.java index 36cb1f6e..1e95d8be 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/ReviewDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/ReviewDialogFragment.java @@ -35,11 +35,10 @@ import android.widget.RatingBar; import net.lacolaco.smileessence.R; import net.lacolaco.smileessence.activity.MainActivity; -import net.lacolaco.smileessence.data.StatusCache; -import net.lacolaco.smileessence.twitter.util.TwitterUtils; +import net.lacolaco.smileessence.entity.Tweet; import net.lacolaco.smileessence.view.adapter.PostState; -import twitter4j.Status; +import net.lacolaco.smileessence.viewmodel.StatusViewModel; public class ReviewDialogFragment extends StackableDialogFragment implements View.OnClickListener { @@ -100,7 +99,8 @@ public class ReviewDialogFragment extends StackableDialogFragment implements Vie private void execute() { hideIME(); - Status status = StatusCache.getInstance().get(statusID); + Tweet tweet = Tweet.fetch(statusID).getOriginalTweet(); + StatusViewModel status = new StatusViewModel(tweet); int star = (int) ratingBar.getRating(); StringBuilder builder = new StringBuilder(); for (int i = 0; i < 5; i++) { @@ -113,8 +113,8 @@ public class ReviewDialogFragment extends StackableDialogFragment implements Vie String formatString = getFormatString(); String str = String.format(formatString, builder.toString(), - TwitterUtils.getOriginalStatus(status).getUser().getScreenName(), - TwitterUtils.getStatusURL(status)); + tweet.getUser().getScreenName(), + tweet.getTwitterUrl()); PostState.newState().beginTransaction() .setText(str) .setInReplyToStatusID(statusID) diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.java index 118273b9..d7e08af6 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.java @@ -40,8 +40,9 @@ import net.lacolaco.smileessence.R; import net.lacolaco.smileessence.activity.MainActivity; import net.lacolaco.smileessence.command.Command; import net.lacolaco.smileessence.command.CommandOpenURL; -import net.lacolaco.smileessence.data.StatusCache; import net.lacolaco.smileessence.entity.Account; +import net.lacolaco.smileessence.entity.Tweet; +import net.lacolaco.smileessence.entity.User; import net.lacolaco.smileessence.twitter.TweetBuilder; import net.lacolaco.smileessence.twitter.TwitterApi; import net.lacolaco.smileessence.twitter.task.DeleteStatusTask; @@ -58,9 +59,7 @@ import net.lacolaco.smileessence.viewmodel.StatusViewModel; import java.util.ArrayList; import twitter4j.MediaEntity; -import twitter4j.Status; import twitter4j.URLEntity; -import twitter4j.User; public class StatusDetailDialogFragment extends StackableDialogFragment implements View.OnClickListener { @@ -91,24 +90,24 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen final Account account = activity.getCurrentAccount(); TwitterUtils.tryGetStatus(account, getStatusID(), new TwitterUtils.StatusCallback() { @Override - public void success(Status status) { + public void success(Tweet tweet) { switch (v.getId()) { case R.id.button_status_detail_reply: { - replyToStatus(activity, account, status); + replyToStatus(activity, account, tweet); break; } case R.id.button_status_detail_retweet: { final Long retweetID = (Long) v.getTag(); - toggleRetweet(activity, account, status, retweetID); + toggleRetweet(activity, account, tweet, retweetID); break; } case R.id.button_status_detail_favorite: { Boolean isFavorited = (Boolean) v.getTag(); - toggleFavorite(activity, account, status, isFavorited); + toggleFavorite(activity, account, tweet, isFavorited); break; } case R.id.button_status_detail_delete: { - deleteStatus(activity, account, status); + deleteStatus(activity, account, tweet); break; } case R.id.button_status_detail_menu: { @@ -135,19 +134,20 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen final MainActivity activity = (MainActivity) getActivity(); final Account account = activity.getCurrentAccount(); - Status status = StatusCache.getInstance().get(getStatusID()); + final Tweet tweet = Tweet.fetch(getStatusID()); + final StatusViewModel status = new StatusViewModel(tweet); View header = getTitleView(activity, account, status); ListView listView = (ListView) header.findViewById(R.id.listview_status_detail_reply_to); final StatusListAdapter adapter = new StatusListAdapter(getActivity()); listView.setAdapter(adapter); - long inReplyToStatusId = TwitterUtils.getOriginalStatus(status).getInReplyToStatusId(); + long inReplyToStatusId = tweet.getInReplyTo(); if (inReplyToStatusId == -1) { listView.setVisibility(View.GONE); } else { TwitterUtils.tryGetStatus(account, inReplyToStatusId, new TwitterUtils.StatusCallback() { @Override - public void success(Status status) { - adapter.addToTop(new StatusViewModel(status, account)); + public void success(Tweet tweet) { + adapter.addToTop(new StatusViewModel(tweet)); adapter.updateForce(); } @@ -164,20 +164,20 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen ConfirmDialogFragment.show(activity, getString(R.string.dialog_confirm_commands), onYes); } - private void deleteStatus(final MainActivity activity, final Account account, final Status status) { + private void deleteStatus(final MainActivity activity, final Account account, final Tweet tweet) { confirm(activity, new Runnable() { @Override public void run() { - new DeleteStatusTask(TwitterApi.getTwitter(account), TwitterUtils.getOriginalStatus(status).getId(), activity).execute(); + new DeleteStatusTask(TwitterApi.getTwitter(account), tweet.getOriginalTweet().getId(), activity).execute(); dismiss(); } }); } - private View getTitleView(MainActivity activity, Account account, Status status) { + private View getTitleView(MainActivity activity, Account account, StatusViewModel statusViewModel) { + Tweet tweet = statusViewModel.getTweet(); View view = activity.getLayoutInflater().inflate(R.layout.dialog_status_detail, null); View statusHeader = view.findViewById(R.id.layout_status_header); - StatusViewModel statusViewModel = new StatusViewModel(status, account); statusHeader = statusViewModel.getView(activity, activity.getLayoutInflater(), statusHeader); statusHeader.setClickable(false); int background = ((ColorDrawable) statusHeader.getBackground()).getColor(); @@ -186,14 +186,14 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen ImageView rtCountIcon = (ImageView) view.findViewById(R.id.image_status_detail_rt_count); TextView favCountText = (TextView) view.findViewById(R.id.textview_status_detail_fav_count); TextView rtCountText = (TextView) view.findViewById(R.id.textview_status_detail_rt_count); - int favoriteCount = TwitterUtils.getOriginalStatus(status).getFavoriteCount(); + int favoriteCount = statusViewModel.getTweet().getFavoriteCount(); if (favoriteCount == 0) { favCountIcon.setVisibility(View.GONE); favCountText.setVisibility(View.GONE); } else { favCountText.setText(Integer.toString(favoriteCount)); } - int retweetCount = TwitterUtils.getOriginalStatus(status).getRetweetCount(); + int retweetCount = statusViewModel.getTweet().getOriginalTweet().getRetweetCount(); if (retweetCount == 0) { rtCountIcon.setVisibility(View.GONE); rtCountText.setVisibility(View.GONE); @@ -210,11 +210,11 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen retweet.setOnClickListener(this); favorite.setOnClickListener(this); delete.setOnClickListener(this); - if (isNotRetweetable(account, status)) { + if (isNotRetweetable(account, tweet)) { retweet.setVisibility(View.GONE); - } else if (isRetweetDeletable(account, status)) { + } else if (isRetweetDeletable(account, tweet)) { retweet.setImageDrawable(getResources().getDrawable(R.drawable.icon_retweet_on)); - retweet.setTag(status.getId()); + retweet.setTag(tweet.getId()); } else { retweet.setTag(-1L); } @@ -222,11 +222,11 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen if (statusViewModel.isFavorited()) { favorite.setImageDrawable(getResources().getDrawable(R.drawable.icon_favorite_on)); } - boolean deletable = isDeletable(account, status); + boolean deletable = isDeletable(account, tweet); delete.setVisibility(deletable ? View.VISIBLE : View.GONE); LinearLayout commandsLayout = (LinearLayout) view.findViewById(R.id.linearlayout_status_detail_menu); commandsLayout.setClickable(true); - ArrayList<Command> commands = getCommands(activity, status, account); + ArrayList<Command> commands = getCommands(activity, tweet, account); Command.filter(commands); for (final Command command : commands) { View commandView = command.getView(activity, activity.getLayoutInflater(), null); @@ -243,45 +243,31 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen } - private MediaEntity[] getMediaEntities(Status status) { - if (status.getExtendedMediaEntities().length == 0) { - return status.getMediaEntities(); - } else { - return status.getExtendedMediaEntities(); - } - } - - private ArrayList<Command> getCommands(Activity activity, Status status, Account account) { + private ArrayList<Command> getCommands(Activity activity, Tweet tweet, Account account) { ArrayList<Command> commands = new ArrayList<>(); // URL - if (status.getURLEntities() != null) { - for (URLEntity urlEntity : status.getURLEntities()) { + if (tweet.getUrls() != null) { + for (URLEntity urlEntity : tweet.getUrls()) { commands.add(new CommandOpenURL(activity, urlEntity.getExpandedURL())); } } - for (MediaEntity mediaEntity : getMediaEntities(status)) { + for (MediaEntity mediaEntity : tweet.getMedia()) { commands.add(new CommandOpenURL(activity, mediaEntity.getMediaURL())); } return commands; } - private boolean isDeletable(Account account, Status status) { - boolean deletable; - if (!status.isRetweet()) { - deletable = status.getUser().getId() == account.userID; - } else { - deletable = status.getRetweetedStatus().getUser().getId() == account.userID; - } - return deletable; + private boolean isDeletable(Account account, Tweet tweet) { + return tweet.getOriginalTweet().getUser().getId() == account.userID; } - private boolean isNotRetweetable(Account account, Status status) { - User user = TwitterUtils.getOriginalStatus(status).getUser(); + private boolean isNotRetweetable(Account account, Tweet tweet) { + User user = tweet.getOriginalTweet().getUser(); return user.isProtected() || user.getId() == account.userID; } - private boolean isRetweetDeletable(Account account, Status status) { - return status.isRetweet() && status.getUser().getId() == account.userID; + private boolean isRetweetDeletable(Account account, Tweet tweet) { + return tweet.isRetweet() && tweet.getUser().getId() == account.userID; } private void openMenu(MainActivity activity) { @@ -290,26 +276,26 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen DialogHelper.showDialog(activity, fragment); } - private void replyToStatus(MainActivity activity, Account account, Status status) { - Status originalStatus = TwitterUtils.getOriginalStatus(status); + private void replyToStatus(MainActivity activity, Account account, Tweet tweet) { + Tweet originalTweet = tweet.getOriginalTweet(); TweetBuilder builder = new TweetBuilder(); - if (account.userID == originalStatus.getUser().getId()) { + if (account.userID == originalTweet.getUser().getId()) { builder.addScreenName(account.screenName); } - builder.addScreenNames(TwitterUtils.getScreenNames(originalStatus, account.screenName)); + builder.addScreenNames(TwitterUtils.getScreenNames(originalTweet, account.screenName)); String text = builder.buildText(); - int selStart = originalStatus.getUser().getScreenName().length() + 2; // "@" and " " + int selStart = originalTweet.getUser().getScreenName().length() + 2; // "@" and " " PostState.newState().beginTransaction() .insertText(0, text) - .setInReplyToStatusID(originalStatus.getId()) + .setInReplyToStatusID(originalTweet.getId()) .setSelection(selStart, text.length()) .commitWithOpen(activity); } - private void toggleFavorite(MainActivity activity, Account account, Status status, Boolean isFavorited) { - long statusID = status.isRetweet() ? status.getRetweetedStatus().getId() : status.getId(); + private void toggleFavorite(MainActivity activity, Account account, Tweet tweet, Boolean isFavorited) { + long statusID = tweet.getOriginalTweet().getId(); if (isFavorited) { new UnfavoriteTask(TwitterApi.getTwitter(account), statusID, activity).execute(); } else { @@ -317,14 +303,14 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen } } - private void toggleRetweet(final MainActivity activity, final Account account, final Status status, final Long retweetID) { + private void toggleRetweet(final MainActivity activity, final Account account, final Tweet tweet, final Long retweetID) { confirm(activity, new Runnable() { @Override public void run() { if (retweetID != -1L) { new DeleteStatusTask(TwitterApi.getTwitter(account), retweetID, activity).execute(); } else { - new RetweetTask(TwitterApi.getTwitter(account), TwitterUtils.getOriginalStatus(status).getId(), activity).execute(); + new RetweetTask(TwitterApi.getTwitter(account), tweet.getOriginalTweet().getId(), activity).execute(); } } }); diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusMenuDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusMenuDialogFragment.java index 667578b7..8fcc6c35 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusMenuDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusMenuDialogFragment.java @@ -34,6 +34,7 @@ import net.lacolaco.smileessence.command.CommandOpenURL; import net.lacolaco.smileessence.command.CommandOpenUserDetail; import net.lacolaco.smileessence.command.CommandSaveAsTemplate; import net.lacolaco.smileessence.entity.Account; +import net.lacolaco.smileessence.entity.Tweet; import net.lacolaco.smileessence.twitter.util.TwitterUtils; import net.lacolaco.smileessence.view.adapter.CustomListAdapter; @@ -71,8 +72,8 @@ public class StatusMenuDialogFragment extends MenuDialogFragment { TwitterUtils.tryGetStatus(account, getStatusID(), new TwitterUtils.StatusCallback() { @Override - public void success(Status status) { - List<Command> commands = getCommands(activity, status, account); + public void success(Tweet tweet) { + List<Command> commands = getCommands(activity, tweet, account); Command.filter(commands); for (Command command : commands) { adapter.addToBottom(command); @@ -89,41 +90,41 @@ public class StatusMenuDialogFragment extends MenuDialogFragment { // -------------------------- OTHER METHODS -------------------------- - public void addBottomCommands(Activity activity, Status status, Account account, ArrayList<Command> commands) { - commands.add(new CommandSaveAsTemplate(activity, TwitterUtils.getOriginalStatusText(status))); + public void addBottomCommands(Activity activity, Tweet tweet, Account account, ArrayList<Command> commands) { + commands.add(new CommandSaveAsTemplate(activity, tweet.getOriginalTweet().getText())); //User - for (String screenName : TwitterUtils.getScreenNames(status, null)) { + for (String screenName : TwitterUtils.getScreenNames(tweet, null)) { commands.add(new CommandOpenUserDetail(activity, screenName, account)); } - for (Command command : getHashtagCommands(activity, status)) { + for (Command command : getHashtagCommands(activity, tweet)) { commands.add(command); } // Media - if (status.getURLEntities() != null) { - for (URLEntity urlEntity : status.getURLEntities()) { + if (tweet.getUrls() != null) { + for (URLEntity urlEntity : tweet.getUrls()) { commands.add(new CommandOpenURL(activity, urlEntity.getExpandedURL())); } } - for (MediaEntity mediaEntity : status.getExtendedMediaEntities().length == 0 ? status.getMediaEntities() : status.getExtendedMediaEntities()) { + for (MediaEntity mediaEntity : tweet.getMedia()) { commands.add(new CommandOpenURL(activity, mediaEntity.getMediaURL())); } } - public boolean addMainCommands(Activity activity, Status status, Account account, ArrayList<Command> commands) { - return commands.addAll(Command.getStatusCommands(activity, status, account)); + public boolean addMainCommands(Activity activity, Tweet tweet, Account account, ArrayList<Command> commands) { + return commands.addAll(Command.getStatusCommands(activity, tweet, account)); } - public List<Command> getCommands(Activity activity, Status status, Account account) { + public List<Command> getCommands(Activity activity, Tweet tweet, Account account) { ArrayList<Command> commands = new ArrayList<>(); - addMainCommands(activity, status, account, commands); - addBottomCommands(activity, status, account, commands); + addMainCommands(activity, tweet, account, commands); + addBottomCommands(activity, tweet, account, commands); return commands; } - private ArrayList<Command> getHashtagCommands(Activity activity, Status status) { + private ArrayList<Command> getHashtagCommands(Activity activity, Tweet tweet) { ArrayList<Command> commands = new ArrayList<>(); - if (status.getHashtagEntities() != null) { - for (HashtagEntity hashtagEntity : status.getHashtagEntities()) { + if (tweet.getHashtags() != null) { + for (HashtagEntity hashtagEntity : tweet.getHashtags()) { commands.add(new CommandOpenHashtagDialog(activity, hashtagEntity)); } } diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/TalkChainDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/TalkChainDialogFragment.java index 9cd010a9..fa074767 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/TalkChainDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/TalkChainDialogFragment.java @@ -26,24 +26,20 @@ package net.lacolaco.smileessence.view.dialog; import android.app.AlertDialog; import android.app.Dialog; -import android.os.AsyncTask; import android.os.Bundle; import android.view.View; import android.widget.ListView; import net.lacolaco.smileessence.R; import net.lacolaco.smileessence.activity.MainActivity; -import net.lacolaco.smileessence.data.StatusCache; import net.lacolaco.smileessence.entity.Account; -import net.lacolaco.smileessence.logging.Logger; +import net.lacolaco.smileessence.entity.Tweet; import net.lacolaco.smileessence.twitter.TwitterApi; -import net.lacolaco.smileessence.twitter.util.TwitterUtils; +import net.lacolaco.smileessence.twitter.task.GetTalkTask; import net.lacolaco.smileessence.view.adapter.StatusListAdapter; -import net.lacolaco.smileessence.viewmodel.StatusViewModel; -import twitter4j.Status; +import net.lacolaco.smileessence.viewmodel.StatusViewModel; import twitter4j.Twitter; -import twitter4j.TwitterException; public class TalkChainDialogFragment extends StackableDialogFragment { @@ -69,25 +65,20 @@ public class TalkChainDialogFragment extends StackableDialogFragment { public Dialog onCreateDialog(Bundle savedInstanceState) { MainActivity activity = (MainActivity) getActivity(); final Account account = activity.getCurrentAccount(); - + Twitter twitter = TwitterApi.getTwitter(account); View view = getActivity().getLayoutInflater().inflate(R.layout.dialog_talk_list, null); ListView listView = (ListView) view.findViewById(R.id.listview_dialog_talk_list); final StatusListAdapter adapter = new StatusListAdapter(getActivity()); listView.setAdapter(adapter); - TwitterUtils.tryGetStatus(account, getStatusID(), new TwitterUtils.StatusCallback() { - @Override - public void success(Status status) { - adapter.addToTop(new StatusViewModel(status, account)); - adapter.updateForce(); - Twitter twitter = TwitterApi.getTwitter(account); - new GetTalkTask(twitter, account, adapter, status.getInReplyToStatusId()).execute(); - } + new GetTalkTask(twitter, getStatusID()) { @Override - public void error() { - dismiss(); + protected void onProgressUpdate(Tweet... tweets) { + Tweet tweet = tweets[0]; + adapter.addToBottom(new StatusViewModel(tweet)); + adapter.updateForce(); } - }); + }.execute(); return new AlertDialog.Builder(activity) .setTitle(R.string.dialog_title_talk_chain) @@ -95,43 +86,4 @@ public class TalkChainDialogFragment extends StackableDialogFragment { .setCancelable(true) .create(); } - - // -------------------------- INNER CLASSES -------------------------- - - private class GetTalkTask extends AsyncTask<Void, Void, Void> { - - private final Twitter twitter; - private final Account account; - private final StatusListAdapter adapter; - private final long inReplyToStatusId; - - public GetTalkTask(Twitter twitter, Account account, StatusListAdapter adapter, long inReplyToStatusId) { - this.twitter = twitter; - this.account = account; - this.adapter = adapter; - this.inReplyToStatusId = inReplyToStatusId; - } - - @Override - protected Void doInBackground(Void... params) { - try { - long id = inReplyToStatusId; - while (id != -1) { - final twitter4j.Status status = twitter.showStatus(id); - if (status != null) { - StatusCache.getInstance().put(status); - adapter.addToBottom(new StatusViewModel(status, account)); - adapter.updateForce(); - id = status.getInReplyToStatusId(); - } else { - break; - } - } - } catch (TwitterException e) { - e.printStackTrace(); - Logger.error(e); - } - return null; - } - } } diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.java index e2e07b80..d38d1677 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.java @@ -49,6 +49,8 @@ import net.lacolaco.smileessence.command.Command; import net.lacolaco.smileessence.command.CommandOpenURL; import net.lacolaco.smileessence.data.ImageCache; import net.lacolaco.smileessence.entity.Account; +import net.lacolaco.smileessence.entity.Tweet; +import net.lacolaco.smileessence.entity.User; import net.lacolaco.smileessence.logging.Logger; import net.lacolaco.smileessence.twitter.TwitterApi; import net.lacolaco.smileessence.twitter.task.FollowTask; @@ -66,7 +68,8 @@ import net.lacolaco.smileessence.viewmodel.StatusViewModel; import twitter4j.Paging; import twitter4j.Relationship; import twitter4j.Twitter; -import twitter4j.User; + +import java.util.List; public class UserDetailDialogFragment extends StackableDialogFragment implements View.OnClickListener, PullToRefreshBase.OnRefreshListener2<ListView> { @@ -122,7 +125,7 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements break; } case R.id.imageview_user_detail_icon: { - openUrl(user.getBiggerProfileImageURLHttps()); + openUrl(user.getProfileImageUrlOriginal()); break; } case R.id.textview_user_detail_screenname: { @@ -177,11 +180,10 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements } new UserTimelineTask(twitter, getUserID(), paging) { @Override - protected void onPostExecute(twitter4j.Status[] statuses) { - super.onPostExecute(statuses); - for (int i = statuses.length - 1; i >= 0; i--) { - twitter4j.Status status = statuses[i]; - adapter.addToTop(new StatusViewModel(status, currentAccount)); + protected void onPostExecute(List<Tweet> tweets) { + super.onPostExecute(tweets); + for (int i = tweets.size()- 1; i >= 0; i--) { + adapter.addToTop(new StatusViewModel(tweets.get(i))); } updateListView(refreshView.getRefreshableView(), adapter, true); refreshView.onRefreshComplete(); @@ -200,10 +202,10 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements } new UserTimelineTask(twitter, getUserID(), paging) { @Override - protected void onPostExecute(twitter4j.Status[] statuses) { - super.onPostExecute(statuses); - for (twitter4j.Status status : statuses) { - adapter.addToBottom(new StatusViewModel(status, currentAccount)); + protected void onPostExecute(List<Tweet> tweets) { + super.onPostExecute(tweets); + for (Tweet tweet : tweets) { + adapter.addToBottom(new StatusViewModel(tweet)); } updateListView(refreshView.getRefreshableView(), adapter, false); refreshView.onRefreshComplete(); @@ -278,10 +280,10 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements Twitter twitter = TwitterApi.getTwitter(account); new UserTimelineTask(twitter, user.getId()) { @Override - protected void onPostExecute(twitter4j.Status[] statuses) { - super.onPostExecute(statuses); - for (twitter4j.Status status : statuses) { - adapter.addToBottom(new StatusViewModel(status, account)); + protected void onPostExecute(List<Tweet> tweets) { + super.onPostExecute(tweets); + for (Tweet tweet : tweets) { + adapter.addToBottom(new StatusViewModel(tweet)); } adapter.updateForce(); tabHost.getTabWidget().getChildTabViewAt(1).setVisibility(View.VISIBLE); @@ -308,21 +310,21 @@ public class UserDetailDialogFragment extends StackableDialogFragment implements } else { textViewLocate.setText(user.getLocation()); } - if (TextUtils.isEmpty(user.getURL())) { + if (TextUtils.isEmpty(user.getUrl())) { textViewURL.setVisibility(View.GONE); } else { - textViewURL.setText(user.getURL()); + textViewURL.setText(user.getUrl()); } textViewTweetCount.setText(String.valueOf(user.getStatusesCount())); textViewFriendCount.setText(String.valueOf(user.getFriendsCount())); textViewFollowerCount.setText(String.valueOf(user.getFollowersCount())); - textViewFavoriteCount.setText(String.valueOf(user.getFavouritesCount())); + textViewFavoriteCount.setText(String.valueOf(user.getFavoritesCount())); textViewProtected.setVisibility(user.isProtected() ? View.VISIBLE : View.GONE); String htmlDescription = getHtmlDescription(user.getDescription()); textViewDescription.setText(Html.fromHtml(htmlDescription)); textViewDescription.setMovementMethod(LinkMovementMethod.getInstance()); - ImageCache.getInstance().setImageToView(user.getBiggerProfileImageURL(), imageViewIcon); - ImageCache.getInstance().setImageToView(user.getProfileBannerURL(), imageViewHeader); + ImageCache.getInstance().setImageToView(user.getProfileImageUrlOriginal(), imageViewIcon); + ImageCache.getInstance().setImageToView(user.getProfileBannerUrl(), imageViewHeader); MainActivity activity = (MainActivity) getActivity(); adapter = new StatusListAdapter(activity); listViewTimeline.setAdapter(adapter); diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserMenuDialogFragment.java b/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserMenuDialogFragment.java index ad1efc89..0883b99e 100644 --- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserMenuDialogFragment.java +++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserMenuDialogFragment.java @@ -31,14 +31,13 @@ import net.lacolaco.smileessence.activity.MainActivity; import net.lacolaco.smileessence.command.Command; import net.lacolaco.smileessence.command.CommandSearchOnTwitter; import net.lacolaco.smileessence.entity.Account; +import net.lacolaco.smileessence.entity.User; import net.lacolaco.smileessence.twitter.util.TwitterUtils; import net.lacolaco.smileessence.view.adapter.CustomListAdapter; import java.util.ArrayList; import java.util.List; -import twitter4j.User; - public class UserMenuDialogFragment extends MenuDialogFragment { // ------------------------------ FIELDS ------------------------------ |