package info.justaway.util; import android.content.Context; import android.content.Intent; import de.greenrobot.event.EventBus; import info.justaway.MainActivity; import info.justaway.PostActivity; import info.justaway.R; import info.justaway.event.action.OpenEditorEvent; import info.justaway.model.AccessTokenManager; import info.justaway.model.FavRetweetManager; import info.justaway.task.DestroyDirectMessageTask; import info.justaway.task.DestroyStatusTask; import info.justaway.task.FavoriteTask; import info.justaway.task.RetweetTask; import info.justaway.task.UnFavoriteTask; import info.justaway.task.UnRetweetTask; import twitter4j.DirectMessage; import twitter4j.UserMentionEntity; public class ActionUtil { public static void doFavorite(Long statusId) { new FavoriteTask(statusId).execute(); } public static void doDestroyFavorite(Long statusId) { new UnFavoriteTask(statusId).execute(); } public static void doDestroyStatus(Long statusId) { new DestroyStatusTask(statusId).execute(); } public static void doRetweet(Long statusId) { new RetweetTask(statusId).execute(); } public static void doDestroyRetweet(twitter4j.Status status) { twitter4j.Status retweet = status.getRetweetedStatus(); if (status.getUser().getId() == AccessTokenManager.getUserId() && retweet != null) { // 自分がRTしたStatus new UnRetweetTask(retweet.getId(), status.getId()).execute(); } else { // 他人のStatusで、それを自分がRTしている // 被リツイート Long retweetedStatusId = -1L; // リツイート Long statusId = FavRetweetManager.getRtId(status.getId()); if (statusId != null && statusId > 0) { // そのStatusそのものをRTしている retweetedStatusId = status.getId(); } else { if (retweet != null) { statusId = FavRetweetManager.getRtId(retweet.getId()); if (statusId != null && statusId > 0) { // そのStatusがRTした元StatusをRTしている retweetedStatusId = retweet.getId(); } } } if (statusId != null && statusId == 0L) { // 処理中は 0 MessageUtil.showToast(R.string.toast_destroy_retweet_progress); } else if (statusId != null && statusId > 0 && retweetedStatusId > 0) { new UnRetweetTask(retweetedStatusId, statusId).execute(); } } } public static void doReply(twitter4j.Status status, Context context) { Long userId = AccessTokenManager.getUserId(); UserMentionEntity[] mentions = status.getUserMentionEntities(); String text; if (status.getUser().getId() == userId && mentions.length == 1) { text = "@" + mentions[0].getScreenName() + " "; } else { text = "@" + status.getUser().getScreenName() + " "; } if (context instanceof MainActivity) { EventBus.getDefault().post(new OpenEditorEvent(text, status, text.length(), null)); } else { Intent intent = new Intent(context, PostActivity.class); intent.putExtra("status", text); intent.putExtra("selection", text.length()); intent.putExtra("inReplyToStatus", status); context.startActivity(intent); } } public static void doReplyAll(twitter4j.Status status, Context context) { long userId = AccessTokenManager.getUserId(); UserMentionEntity[] mentions = status.getUserMentionEntities(); String text = ""; int selection_start = 0; if (status.getUser().getId() != userId) { text = "@" + status.getUser().getScreenName() + " "; selection_start = text.length(); } for (UserMentionEntity mention : mentions) { if (status.getUser().getId() == mention.getId()) { continue; } if (userId == mention.getId()) { continue; } text = text.concat("@" + mention.getScreenName() + " "); if (selection_start == 0) { selection_start = text.length(); } } if (context instanceof MainActivity) { EventBus.getDefault().post(new OpenEditorEvent(text, status, selection_start, text.length())); } else { Intent intent = new Intent(context, PostActivity.class); intent.putExtra("status", text); intent.putExtra("selection", selection_start); intent.putExtra("selection_stop", text.length()); intent.putExtra("inReplyToStatus", status); context.startActivity(intent); } } public static void doReplyDirectMessage(DirectMessage directMessage, Context context) { String text; if (AccessTokenManager.getUserId() == directMessage.getSender().getId()) { text = "D " + directMessage.getRecipient().getScreenName() + " "; } else { text = "D " + directMessage.getSender().getScreenName() + " "; } if (context instanceof MainActivity) { EventBus.getDefault().post(new OpenEditorEvent(text, null, text.length(), null)); } else { Intent intent = new Intent(context, PostActivity.class); intent.putExtra("status", text); intent.putExtra("selection", text.length()); context.startActivity(intent); } } public static void doDestroyDirectMessage(long id) { new DestroyDirectMessageTask().execute(id); } public static void doQuote(twitter4j.Status status, Context context) { String text = " https://twitter.com/" + status.getUser().getScreenName() + "/status/" + String.valueOf(status.getId()); if (context instanceof MainActivity) { EventBus.getDefault().post(new OpenEditorEvent(text, status, null, null)); } else { Intent intent = new Intent(context, PostActivity.class); intent.putExtra("status", text); intent.putExtra("inReplyToStatus", status); context.startActivity(intent); } } }