aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/net/lacolaco
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2015-09-23 00:12:39 +0900
committerKazuki Yamaguchi <k@rhe.jp>2015-09-23 00:12:39 +0900
commitbe8fa9c1b0a732659c4501178f651708c6f6dd4a (patch)
tree722a012aaf294021b638c7f8f66bcb4b2add3792 /app/src/main/java/net/lacolaco
parentf44d5800abfee1fe45a4712d8674837b9f405e1a (diff)
downloadSmileEssence-be8fa9c1b0a732659c4501178f651708c6f6dd4a.tar.gz
RT をトグれるように(りぐれっしょん)
Diffstat (limited to 'app/src/main/java/net/lacolaco')
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/entity/Account.java10
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/entity/Tweet.java30
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/StatusFilter.java25
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/HomeFragment.java1
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/adapter/CustomListAdapter.java11
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/adapter/MessageListAdapter.java36
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/adapter/StatusListAdapter.java40
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.java146
8 files changed, 144 insertions, 155 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/Account.java b/app/src/main/java/net/lacolaco/smileessence/entity/Account.java
index 4035bde0..79d6da9f 100644
--- a/app/src/main/java/net/lacolaco/smileessence/entity/Account.java
+++ b/app/src/main/java/net/lacolaco/smileessence/entity/Account.java
@@ -103,4 +103,14 @@ public class Account extends Model {
return null;
}
}
+
+ //--- helper methods
+ public boolean canDelete(Tweet tweet) {
+ return tweet.getUser().getId() == getUserId();
+ }
+
+ public boolean canRetweet(Tweet tweet) {
+ return !tweet.getOriginalTweet().getUser().isProtected() &&
+ tweet.getOriginalTweet().getUser().getId() != getUserId();
+ }
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.java b/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.java
index dda6100b..36a1edba 100644
--- a/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.java
+++ b/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.java
@@ -47,6 +47,7 @@ public class Tweet extends EntitySupport {
private int favoriteCount;
private int retweetCount;
private Set<Long> favoriters;
+ private Map<Long, Long> retweets;
private Tweet() {
}
@@ -64,6 +65,7 @@ public class Tweet extends EntitySupport {
isRetweet = status.isRetweet();
if (isRetweet()) {
retweetedTweet = Tweet.fromTwitter(status.getRetweetedStatus(), myUserId);
+ retweetedTweet.addRetweet(this);
}
if (favoriters == null) {
@@ -73,13 +75,23 @@ public class Tweet extends EntitySupport {
favoriters = Collections.newSetFromMap(new ConcurrentHashMap<>());
}
}
-
if (status.isFavorited()) {
favoriters.add(myUserId);
} else {
favoriters.remove(myUserId);
}
+ if (retweets == null) {
+ if (isRetweet()) {
+ retweets = getRetweetedTweet().getRetweets();
+ } else {
+ retweets = new ConcurrentHashMap<>();
+ }
+ }
+ if (status.getCurrentUserRetweetId() > 0) {
+ retweets.put(myUserId, status.getCurrentUserRetweetId());
+ }
+
updateEntities(status);
}
@@ -150,4 +162,20 @@ public class Tweet extends EntitySupport {
public boolean removeFavoriter(long id) {
return favoriters.remove(id); //false means not contained
}
+
+ public boolean isRetweetedBy(long id) {
+ return retweets.get(id) != null;
+ }
+
+ public long getRetweetIdBy(long id) {
+ return retweets.get(id);
+ }
+
+ public Map<Long, Long> getRetweets() {
+ return retweets;
+ }
+
+ public void addRetweet(Tweet retweet) {
+ retweets.put(retweet.getUser().getId(), retweet.getId());
+ }
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/StatusFilter.java b/app/src/main/java/net/lacolaco/smileessence/twitter/StatusFilter.java
index 8c3b7a16..49ed7b06 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/StatusFilter.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/StatusFilter.java
@@ -24,8 +24,13 @@
package net.lacolaco.smileessence.twitter;
+import net.lacolaco.smileessence.entity.MuteUserIds;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.util.Consumer;
+import net.lacolaco.smileessence.viewmodel.EventViewModel;
import net.lacolaco.smileessence.viewmodel.IViewModel;
+import net.lacolaco.smileessence.viewmodel.MessageViewModel;
+import net.lacolaco.smileessence.viewmodel.StatusViewModel;
import java.util.HashMap;
import java.util.Map;
@@ -60,8 +65,22 @@ public class StatusFilter {
// -------------------------- STATIC METHODS --------------------------
- public <T extends IViewModel> void filter(T status) {
- Map<Object, Consumer<?>> map = addHandlers.get(status.getClass());
+ public void filter(StatusViewModel tweet) {
+ if (!MuteUserIds.isMuted(tweet.getTweet().getOriginalTweet().getUser().getId())) {
+ filter(StatusViewModel.class, tweet);
+ }
+ }
+
+ public void filter(MessageViewModel message) {
+ filter(MessageViewModel.class, message);
+ }
+
+ public void filter(EventViewModel event) {
+ filter(EventViewModel.class, event);
+ }
+
+ public <T extends IViewModel> void filter(Class<T> klass, T status) {
+ Map<Object, Consumer<?>> map = addHandlers.get(klass);
if (map != null) {
for(Consumer f_ : map.values()) {
((Consumer<T>) f_).accept(status);
@@ -69,7 +88,7 @@ public class StatusFilter {
}
}
- public <T extends IViewModel> void remove(Class<T> klass, long id) {
+ public void remove(Class<? extends IViewModel> klass, long id) {
Map<Object, Consumer<Long>> map = removeHandlers.get(klass);
if (map != null) {
for(Consumer<Long> f : map.values()) {
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 d22fd018..1969d107 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/HomeFragment.java
+++ b/app/src/main/java/net/lacolaco/smileessence/view/HomeFragment.java
@@ -73,7 +73,6 @@ public class HomeFragment extends CustomListFragment<StatusListAdapter> {
for (Tweet tweet : tweets) {
StatusViewModel statusViewModel = new StatusViewModel(tweet);
adapter.addToBottom(statusViewModel);
- StatusFilter.getInstance().filter(statusViewModel);
}
adapter.updateForce();
}).execute();
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/adapter/CustomListAdapter.java b/app/src/main/java/net/lacolaco/smileessence/view/adapter/CustomListAdapter.java
index 239b51b3..b79cb83a 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/adapter/CustomListAdapter.java
+++ b/app/src/main/java/net/lacolaco/smileessence/view/adapter/CustomListAdapter.java
@@ -28,6 +28,7 @@ import android.app.Activity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
+import android.widget.ListAdapter;
import net.lacolaco.smileessence.util.UIHandler;
import net.lacolaco.smileessence.viewmodel.IViewModel;
@@ -43,7 +44,7 @@ public class CustomListAdapter<T extends IViewModel> extends BaseAdapter {
protected final Object LOCK = new Object();
protected ArrayList<T> list = new ArrayList<>();
protected List<T> frozenList = new ArrayList<>();
- protected boolean isNotifiable = true;
+ private boolean isNotifiable = true;
protected Activity activity;
// --------------------------- CONSTRUCTORS ---------------------------
@@ -81,7 +82,7 @@ public class CustomListAdapter<T extends IViewModel> extends BaseAdapter {
// --------------------- Interface Adapter ---------------------
@Override
- public Object getItem(int position) {
+ public T getItem(int position) {
return frozenList.get(position);
}
@@ -92,7 +93,7 @@ public class CustomListAdapter<T extends IViewModel> extends BaseAdapter {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
- return ((T) getItem(position)).getView(activity, activity.getLayoutInflater(), convertView);
+ return getItem(position).getView(activity, activity.getLayoutInflater(), convertView);
}
// ------------------------ OVERRIDE METHODS ------------------------
@@ -100,7 +101,7 @@ public class CustomListAdapter<T extends IViewModel> extends BaseAdapter {
@Override
public void notifyDataSetChanged() {
sort();
- frozenList = Collections.unmodifiableList((ArrayList) list.clone());
+ frozenList = Collections.unmodifiableList(new ArrayList<>(list));
super.notifyDataSetChanged();
}
@@ -152,7 +153,7 @@ public class CustomListAdapter<T extends IViewModel> extends BaseAdapter {
}
public void update() {
- if (isNotifiable) {
+ if (isNotifiable()) {
updateForce();
}
}
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 6a9d4215..f42536d3 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
@@ -42,44 +42,19 @@ public class MessageListAdapter extends CustomListAdapter<MessageViewModel> {
// --------------------- GETTER / SETTER METHODS ---------------------
public long getLastID() {
- return ((MessageViewModel) getItem(getCount() - 1)).getDirectMessage().getId();
+ return getItem(getCount() - 1).getDirectMessage().getId();
}
public long getTopID() {
- return ((MessageViewModel) getItem(0)).getDirectMessage().getId();
+ return getItem(0).getDirectMessage().getId();
}
// ------------------------ OVERRIDE METHODS ------------------------
@Override
- public void addToBottom(MessageViewModel... items) {
- for (MessageViewModel item : items) {
- if (!preAdd(item)) {
- continue;
- }
- super.addToBottom(items);
- }
- }
-
- @Override
- public void addToTop(MessageViewModel... items) {
- for (MessageViewModel item : items) {
- if (!preAdd(item)) {
- continue;
- }
- super.addToTop(items);
- }
- }
-
- @Override
public void sort() {
synchronized (LOCK) {
- Collections.sort(list, new Comparator<MessageViewModel>() {
- @Override
- public int compare(MessageViewModel lhs, MessageViewModel rhs) {
- return rhs.getDirectMessage().getCreatedAt().compareTo(lhs.getDirectMessage().getCreatedAt());
- }
- });
+ Collections.sort(list, (lhs, rhs) -> rhs.getDirectMessage().getCreatedAt().compareTo(lhs.getDirectMessage().getCreatedAt()));
}
}
@@ -98,9 +73,4 @@ public class MessageListAdapter extends CustomListAdapter<MessageViewModel> {
return null;
}
}
-
- private boolean preAdd(MessageViewModel item) {
- 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 8992170a..490f9f97 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
@@ -44,7 +44,7 @@ public class StatusListAdapter extends CustomListAdapter<StatusViewModel> {
public long getLastID() {
if (getCount() > 0) {
- return ((StatusViewModel) getItem(getCount() - 1)).getTweet().getId();
+ return getItem(getCount() - 1).getTweet().getId();
} else {
return Long.MAX_VALUE;
}
@@ -52,7 +52,7 @@ public class StatusListAdapter extends CustomListAdapter<StatusViewModel> {
public long getTopID() {
if (getCount() > 0) {
- return ((StatusViewModel) getItem(0)).getTweet().getId();
+ return getItem(0).getTweet().getId();
} else {
return -1;
}
@@ -60,38 +60,13 @@ public class StatusListAdapter extends CustomListAdapter<StatusViewModel> {
// ------------------------ OVERRIDE METHODS ------------------------
- @Override
- public void addToBottom(StatusViewModel... items) {
- for (StatusViewModel item : items) {
- if (!preAdd(item)) {
- continue;
- }
- super.addToBottom(item);
- }
- }
-
- @Override
- public void addToTop(StatusViewModel... items) {
- for (StatusViewModel item : items) {
- if (!preAdd(item)) {
- continue;
- }
- super.addToTop(item);
- }
- }
-
/**
* Sort list by Status ID
*/
@Override
protected void sort() {
synchronized (LOCK) {
- Collections.sort(list, new Comparator<StatusViewModel>() {
- @Override
- public int compare(StatusViewModel lhs, StatusViewModel rhs) {
- return Long.valueOf(rhs.getTweet().getId()).compareTo(lhs.getTweet().getId());
- }
- });
+ Collections.sort(list, (lhs, rhs) -> Long.valueOf(rhs.getTweet().getId()).compareTo(lhs.getTweet().getId()));
}
}
@@ -108,13 +83,4 @@ public class StatusListAdapter extends CustomListAdapter<StatusViewModel> {
}
}
}
-
- private boolean isBlockUser(StatusViewModel item) {
- return MuteUserIds.isMuted(item.getTweet().getOriginalTweet().getUser().getId());
- }
-
- private boolean preAdd(StatusViewModel item) {
- removeByStatusID(item.getTweet().getId());
- return !isBlockUser(item);
- }
}
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 c9b3b07a..e7bc7f07 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
@@ -85,13 +85,11 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen
break;
}
case R.id.button_status_detail_retweet: {
- final Long retweetID = (Long) v.getTag();
- toggleRetweet(activity, account, tweet, retweetID);
+ toggleRetweet(activity, account, tweet);
break;
}
case R.id.button_status_detail_favorite: {
- Boolean isFavorited = (Boolean) v.getTag();
- toggleFavorite(activity, account, tweet, isFavorited);
+ toggleFavorite(activity, account, tweet);
break;
}
case R.id.button_status_detail_delete: {
@@ -112,26 +110,33 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
- final MainActivity activity = (MainActivity) getActivity();
- final Account account = activity.getCurrentAccount();
-
tweet = Tweet.fetch(getStatusID());
- final StatusViewModel status = new StatusViewModel(tweet);
- View header = getTitleView(activity, account, status);
+ if (tweet == null) { // trying open deleted tweet
+ Notificator.getInstance().publish(R.string.notice_error_show_status);
+ return new DisposeDialog(getActivity());
+ }
+ StatusViewModel vm = new StatusViewModel(tweet);
+
+ MainActivity activity = (MainActivity) getActivity();
+ Account account = activity.getCurrentAccount();
+
+ View header = getTitleView(activity, account, vm);
+
ListView listView = (ListView) header.findViewById(R.id.listview_status_detail_reply_to);
final StatusListAdapter adapter = new StatusListAdapter(getActivity());
listView.setAdapter(adapter);
- long inReplyToStatusId = tweet.getInReplyTo();
- if (inReplyToStatusId == -1) {
- listView.setVisibility(View.GONE);
- } else {
- new ShowStatusTask(account, inReplyToStatusId)
+
+ if (tweet.getInReplyTo() != -1) {
+ new ShowStatusTask(account, tweet.getInReplyTo())
.onDoneUI(replyTo -> {
adapter.addToTop(new StatusViewModel(replyTo));
adapter.updateForce();
})
.execute();
+ } else {
+ listView.setVisibility(View.GONE);
}
+
return new AlertDialog.Builder(getActivity()).setView(header).create();
}
@@ -152,53 +157,57 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen
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);
- statusHeader = statusViewModel.getView(activity, activity.getLayoutInflater(), statusHeader);
+
+ View statusHeader = statusViewModel.getView(activity, activity.getLayoutInflater(), view.findViewById(R.id.layout_status_header));
statusHeader.setClickable(false);
- int background = ((ColorDrawable) statusHeader.getBackground()).getColor();
- view.setBackgroundColor(background);
+
+ view.setBackgroundColor(((ColorDrawable) statusHeader.getBackground()).getColor());
+
+ //--- favs/RTs count
ImageView favCountIcon = (ImageView) view.findViewById(R.id.image_status_detail_fav_count);
- 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 = statusViewModel.getTweet().getFavoriteCount();
- if (favoriteCount == 0) {
+ if (tweet.getFavoriteCount() > 0) {
+ favCountText.setText(Integer.toString(tweet.getFavoriteCount()));
+ } else {
favCountIcon.setVisibility(View.GONE);
favCountText.setVisibility(View.GONE);
- } else {
- favCountText.setText(Integer.toString(favoriteCount));
}
- int retweetCount = statusViewModel.getTweet().getOriginalTweet().getRetweetCount();
- if (retweetCount == 0) {
+
+ ImageView rtCountIcon = (ImageView) view.findViewById(R.id.image_status_detail_rt_count);
+ TextView rtCountText = (TextView) view.findViewById(R.id.textview_status_detail_rt_count);
+ if (tweet.getRetweetCount() > 0) {
+ rtCountText.setText(Integer.toString(tweet.getRetweetCount()));
+ } else {
rtCountIcon.setVisibility(View.GONE);
rtCountText.setVisibility(View.GONE);
- } else {
- rtCountText.setText(Integer.toString(retweetCount));
}
- ImageButton menu = (ImageButton) view.findViewById(R.id.button_status_detail_menu);
+
+ //--- buttons
ImageButton message = (ImageButton) view.findViewById(R.id.button_status_detail_reply);
- ImageButton retweet = (ImageButton) view.findViewById(R.id.button_status_detail_retweet);
- ImageButton favorite = (ImageButton) view.findViewById(R.id.button_status_detail_favorite);
- ImageButton delete = (ImageButton) view.findViewById(R.id.button_status_detail_delete);
- menu.setOnClickListener(this);
message.setOnClickListener(this);
+
+ ImageButton retweet = (ImageButton) view.findViewById(R.id.button_status_detail_retweet);
retweet.setOnClickListener(this);
- favorite.setOnClickListener(this);
- delete.setOnClickListener(this);
- if (isNotRetweetable(account, tweet)) {
+ if (tweet.getOriginalTweet().getUser().isProtected() ||
+ tweet.getOriginalTweet().getUser().getId() == account.getUserId()) {
retweet.setVisibility(View.GONE);
- } else if (isRetweetDeletable(account, tweet)) {
+ } else if (tweet.isRetweetedBy(account.getUserId())) {
retweet.setImageDrawable(getResources().getDrawable(R.drawable.icon_retweet_on));
- retweet.setTag(tweet.getId());
- } else {
- retweet.setTag(-1L);
}
- favorite.setTag(statusViewModel.getTweet().getOriginalTweet().isFavoritedBy(activity.getCurrentAccount().getUserId()));
- if (statusViewModel.getTweet().getOriginalTweet().isFavoritedBy(activity.getCurrentAccount().getUserId())) {
+
+ ImageButton favorite = (ImageButton) view.findViewById(R.id.button_status_detail_favorite);
+ favorite.setOnClickListener(this);
+ if (tweet.isFavoritedBy(account.getUserId())) {
favorite.setImageDrawable(getResources().getDrawable(R.drawable.icon_favorite_on));
}
- boolean deletable = isDeletable(account, tweet);
- delete.setVisibility(deletable ? View.VISIBLE : View.GONE);
+
+ ImageButton delete = (ImageButton) view.findViewById(R.id.button_status_detail_delete);
+ delete.setOnClickListener(this);
+ delete.setVisibility(account.canDelete(tweet) ? View.VISIBLE : View.GONE);
+
+ //--- menu
+ ImageButton menu = (ImageButton) view.findViewById(R.id.button_status_detail_menu);
+ menu.setOnClickListener(this);
LinearLayout commandsLayout = (LinearLayout) view.findViewById(R.id.linearlayout_status_detail_menu);
commandsLayout.setClickable(true);
ArrayList<Command> commands = getCommands(activity, tweet, account);
@@ -206,12 +215,7 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen
for (final Command command : commands) {
View commandView = command.getView(activity, activity.getLayoutInflater(), null);
commandView.setBackgroundColor(getResources().getColor(R.color.transparent));
- commandView.setOnClickListener(new ListItemClickListener(activity, new Runnable() {
- @Override
- public void run() {
- command.execute();
- }
- }));
+ commandView.setOnClickListener(new ListItemClickListener(activity, () -> command.execute()));
commandsLayout.addView(commandView);
}
return view;
@@ -230,19 +234,6 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen
return commands;
}
- private boolean isDeletable(Account account, Tweet tweet) {
- return tweet.getOriginalTweet().getUser().getId() == account.userID;
- }
-
- private boolean isNotRetweetable(Account account, Tweet tweet) {
- User user = tweet.getOriginalTweet().getUser();
- return user.isProtected() || user.getId() == account.userID;
- }
-
- private boolean isRetweetDeletable(Account account, Tweet tweet) {
- return tweet.isRetweet() && tweet.getUser().getId() == account.userID;
- }
-
private void openMenu(MainActivity activity) {
StatusMenuDialogFragment fragment = new StatusMenuDialogFragment();
fragment.setStatusID(getStatusID());
@@ -252,10 +243,12 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen
private void replyToStatus(MainActivity activity, Account account, Tweet tweet) {
Tweet originalTweet = tweet.getOriginalTweet();
TweetBuilder builder = new TweetBuilder();
- if (account.userID == originalTweet.getUser().getId()) {
- builder.addScreenName(account.screenName);
+ builder.addScreenName(originalTweet.getUser().getScreenName());
+ for (String screenName : originalTweet.getMentions()) {
+ if (!screenName.equals(account.getCachedUser().getScreenName())) {
+ builder.addScreenName(screenName);
+ }
}
- builder.addScreenNames(originalTweet.getMentions());
String text = builder.buildText();
int selStart = originalTweet.getUser().getScreenName().length() + 2; // "@" and " "
@@ -267,27 +260,30 @@ public class StatusDetailDialogFragment extends StackableDialogFragment implemen
.commitWithOpen(activity);
}
- private void toggleFavorite(MainActivity activity, Account account, Tweet tweet, Boolean isFavorited) {
- long statusID = tweet.getOriginalTweet().getId();
- if (isFavorited) {
- new UnfavoriteTask(account, statusID)
+ private void toggleFavorite(MainActivity activity, Account account, Tweet tweet) {
+ if (tweet.isFavoritedBy(account.getUserId())) {
+ new UnfavoriteTask(account, tweet.getId())
.onDone(x -> Notificator.getInstance().publish(R.string.notice_unfavorite_succeeded))
.onFail(x -> Notificator.getInstance().publish(R.string.notice_unfavorite_failed, NotificationType.ALERT))
.execute();
} else {
- new FavoriteTask(account, statusID)
+ new FavoriteTask(account, tweet.getId())
.onDone(x -> Notificator.getInstance().publish(R.string.notice_favorite_succeeded))
.onFail(x -> Notificator.getInstance().publish(R.string.notice_favorite_failed, NotificationType.ALERT))
.execute();
}
}
- private void toggleRetweet(final MainActivity activity, final Account account, final Tweet tweet, final Long retweetID) {
+ private void toggleRetweet(final MainActivity activity, final Account account, final Tweet tweet) {
confirm(activity, () -> {
- if (retweetID != -1L) {
- deleteStatus(activity, account, tweet);
+ if (tweet.isRetweetedBy(account.getUserId())) {
+ new DeleteStatusTask(account, tweet.getRetweetIdBy(account.getUserId()))
+ .onDone(t -> Notificator.getInstance().publish(R.string.notice_status_delete_succeeded))
+ .onFail(e -> Notificator.getInstance().publish(R.string.notice_status_delete_failed, NotificationType.ALERT))
+ .execute();
+ dismiss();
} else {
- new RetweetTask(account, tweet.getOriginalTweet().getId())
+ new RetweetTask(account, tweet.getId())
.onDone(x -> Notificator.getInstance().publish(R.string.notice_retweet_succeeded))
.onFail(x -> Notificator.getInstance().publish(R.string.notice_retweet_failed, NotificationType.ALERT))
.execute();