aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2015-09-05 19:06:46 +0900
committerKazuki Yamaguchi <k@rhe.jp>2015-09-05 19:06:46 +0900
commitd87e8c2b04042b2d72fa11d016ae3e0bd4652681 (patch)
treec80c03351b87f9e33ca432a976d958049113de9b /app
parent24ca4f49f0859f572ed73ea13d76a89716e4c176 (diff)
downloadSmileEssence-d87e8c2b04042b2d72fa11d016ae3e0bd4652681.tar.gz
[WIP] twitter4j.{Status,User,DirectMessage} を排除
Diffstat (limited to 'app')
-rw-r--r--app/app.iml4
-rw-r--r--app/src/androidTest/java/net/lacolaco/smileessence/command/CommandsTest.java2
-rw-r--r--app/src/androidTest/java/net/lacolaco/smileessence/twitter/TweetBuilderTest.java2
-rw-r--r--app/src/androidTest/java/net/lacolaco/smileessence/twitter/UserStreamListenerTest.java4
-rw-r--r--app/src/androidTest/java/net/lacolaco/smileessence/util/TwitterMock.java4
-rw-r--r--app/src/androidTest/java/net/lacolaco/smileessence/viewmodel/EventViewModelTest.java2
-rw-r--r--app/src/androidTest/java/net/lacolaco/smileessence/viewmodel/MessageViewModelTest.java2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/IntentRouter.java5
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/activity/EditCommandActivity.java19
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java56
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/Command.java43
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/CommandOpenUserDetail.java3
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommand.java2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommandCopyTextToClipboard.java2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommandSearchOnGoogle.java2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommandShare.java2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommandTofuBuster.java2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommand.java15
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandAddToReply.java5
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandCongratulate.java13
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandCopy.java5
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandCopyTextToClipboard.java5
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandCopyURLToClipboard.java7
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandFavAndRT.java8
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandMakeAnonymous.java9
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandNanigaja.java15
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandOpenInBrowser.java7
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandOpenQuoteDialog.java5
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandOpenTalkView.java7
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandReview.java5
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandSearchOnGoogle.java5
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandShare.java9
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandTextQuote.java5
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandTofuBuster.java5
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandURLQuote.java7
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/user/UserCommand.java2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandAddToReply.java2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandBlock.java2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandIntroduce.java2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandOpenAclog.java2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandOpenFavstar.java2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandOpenTwilog.java2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandReply.java2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandReportForSpam.java2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandSendMessage.java2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandUnblock.java2
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/data/CommandSettingCache.java64
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/data/DirectMessageCache.java91
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/data/StatusCache.java98
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/data/UserCache.java96
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/entity/CommandSetting.java71
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.java114
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/entity/MuteUserIds.java22
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/entity/Tweet.java159
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/entity/User.java134
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/StatusFilter.java4
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/TweetBuilder.java5
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/UserStreamListener.java125
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/BlockIDsTask.java15
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/BlockTask.java6
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/DeleteMessageTask.java6
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/DeleteStatusTask.java14
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/DirectMessagesTask.java34
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/FavoriteTask.java13
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/FollowTask.java6
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/GetTalkTask.java40
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/HomeTimelineTask.java34
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/MentionsTimelineTask.java32
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/MutesIDsTask.java15
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/ReportForSpamTask.java6
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/RetweetTask.java13
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/SearchTask.java4
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/SendMessageTask.java6
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/SentDirectMessagesTask.java34
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/ShowDirectMessageTask.java8
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/ShowStatusTask.java16
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/ShowUserTask.java10
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/TweetTask.java25
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/TwitterTask.java15
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/TwitterTaskWithProgress.java13
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/UnblockTask.java6
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/UnfavoriteTask.java13
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/UnfollowTask.java6
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/UserListStatusesTask.java30
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/task/UserTimelineTask.java23
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/twitter/util/TwitterUtils.java90
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/HomeFragment.java22
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/MentionsFragment.java20
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/MessagesFragment.java14
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/PostFragment.java5
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/SearchFragment.java5
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/UserListFragment.java25
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/adapter/MessageListAdapter.java10
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/adapter/StatusListAdapter.java14
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageDetailDialogFragment.java96
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageMenuDialogFragment.java12
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/QuoteDialogFragment.java11
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/ReviewDialogFragment.java12
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.java100
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusMenuDialogFragment.java35
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/TalkChainDialogFragment.java68
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.java42
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/UserMenuDialogFragment.java3
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/viewmodel/EventViewModel.java17
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/viewmodel/MessageViewModel.java87
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/viewmodel/StatusViewModel.java207
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/viewmodel/UserViewModel.java10
107 files changed, 1212 insertions, 1434 deletions
diff --git a/app/app.iml b/app/app.iml
index 6f911693..7bef27b0 100644
--- a/app/app.iml
+++ b/app/app.iml
@@ -101,8 +101,8 @@
<orderEntry type="library" exported="" name="org.abego.treelayout.core-1.0.1" level="project" />
<orderEntry type="library" exported="" name="support-v4-23.0.0" level="project" />
<orderEntry type="library" exported="" name="support-annotations-23.0.0" level="project" />
- <orderEntry type="library" exported="" name="adapters-1.0-rc1" level="project" />
<orderEntry type="library" exported="" name="compilerCommon-1.0-rc1" level="project" />
+ <orderEntry type="library" exported="" name="adapters-1.0-rc1" level="project" />
<orderEntry type="library" exported="" name="compiler-1.0-rc1" level="project" />
<orderEntry type="library" exported="" name="baseLibrary-1.0-rc1" level="project" />
<orderEntry type="library" exported="" name="twitter-text-1.13.0" level="project" />
@@ -111,8 +111,8 @@
<orderEntry type="library" exported="" name="crouton-1.8.5" level="project" />
<orderEntry type="library" exported="" name="commons-codec-1.10" level="project" />
<orderEntry type="library" exported="" name="twitter4j-media-support-4.0.4" level="project" />
- <orderEntry type="library" exported="" name="commons-lang3-3.3.2" level="project" />
<orderEntry type="library" exported="" name="kotlin-stdlib-0.12.613" level="project" />
+ <orderEntry type="library" exported="" name="commons-lang3-3.3.2" level="project" />
<orderEntry type="library" exported="" name="twitter4j-core-4.0.4" level="project" />
</component>
</module> \ No newline at end of file
diff --git a/app/src/androidTest/java/net/lacolaco/smileessence/command/CommandsTest.java b/app/src/androidTest/java/net/lacolaco/smileessence/command/CommandsTest.java
index 8616dff1..f86cbab4 100644
--- a/app/src/androidTest/java/net/lacolaco/smileessence/command/CommandsTest.java
+++ b/app/src/androidTest/java/net/lacolaco/smileessence/command/CommandsTest.java
@@ -47,7 +47,7 @@ public class CommandsTest extends ActivityInstrumentationTestCase2<MainActivity>
// final Activity activity = getActivity();
// final Account account = new Account(mock.getAccessToken(), mock.getAccessTokenSecret(), mock.getUserMock().getId(), mock.getUserMock().getScreenName());
// final Status status = mock.getStatusMock();
-// StatusCache.getInstance().put(status);
+// Tweet.fromTwitter(status);
// getActivity().runOnUiThread(new Runnable()
// {
// @Override
diff --git a/app/src/androidTest/java/net/lacolaco/smileessence/twitter/TweetBuilderTest.java b/app/src/androidTest/java/net/lacolaco/smileessence/twitter/TweetBuilderTest.java
index 3e8f55bd..fa387466 100644
--- a/app/src/androidTest/java/net/lacolaco/smileessence/twitter/TweetBuilderTest.java
+++ b/app/src/androidTest/java/net/lacolaco/smileessence/twitter/TweetBuilderTest.java
@@ -29,7 +29,7 @@ import android.test.InstrumentationTestCase;
import net.lacolaco.smileessence.util.TwitterMock;
import twitter4j.Status;
-import twitter4j.User;
+import net.lacolaco.smileessence.entity.User;
public class TweetBuilderTest extends InstrumentationTestCase {
diff --git a/app/src/androidTest/java/net/lacolaco/smileessence/twitter/UserStreamListenerTest.java b/app/src/androidTest/java/net/lacolaco/smileessence/twitter/UserStreamListenerTest.java
index 3c9f05ba..0fe3566b 100644
--- a/app/src/androidTest/java/net/lacolaco/smileessence/twitter/UserStreamListenerTest.java
+++ b/app/src/androidTest/java/net/lacolaco/smileessence/twitter/UserStreamListenerTest.java
@@ -31,10 +31,10 @@ import net.lacolaco.smileessence.entity.Account;
import net.lacolaco.smileessence.util.TwitterMock;
import net.lacolaco.smileessence.view.adapter.CustomListAdapter;
-import twitter4j.DirectMessage;
+import net.lacolaco.smileessence.entity.DirectMessage;
import twitter4j.Status;
import twitter4j.StatusDeletionNotice;
-import twitter4j.User;
+import net.lacolaco.smileessence.entity.User;
public class UserStreamListenerTest extends ActivityInstrumentationTestCase2<MainActivity> {
diff --git a/app/src/androidTest/java/net/lacolaco/smileessence/util/TwitterMock.java b/app/src/androidTest/java/net/lacolaco/smileessence/util/TwitterMock.java
index e70862d5..738da64a 100644
--- a/app/src/androidTest/java/net/lacolaco/smileessence/util/TwitterMock.java
+++ b/app/src/androidTest/java/net/lacolaco/smileessence/util/TwitterMock.java
@@ -36,13 +36,13 @@ import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Properties;
-import twitter4j.DirectMessage;
+import net.lacolaco.smileessence.entity.DirectMessage;
import twitter4j.JSONException;
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.TwitterObjectFactory;
-import twitter4j.User;
+import net.lacolaco.smileessence.entity.User;
public class TwitterMock {
diff --git a/app/src/androidTest/java/net/lacolaco/smileessence/viewmodel/EventViewModelTest.java b/app/src/androidTest/java/net/lacolaco/smileessence/viewmodel/EventViewModelTest.java
index 57ce28d9..922fd718 100644
--- a/app/src/androidTest/java/net/lacolaco/smileessence/viewmodel/EventViewModelTest.java
+++ b/app/src/androidTest/java/net/lacolaco/smileessence/viewmodel/EventViewModelTest.java
@@ -32,7 +32,7 @@ import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.util.TwitterMock;
import twitter4j.Status;
-import twitter4j.User;
+import net.lacolaco.smileessence.entity.User;
import java.util.Locale;
diff --git a/app/src/androidTest/java/net/lacolaco/smileessence/viewmodel/MessageViewModelTest.java b/app/src/androidTest/java/net/lacolaco/smileessence/viewmodel/MessageViewModelTest.java
index b9adfd9a..484d526b 100644
--- a/app/src/androidTest/java/net/lacolaco/smileessence/viewmodel/MessageViewModelTest.java
+++ b/app/src/androidTest/java/net/lacolaco/smileessence/viewmodel/MessageViewModelTest.java
@@ -29,7 +29,7 @@ import android.test.InstrumentationTestCase;
import net.lacolaco.smileessence.entity.Account;
import net.lacolaco.smileessence.util.TwitterMock;
-import twitter4j.DirectMessage;
+import net.lacolaco.smileessence.entity.DirectMessage;
public class MessageViewModelTest extends InstrumentationTestCase {
diff --git a/app/src/main/java/net/lacolaco/smileessence/IntentRouter.java b/app/src/main/java/net/lacolaco/smileessence/IntentRouter.java
index 13e93298..6a5d6d50 100644
--- a/app/src/main/java/net/lacolaco/smileessence/IntentRouter.java
+++ b/app/src/main/java/net/lacolaco/smileessence/IntentRouter.java
@@ -31,6 +31,7 @@ import android.text.TextUtils;
import net.lacolaco.smileessence.activity.MainActivity;
import net.lacolaco.smileessence.command.CommandOpenUserDetail;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.logging.Logger;
import net.lacolaco.smileessence.notification.NotificationType;
import net.lacolaco.smileessence.notification.Notificator;
@@ -191,9 +192,9 @@ public class IntentRouter {
if (id != -1) {
TwitterUtils.tryGetStatus(activity.getCurrentAccount(), id, new TwitterUtils.StatusCallback() {
@Override
- public void success(Status status) {
+ public void success(Tweet tweet) {
StatusDetailDialogFragment fragment = new StatusDetailDialogFragment();
- fragment.setStatusID(status.getId());
+ fragment.setStatusID(tweet.getId());
DialogHelper.showDialog(activity, fragment);
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/activity/EditCommandActivity.java b/app/src/main/java/net/lacolaco/smileessence/activity/EditCommandActivity.java
index a45766bb..556148ac 100644
--- a/app/src/main/java/net/lacolaco/smileessence/activity/EditCommandActivity.java
+++ b/app/src/main/java/net/lacolaco/smileessence/activity/EditCommandActivity.java
@@ -37,7 +37,6 @@ import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.command.Command;
import net.lacolaco.smileessence.command.status.StatusCommand;
import net.lacolaco.smileessence.command.user.UserCommand;
-import net.lacolaco.smileessence.data.CommandSettingCache;
import net.lacolaco.smileessence.entity.CommandSetting;
import net.lacolaco.smileessence.logging.Logger;
import net.lacolaco.smileessence.preference.UserPreferenceHelper;
@@ -60,7 +59,6 @@ public class EditCommandActivity extends Activity {
private CheckBoxModel[] getCheckBoxItems() {
editedCommands = new ArrayList<>();
List<CheckBoxModel> checkBoxModels = new ArrayList<>();
- List<CommandSetting> commandSettings = CommandSetting.getAll();
List<Command> commands = Command.getAllCommands(this);
for (Command command : commands) {
if (command.getKey() < 0) {
@@ -75,17 +73,7 @@ public class EditCommandActivity extends Activity {
continue;
}
editedCommands.add(command);
- CommandSetting setting = null;
- for (CommandSetting s : commandSettings) {
- if (command.getKey() == s.commandKey) {
- setting = s;
- }
- }
- if (setting == null) {
- setting = new CommandSetting(command.getKey(), true);
- setting.save();
- }
- CheckBoxModel checkBoxModel = new CheckBoxModel(text, setting.visibility);
+ CheckBoxModel checkBoxModel = new CheckBoxModel(text, CommandSetting.isVisible(command.getKey()));
checkBoxModels.add(checkBoxModel);
}
return checkBoxModels.toArray(new CheckBoxModel[checkBoxModels.size()]);
@@ -122,10 +110,7 @@ public class EditCommandActivity extends Activity {
for (int i = 0; i < adapter.getCount(); i++) {
CheckBoxModel checkBoxModel = (CheckBoxModel) adapter.getItem(i);
Command command = editedCommands.get(i);
- CommandSetting commandSetting = CommandSetting.selectByKey(command.getKey());
- commandSetting.visibility = checkBoxModel.isChecked();
- commandSetting.save();
- CommandSettingCache.getInstance().put(commandSetting);
+ CommandSetting.setVisible(command.getKey(), checkBoxModel.isChecked());
}
super.onDestroy();
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java b/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java
index 3e65742f..6c82f26d 100644
--- a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java
+++ b/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java
@@ -44,10 +44,8 @@ import net.lacolaco.smileessence.Application;
import net.lacolaco.smileessence.BuildConfig;
import net.lacolaco.smileessence.IntentRouter;
import net.lacolaco.smileessence.R;
-import net.lacolaco.smileessence.data.CommandSettingCache;
import net.lacolaco.smileessence.data.UserListCache;
-import net.lacolaco.smileessence.entity.Account;
-import net.lacolaco.smileessence.entity.CommandSetting;
+import net.lacolaco.smileessence.entity.*;
import net.lacolaco.smileessence.logging.Logger;
import net.lacolaco.smileessence.notification.NotificationType;
import net.lacolaco.smileessence.notification.Notificator;
@@ -63,7 +61,10 @@ import net.lacolaco.smileessence.view.adapter.*;
import net.lacolaco.smileessence.view.dialog.ConfirmDialogFragment;
import net.lacolaco.smileessence.viewmodel.*;
import net.lacolaco.smileessence.viewmodel.menu.MainActivityMenuHelper;
-import twitter4j.*;
+import twitter4j.Paging;
+import twitter4j.QueryResult;
+import twitter4j.Twitter;
+import twitter4j.TwitterStream;
import java.util.Collection;
import java.util.HashMap;
@@ -417,7 +418,7 @@ public class MainActivity extends Activity {
public void startMainLogic() {
initializeView();
- initCommandSetting();
+ CommandSetting.initialize();
startTwitter();
}
@@ -437,7 +438,7 @@ public class MainActivity extends Activity {
for (int i = tweets.size() - 1; i >= 0; i--) {
twitter4j.Status status = tweets.get(i);
if (!status.isRetweet()) {
- StatusViewModel viewModel = new StatusViewModel(status, getCurrentAccount());
+ StatusViewModel viewModel = new StatusViewModel(Tweet.fromTwitter(status));
adapter.addToTop(viewModel);
StatusFilter.filter(MainActivity.this, viewModel);
}
@@ -491,7 +492,7 @@ public class MainActivity extends Activity {
protected void onPostExecute(User user) {
super.onPostExecute(user);
if (user != null) {
- String urlHttps = user.getProfileImageURLHttps();
+ String urlHttps = user.getProfileImageUrl();
homeIcon.setScaleType(ImageView.ScaleType.FIT_CENTER);
new BitmapURLTask(urlHttps, homeIcon).execute();
}
@@ -558,21 +559,14 @@ public class MainActivity extends Activity {
openPostPageWithImage(uri);
}
- private void initCommandSetting() {
- List<CommandSetting> commandSettings = CommandSetting.getAll();
- for (CommandSetting setting : commandSettings) {
- CommandSettingCache.getInstance().put(setting);
- }
- }
-
private void initHome(final Twitter twitter, final Paging paging) {
new HomeTimelineTask(twitter, this, paging) {
@Override
- protected void onPostExecute(twitter4j.Status[] statuses) {
- super.onPostExecute(statuses);
+ protected void onPostExecute(List<Tweet> tweets) {
+ super.onPostExecute(tweets);
StatusListAdapter adapter = (StatusListAdapter) getListAdapter(AdapterID.Home);
- for (twitter4j.Status status : statuses) {
- StatusViewModel statusViewModel = new StatusViewModel(status, currentAccount);
+ for (Tweet tweet : tweets) {
+ StatusViewModel statusViewModel = new StatusViewModel(tweet);
adapter.addToBottom(statusViewModel);
StatusFilter.filter(MainActivity.this, statusViewModel);
}
@@ -589,11 +583,11 @@ public class MainActivity extends Activity {
private void initMentions(final Twitter twitter, final Paging paging) {
new MentionsTimelineTask(twitter, this, paging) {
@Override
- protected void onPostExecute(twitter4j.Status[] statuses) {
- super.onPostExecute(statuses);
+ protected void onPostExecute(List<Tweet> tweets) {
+ super.onPostExecute(tweets);
StatusListAdapter adapter = (StatusListAdapter) getListAdapter(AdapterID.Mentions);
- for (twitter4j.Status status : statuses) {
- adapter.addToBottom(new StatusViewModel(status, currentAccount));
+ for (Tweet tweet : tweets) {
+ adapter.addToBottom(new StatusViewModel(tweet));
}
adapter.updateForce();
}
@@ -606,22 +600,22 @@ public class MainActivity extends Activity {
}
new DirectMessagesTask(twitter, this, paging) {
@Override
- protected void onPostExecute(DirectMessage[] directMessages) {
+ protected void onPostExecute(List<DirectMessage> directMessages) {
super.onPostExecute(directMessages);
MessageListAdapter adapter = (MessageListAdapter) getListAdapter(AdapterID.Messages);
for (DirectMessage message : directMessages) {
- adapter.addToBottom(new MessageViewModel(message, currentAccount));
+ adapter.addToBottom(new MessageViewModel(message));
}
adapter.notifyDataSetChanged();
}
}.execute();
new SentDirectMessagesTask(twitter, this, paging) {
@Override
- protected void onPostExecute(DirectMessage[] directMessages) {
+ protected void onPostExecute(List<DirectMessage> directMessages) {
super.onPostExecute(directMessages);
MessageListAdapter adapter = (MessageListAdapter) getListAdapter(AdapterID.Messages);
for (DirectMessage message : directMessages) {
- adapter.addToBottom(new MessageViewModel(message, currentAccount));
+ adapter.addToBottom(new MessageViewModel(message));
}
adapter.notifyDataSetChanged();
}
@@ -722,12 +716,12 @@ public class MainActivity extends Activity {
adapter.setListFullName(listFullName);
adapter.clear();
adapter.updateForce();
- new UserListStatusesTask(twitter, listFullName, this) {
+ new UserListStatusesTask(twitter, this, listFullName) {
@Override
- protected void onPostExecute(twitter4j.Status[] statuses) {
- super.onPostExecute(statuses);
- for (twitter4j.Status status : statuses) {
- StatusViewModel statusViewModel = new StatusViewModel(status, getCurrentAccount());
+ protected void onPostExecute(List<Tweet> tweets) {
+ super.onPostExecute(tweets);
+ for (Tweet tweet : tweets) {
+ StatusViewModel statusViewModel = new StatusViewModel(tweet);
adapter.addToBottom(statusViewModel);
StatusFilter.filter(MainActivity.this, statusViewModel);
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/Command.java b/app/src/main/java/net/lacolaco/smileessence/command/Command.java
index 5f0015ff..eb8cf797 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/Command.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/Command.java
@@ -33,13 +33,13 @@ import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.command.message.*;
import net.lacolaco.smileessence.command.status.*;
import net.lacolaco.smileessence.command.user.*;
-import net.lacolaco.smileessence.data.CommandSettingCache;
import net.lacolaco.smileessence.entity.Account;
+import net.lacolaco.smileessence.entity.CommandSetting;
+import net.lacolaco.smileessence.entity.Tweet;
+import net.lacolaco.smileessence.entity.User;
import net.lacolaco.smileessence.viewmodel.IViewModel;
-import twitter4j.DirectMessage;
-import twitter4j.Status;
-import twitter4j.User;
+import net.lacolaco.smileessence.entity.DirectMessage;
import java.util.ArrayList;
import java.util.Iterator;
@@ -81,23 +81,23 @@ public abstract class Command implements IViewModel {
return commands;
}
- public static List<Command> getStatusCommands(Activity activity, Status status, Account account) {
+ public static List<Command> getStatusCommands(Activity activity, Tweet tweet, Account account) {
List<Command> commands = new ArrayList<>();
- commands.add(new StatusCommandAddToReply(activity, status));
- commands.add(new StatusCommandOpenTalkView(activity, status, account));
- commands.add(new StatusCommandFavAndRT(activity, status, account));
- commands.add(new StatusCommandOpenQuoteDialog(activity, status));
- commands.add(new StatusCommandShare(activity, status));
- commands.add(new StatusCommandOpenInBrowser(activity, status));
- commands.add(new StatusCommandCopyTextToClipboard(activity, status));
- commands.add(new StatusCommandCopyURLToClipboard(activity, status));
- commands.add(new StatusCommandCopy(activity, status));
- commands.add(new StatusCommandSearchOnGoogle(activity, status));
- commands.add(new StatusCommandTofuBuster(activity, status));
- commands.add(new StatusCommandNanigaja(activity, status, account));
- commands.add(new StatusCommandMakeAnonymous(activity, status, account));
- commands.add(new StatusCommandCongratulate(activity, status, account));
- commands.add(new StatusCommandReview(activity, status));
+ commands.add(new StatusCommandAddToReply(activity, tweet));
+ commands.add(new StatusCommandOpenTalkView(activity, tweet, account));
+ commands.add(new StatusCommandFavAndRT(activity, tweet, account));
+ commands.add(new StatusCommandOpenQuoteDialog(activity, tweet));
+ commands.add(new StatusCommandShare(activity, tweet));
+ commands.add(new StatusCommandOpenInBrowser(activity, tweet));
+ commands.add(new StatusCommandCopyTextToClipboard(activity, tweet));
+ commands.add(new StatusCommandCopyURLToClipboard(activity, tweet));
+ commands.add(new StatusCommandCopy(activity, tweet));
+ commands.add(new StatusCommandSearchOnGoogle(activity, tweet));
+ commands.add(new StatusCommandTofuBuster(activity, tweet));
+ commands.add(new StatusCommandNanigaja(activity, tweet, account));
+ commands.add(new StatusCommandMakeAnonymous(activity, tweet, account));
+ commands.add(new StatusCommandCongratulate(activity, tweet, account));
+ commands.add(new StatusCommandReview(activity, tweet));
return commands;
}
@@ -119,8 +119,7 @@ public abstract class Command implements IViewModel {
if (!command.isEnabled()) {
iterator.remove();
} else if (command.getKey() >= 0) {
- boolean visibility = CommandSettingCache.getInstance().get(command.getKey());
- if (!visibility) {
+ if (!CommandSetting.isVisible(command.getKey())) {
iterator.remove();
}
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/CommandOpenUserDetail.java b/app/src/main/java/net/lacolaco/smileessence/command/CommandOpenUserDetail.java
index dda629cd..09f0593c 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/CommandOpenUserDetail.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/CommandOpenUserDetail.java
@@ -28,6 +28,7 @@ import android.app.Activity;
import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.entity.Account;
+import net.lacolaco.smileessence.entity.User;
import net.lacolaco.smileessence.notification.NotificationType;
import net.lacolaco.smileessence.notification.Notificator;
import net.lacolaco.smileessence.twitter.TwitterApi;
@@ -35,8 +36,6 @@ import net.lacolaco.smileessence.twitter.task.ShowUserTask;
import net.lacolaco.smileessence.view.DialogHelper;
import net.lacolaco.smileessence.view.dialog.UserDetailDialogFragment;
-import twitter4j.User;
-
public class CommandOpenUserDetail extends Command {
// ------------------------------ FIELDS ------------------------------
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommand.java b/app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommand.java
index a36b872d..9c05d80d 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommand.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommand.java
@@ -28,7 +28,7 @@ import android.app.Activity;
import net.lacolaco.smileessence.command.Command;
-import twitter4j.DirectMessage;
+import net.lacolaco.smileessence.entity.DirectMessage;
public abstract class MessageCommand extends Command {
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommandCopyTextToClipboard.java b/app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommandCopyTextToClipboard.java
index 435090fa..7c598b89 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommandCopyTextToClipboard.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommandCopyTextToClipboard.java
@@ -31,7 +31,7 @@ import android.content.ClipboardManager;
import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.notification.Notificator;
-import twitter4j.DirectMessage;
+import net.lacolaco.smileessence.entity.DirectMessage;
public class MessageCommandCopyTextToClipboard extends MessageCommand {
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommandSearchOnGoogle.java b/app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommandSearchOnGoogle.java
index e8de560b..f23e86dd 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommandSearchOnGoogle.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommandSearchOnGoogle.java
@@ -30,7 +30,7 @@ import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.view.DialogHelper;
import net.lacolaco.smileessence.view.dialog.SearchOnGoogleDialogFragment;
-import twitter4j.DirectMessage;
+import net.lacolaco.smileessence.entity.DirectMessage;
public class MessageCommandSearchOnGoogle extends MessageCommand {
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommandShare.java b/app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommandShare.java
index f1a19d6d..5747dfdd 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommandShare.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommandShare.java
@@ -31,7 +31,7 @@ import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.twitter.util.TwitterUtils;
import net.lacolaco.smileessence.util.IntentUtils;
-import twitter4j.DirectMessage;
+import net.lacolaco.smileessence.entity.DirectMessage;
public class MessageCommandShare extends MessageCommand {
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommandTofuBuster.java b/app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommandTofuBuster.java
index 7b3bde07..5e46dbdd 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommandTofuBuster.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/message/MessageCommandTofuBuster.java
@@ -31,7 +31,7 @@ import android.content.Intent;
import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.notification.Notificator;
-import twitter4j.DirectMessage;
+import net.lacolaco.smileessence.entity.DirectMessage;
public class MessageCommandTofuBuster extends MessageCommand {
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommand.java b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommand.java
index dd28dd5f..9f6f3edb 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommand.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommand.java
@@ -28,28 +28,29 @@ import android.app.Activity;
import net.lacolaco.smileessence.command.Command;
+import net.lacolaco.smileessence.entity.Tweet;
import twitter4j.Status;
public abstract class StatusCommand extends Command {
// ------------------------------ FIELDS ------------------------------
- private final Status status;
+ private final Tweet tweet;
// --------------------------- CONSTRUCTORS ---------------------------
- public StatusCommand(int key, Activity activity, Status status) {
+ public StatusCommand(int key, Activity activity, Tweet tweet) {
super(key, activity);
- this.status = status;
+ this.tweet = tweet;
}
// --------------------- GETTER / SETTER METHODS ---------------------
- protected final Status getOriginalStatus() {
- return status.isRetweet() ? status.getRetweetedStatus() : status;
+ protected final Tweet getOriginalStatus() {
+ return tweet.getOriginalTweet();
}
- protected final Status getStatus() {
- return status;
+ protected final Tweet getStatus() {
+ return tweet;
}
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandAddToReply.java b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandAddToReply.java
index ee7d2f74..f845258d 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandAddToReply.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandAddToReply.java
@@ -27,6 +27,7 @@ package net.lacolaco.smileessence.command.status;
import android.app.Activity;
import net.lacolaco.smileessence.R;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.notification.Notificator;
import net.lacolaco.smileessence.view.adapter.PostState;
@@ -36,8 +37,8 @@ public class StatusCommandAddToReply extends StatusCommand {
// --------------------------- CONSTRUCTORS ---------------------------
- public StatusCommandAddToReply(Activity activity, Status status) {
- super(R.id.key_command_status_add_to_reply, activity, status);
+ public StatusCommandAddToReply(Activity activity, Tweet tweet) {
+ super(R.id.key_command_status_add_to_reply, activity, tweet);
}
// --------------------- GETTER / SETTER METHODS ---------------------
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandCongratulate.java b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandCongratulate.java
index 6c260358..577ad7f1 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandCongratulate.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandCongratulate.java
@@ -29,6 +29,7 @@ import android.app.Activity;
import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.command.IConfirmable;
import net.lacolaco.smileessence.entity.Account;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.twitter.TweetBuilder;
import net.lacolaco.smileessence.twitter.TwitterApi;
import net.lacolaco.smileessence.twitter.task.FavoriteTask;
@@ -48,8 +49,8 @@ public class StatusCommandCongratulate extends StatusCommand implements IConfirm
// --------------------------- CONSTRUCTORS ---------------------------
- public StatusCommandCongratulate(Activity activity, Status status, Account account) {
- super(R.id.key_command_status_congratulate, activity, status);
+ public StatusCommandCongratulate(Activity activity, Tweet tweet, Account account) {
+ super(R.id.key_command_status_congratulate, activity, tweet);
this.account = account;
}
@@ -68,7 +69,6 @@ public class StatusCommandCongratulate extends StatusCommand implements IConfirm
// -------------------------- OTHER METHODS --------------------------
public String build() {
- Status status = getOriginalStatus();
int favCount;
Random rand = new Random();
int r = rand.nextInt(100);
@@ -84,18 +84,17 @@ public class StatusCommandCongratulate extends StatusCommand implements IConfirm
favCount = 10000;
}
return String.format("@%s Congrats on your %s ★ tweet! http://favstar.fm/t/%s",
- status.getUser().getScreenName(), favCount, status.getId());
+ getOriginalStatus().getUser().getScreenName(), favCount, getOriginalStatus().getId());
}
@Override
public boolean execute() {
- Status status = getOriginalStatus();
StatusUpdate update = new TweetBuilder().setText(build())
- .setInReplyToStatusID(status.getId())
+ .setInReplyToStatusID(getOriginalStatus().getId())
.build();
Twitter twitter = new TwitterApi(account).getTwitter();
new TweetTask(twitter, update, getActivity()).execute();
- new FavoriteTask(twitter, status.getId(), getActivity()).execute();
+ new FavoriteTask(twitter, getOriginalStatus().getId(), getActivity()).execute();
return true;
}
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandCopy.java b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandCopy.java
index f1647465..64c220b0 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandCopy.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandCopy.java
@@ -28,6 +28,7 @@ import android.app.Activity;
import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.activity.MainActivity;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.view.adapter.PostState;
import twitter4j.Status;
@@ -36,8 +37,8 @@ public class StatusCommandCopy extends StatusCommand {
// --------------------------- CONSTRUCTORS ---------------------------
- public StatusCommandCopy(Activity activity, Status status) {
- super(R.id.key_command_status_copy, activity, status);
+ public StatusCommandCopy(Activity activity, Tweet tweet) {
+ super(R.id.key_command_status_copy, activity, tweet);
}
// --------------------- GETTER / SETTER METHODS ---------------------
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandCopyTextToClipboard.java b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandCopyTextToClipboard.java
index c01a0929..65c38867 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandCopyTextToClipboard.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandCopyTextToClipboard.java
@@ -29,6 +29,7 @@ import android.content.ClipData;
import android.content.ClipboardManager;
import net.lacolaco.smileessence.R;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.notification.Notificator;
import twitter4j.Status;
@@ -37,8 +38,8 @@ public class StatusCommandCopyTextToClipboard extends StatusCommand {
// --------------------------- CONSTRUCTORS ---------------------------
- public StatusCommandCopyTextToClipboard(Activity activity, Status status) {
- super(R.id.key_command_status_copy_text_to_clipboard, activity, status);
+ public StatusCommandCopyTextToClipboard(Activity activity, Tweet tweet) {
+ super(R.id.key_command_status_copy_text_to_clipboard, activity, tweet);
}
// --------------------- GETTER / SETTER METHODS ---------------------
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandCopyURLToClipboard.java b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandCopyURLToClipboard.java
index ea031d2a..65dbffea 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandCopyURLToClipboard.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandCopyURLToClipboard.java
@@ -29,6 +29,7 @@ import android.content.ClipData;
import android.content.ClipboardManager;
import net.lacolaco.smileessence.R;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.notification.Notificator;
import net.lacolaco.smileessence.twitter.util.TwitterUtils;
@@ -38,8 +39,8 @@ public class StatusCommandCopyURLToClipboard extends StatusCommand {
// --------------------------- CONSTRUCTORS ---------------------------
- public StatusCommandCopyURLToClipboard(Activity activity, Status status) {
- super(R.id.key_command_status_copy_url_to_clipboard, activity, status);
+ public StatusCommandCopyURLToClipboard(Activity activity, Tweet tweet) {
+ super(R.id.key_command_status_copy_url_to_clipboard, activity, tweet);
}
// --------------------- GETTER / SETTER METHODS ---------------------
@@ -58,7 +59,7 @@ public class StatusCommandCopyURLToClipboard extends StatusCommand {
@Override
public boolean execute() {
- String statusURL = TwitterUtils.getStatusURL(getOriginalStatus());
+ String statusURL = getOriginalStatus().getTwitterUrl();
ClipboardManager manager = (ClipboardManager) getActivity().getSystemService(Activity.CLIPBOARD_SERVICE);
manager.setPrimaryClip(ClipData.newPlainText("tweet url", statusURL));
Notificator.publish(getActivity(), R.string.notice_copy_clipboard);
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandFavAndRT.java b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandFavAndRT.java
index 1f82e261..d7de6df7 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandFavAndRT.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandFavAndRT.java
@@ -29,12 +29,12 @@ import android.app.Activity;
import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.command.IConfirmable;
import net.lacolaco.smileessence.entity.Account;
+import net.lacolaco.smileessence.entity.Tweet;
+import net.lacolaco.smileessence.entity.User;
import net.lacolaco.smileessence.twitter.TwitterApi;
import net.lacolaco.smileessence.twitter.task.FavoriteTask;
import net.lacolaco.smileessence.twitter.task.RetweetTask;
-import twitter4j.Status;
-import twitter4j.User;
public class StatusCommandFavAndRT extends StatusCommand implements IConfirmable {
@@ -44,8 +44,8 @@ public class StatusCommandFavAndRT extends StatusCommand implements IConfirmable
// --------------------------- CONSTRUCTORS ---------------------------
- public StatusCommandFavAndRT(Activity activity, Status status, Account account) {
- super(R.id.key_command_status_fav_and_rt, activity, status);
+ public StatusCommandFavAndRT(Activity activity, Tweet tweet, Account account) {
+ super(R.id.key_command_status_fav_and_rt, activity, tweet);
this.account = account;
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandMakeAnonymous.java b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandMakeAnonymous.java
index 8526c30f..a0253e2b 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandMakeAnonymous.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandMakeAnonymous.java
@@ -29,6 +29,7 @@ import android.app.Activity;
import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.command.IConfirmable;
import net.lacolaco.smileessence.entity.Account;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.twitter.TweetBuilder;
import net.lacolaco.smileessence.twitter.TwitterApi;
import net.lacolaco.smileessence.twitter.task.FavoriteTask;
@@ -46,15 +47,15 @@ public class StatusCommandMakeAnonymous extends StatusCommand implements IConfir
// -------------------------- STATIC METHODS --------------------------
- public StatusCommandMakeAnonymous(Activity activity, Status status, Account account) {
- super(R.id.key_command_status_make_anonymous, activity, status);
+ public StatusCommandMakeAnonymous(Activity activity, Tweet tweet, Account account) {
+ super(R.id.key_command_status_make_anonymous, activity, tweet);
this.account = account;
}
// --------------------------- CONSTRUCTORS ---------------------------
- public static String build(Activity activity, Status status, Account account) {
- String str = status.getText();
+ public static String build(Activity activity, Tweet tweet, Account account) {
+ String str = tweet.getText();
String header = "";
if (str.startsWith(".")) {
str = str.replaceFirst(".", "");
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandNanigaja.java b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandNanigaja.java
index 99d786ae..1e6ce199 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandNanigaja.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandNanigaja.java
@@ -29,6 +29,7 @@ import android.app.Activity;
import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.command.IConfirmable;
import net.lacolaco.smileessence.entity.Account;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.twitter.TweetBuilder;
import net.lacolaco.smileessence.twitter.TwitterApi;
import net.lacolaco.smileessence.twitter.task.FavoriteTask;
@@ -46,8 +47,8 @@ public class StatusCommandNanigaja extends StatusCommand implements IConfirmable
// --------------------------- CONSTRUCTORS ---------------------------
- public StatusCommandNanigaja(Activity activity, Status status, Account account) {
- super(R.id.key_command_status_nanigaja, activity, status);
+ public StatusCommandNanigaja(Activity activity, Tweet tweet, Account account) {
+ super(R.id.key_command_status_nanigaja, activity, tweet);
this.account = account;
}
@@ -66,15 +67,14 @@ public class StatusCommandNanigaja extends StatusCommand implements IConfirmable
// -------------------------- OTHER METHODS --------------------------
public String build() {
- Status status = getOriginalStatus();
- String str = status.getText();
+ String str = getOriginalStatus().getText();
String header = "";
if (str.startsWith(".")) {
str = str.replaceFirst(".", "");
}
if (str.startsWith(String.format("@%s", account.screenName))) {
str = str.replaceFirst(String.format("@%s", account.screenName), "").trim();
- header = "@" + status.getUser().getScreenName();
+ header = "@" + getOriginalStatus().getUser().getScreenName();
}
str = String.format("%s %s", header, String.format(getFormatString(getActivity()), str)).trim();
return str;
@@ -82,13 +82,12 @@ public class StatusCommandNanigaja extends StatusCommand implements IConfirmable
@Override
public boolean execute() {
- Status status = getOriginalStatus();
StatusUpdate update = new TweetBuilder().setText(build())
- .setInReplyToStatusID(status.getId())
+ .setInReplyToStatusID(getOriginalStatus().getId())
.build();
Twitter twitter = new TwitterApi(account).getTwitter();
new TweetTask(twitter, update, getActivity()).execute();
- new FavoriteTask(twitter, status.getId(), getActivity()).execute();
+ new FavoriteTask(twitter, getOriginalStatus().getId(), getActivity()).execute();
return true;
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandOpenInBrowser.java b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandOpenInBrowser.java
index bef7638b..818ef672 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandOpenInBrowser.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandOpenInBrowser.java
@@ -28,6 +28,7 @@ import android.app.Activity;
import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.command.CommandOpenURL;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.twitter.util.TwitterUtils;
import twitter4j.Status;
@@ -36,8 +37,8 @@ public class StatusCommandOpenInBrowser extends StatusCommand {
// --------------------------- CONSTRUCTORS ---------------------------
- public StatusCommandOpenInBrowser(Activity activity, Status status) {
- super(R.id.key_command_status_open_in_browser, activity, status);
+ public StatusCommandOpenInBrowser(Activity activity, Tweet tweet) {
+ super(R.id.key_command_status_open_in_browser, activity, tweet);
}
// --------------------- GETTER / SETTER METHODS ---------------------
@@ -56,6 +57,6 @@ public class StatusCommandOpenInBrowser extends StatusCommand {
@Override
public boolean execute() {
- return new CommandOpenURL(getActivity(), TwitterUtils.getStatusURL(getOriginalStatus())).execute();
+ return new CommandOpenURL(getActivity(), getOriginalStatus().getTwitterUrl()).execute();
}
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandOpenQuoteDialog.java b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandOpenQuoteDialog.java
index ac08b98c..45fb06e6 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandOpenQuoteDialog.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandOpenQuoteDialog.java
@@ -27,6 +27,7 @@ package net.lacolaco.smileessence.command.status;
import android.app.Activity;
import net.lacolaco.smileessence.R;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.view.DialogHelper;
import net.lacolaco.smileessence.view.dialog.QuoteDialogFragment;
@@ -36,8 +37,8 @@ public class StatusCommandOpenQuoteDialog extends StatusCommand {
// --------------------------- CONSTRUCTORS ---------------------------
- public StatusCommandOpenQuoteDialog(Activity activity, Status status) {
- super(R.id.key_command_status_quote, activity, status);
+ public StatusCommandOpenQuoteDialog(Activity activity, Tweet tweet) {
+ super(R.id.key_command_status_quote, activity, tweet);
}
// --------------------- GETTER / SETTER METHODS ---------------------
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandOpenTalkView.java b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandOpenTalkView.java
index 79e48fed..3034e9cc 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandOpenTalkView.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandOpenTalkView.java
@@ -28,6 +28,7 @@ import android.app.Activity;
import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.entity.Account;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.view.DialogHelper;
import net.lacolaco.smileessence.view.dialog.TalkChainDialogFragment;
@@ -41,8 +42,8 @@ public class StatusCommandOpenTalkView extends StatusCommand {
// --------------------------- CONSTRUCTORS ---------------------------
- public StatusCommandOpenTalkView(Activity activity, Status status, Account account) {
- super(R.id.key_command_status_open_chain, activity, status);
+ public StatusCommandOpenTalkView(Activity activity, Tweet tweet, Account account) {
+ super(R.id.key_command_status_open_chain, activity, tweet);
this.account = account;
}
@@ -55,7 +56,7 @@ public class StatusCommandOpenTalkView extends StatusCommand {
@Override
public boolean isEnabled() {
- return getOriginalStatus().getInReplyToStatusId() >= 0;
+ return getOriginalStatus().getInReplyTo() >= 0;
}
// -------------------------- OTHER METHODS --------------------------
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandReview.java b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandReview.java
index 755e9628..df5f6515 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandReview.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandReview.java
@@ -27,6 +27,7 @@ package net.lacolaco.smileessence.command.status;
import android.app.Activity;
import net.lacolaco.smileessence.R;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.view.DialogHelper;
import net.lacolaco.smileessence.view.dialog.ReviewDialogFragment;
@@ -36,8 +37,8 @@ public class StatusCommandReview extends StatusCommand {
// --------------------------- CONSTRUCTORS ---------------------------
- public StatusCommandReview(Activity activity, Status status) {
- super(R.id.key_command_status_review, activity, status);
+ public StatusCommandReview(Activity activity, Tweet tweet) {
+ super(R.id.key_command_status_review, activity, tweet);
}
// --------------------- GETTER / SETTER METHODS ---------------------
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandSearchOnGoogle.java b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandSearchOnGoogle.java
index 0ecf8ca3..91738e23 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandSearchOnGoogle.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandSearchOnGoogle.java
@@ -27,6 +27,7 @@ package net.lacolaco.smileessence.command.status;
import android.app.Activity;
import net.lacolaco.smileessence.R;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.view.DialogHelper;
import net.lacolaco.smileessence.view.dialog.SearchOnGoogleDialogFragment;
@@ -36,8 +37,8 @@ public class StatusCommandSearchOnGoogle extends StatusCommand {
// --------------------------- CONSTRUCTORS ---------------------------
- public StatusCommandSearchOnGoogle(Activity activity, Status status) {
- super(R.id.key_command_status_search_on_google, activity, status);
+ public StatusCommandSearchOnGoogle(Activity activity, Tweet tweet) {
+ super(R.id.key_command_status_search_on_google, activity, tweet);
}
// --------------------- GETTER / SETTER METHODS ---------------------
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandShare.java b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandShare.java
index 2874b3f9..57987380 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandShare.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandShare.java
@@ -28,6 +28,7 @@ import android.app.Activity;
import android.content.Intent;
import net.lacolaco.smileessence.R;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.twitter.util.TwitterUtils;
import net.lacolaco.smileessence.util.IntentUtils;
@@ -37,8 +38,8 @@ public class StatusCommandShare extends StatusCommand {
// --------------------------- CONSTRUCTORS ---------------------------
- public StatusCommandShare(Activity activity, Status status) {
- super(R.id.key_command_status_share, activity, status);
+ public StatusCommandShare(Activity activity, Tweet tweet) {
+ super(R.id.key_command_status_share, activity, tweet);
}
// --------------------- GETTER / SETTER METHODS ---------------------
@@ -57,10 +58,12 @@ public class StatusCommandShare extends StatusCommand {
@Override
public boolean execute() {
+ String summary = String.format("@%s: %s", getOriginalStatus().getUser().getScreenName(), getOriginalStatus().getText());
+
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SEND);
intent.setType("text/plain");
- intent.putExtra(Intent.EXTRA_TEXT, TwitterUtils.getStatusSummary(getOriginalStatus()));
+ intent.putExtra(Intent.EXTRA_TEXT, summary);
IntentUtils.startActivityIfFound(getActivity(), intent);
return true;
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandTextQuote.java b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandTextQuote.java
index f502c0fa..3c320066 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandTextQuote.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandTextQuote.java
@@ -28,6 +28,7 @@ import android.app.Activity;
import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.activity.MainActivity;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.twitter.TweetBuilder;
import net.lacolaco.smileessence.view.adapter.PostState;
@@ -37,8 +38,8 @@ public class StatusCommandTextQuote extends StatusCommand {
// --------------------------- CONSTRUCTORS ---------------------------
- public StatusCommandTextQuote(Activity activity, Status status) {
- super(-1, activity, status);
+ public StatusCommandTextQuote(Activity activity, Tweet tweet) {
+ super(-1, activity, tweet);
}
// --------------------- GETTER / SETTER METHODS ---------------------
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandTofuBuster.java b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandTofuBuster.java
index 7ceb70a5..223f5dcd 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandTofuBuster.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandTofuBuster.java
@@ -29,6 +29,7 @@ import android.content.ActivityNotFoundException;
import android.content.Intent;
import net.lacolaco.smileessence.R;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.notification.Notificator;
import twitter4j.Status;
@@ -37,8 +38,8 @@ public class StatusCommandTofuBuster extends StatusCommand {
// --------------------------- CONSTRUCTORS ---------------------------
- public StatusCommandTofuBuster(Activity activity, Status status) {
- super(R.id.key_command_status_tofubuster, activity, status);
+ public StatusCommandTofuBuster(Activity activity, Tweet tweet) {
+ super(R.id.key_command_status_tofubuster, activity, tweet);
}
// --------------------- GETTER / SETTER METHODS ---------------------
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandURLQuote.java b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandURLQuote.java
index 8e695cb9..29a5ec38 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandURLQuote.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/status/StatusCommandURLQuote.java
@@ -28,6 +28,7 @@ import android.app.Activity;
import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.activity.MainActivity;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.twitter.util.TwitterUtils;
import net.lacolaco.smileessence.view.adapter.PostState;
@@ -37,8 +38,8 @@ public class StatusCommandURLQuote extends StatusCommand {
// --------------------------- CONSTRUCTORS ---------------------------
- public StatusCommandURLQuote(Activity activity, Status status) {
- super(-1, activity, status);
+ public StatusCommandURLQuote(Activity activity, Tweet tweet) {
+ super(-1, activity, tweet);
}
// --------------------- GETTER / SETTER METHODS ---------------------
@@ -57,7 +58,7 @@ public class StatusCommandURLQuote extends StatusCommand {
@Override
public boolean execute() {
- String statusURL = TwitterUtils.getStatusURL(getOriginalStatus());
+ String statusURL = getOriginalStatus().getTwitterUrl();
PostState.newState().beginTransaction()
.setText(statusURL)
.commitWithOpen((MainActivity) getActivity());
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommand.java b/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommand.java
index a3fae3c8..b371c8a0 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommand.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommand.java
@@ -28,7 +28,7 @@ import android.app.Activity;
import net.lacolaco.smileessence.command.Command;
-import twitter4j.User;
+import net.lacolaco.smileessence.entity.User;
public abstract class UserCommand extends Command {
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandAddToReply.java b/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandAddToReply.java
index 6494eba4..bd0ae429 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandAddToReply.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandAddToReply.java
@@ -30,7 +30,7 @@ import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.notification.Notificator;
import net.lacolaco.smileessence.view.adapter.PostState;
-import twitter4j.User;
+import net.lacolaco.smileessence.entity.User;
public class UserCommandAddToReply extends UserCommand {
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandBlock.java b/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandBlock.java
index ec1e9c0e..159d551a 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandBlock.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandBlock.java
@@ -32,7 +32,7 @@ import net.lacolaco.smileessence.entity.Account;
import net.lacolaco.smileessence.twitter.TwitterApi;
import net.lacolaco.smileessence.twitter.task.BlockTask;
-import twitter4j.User;
+import net.lacolaco.smileessence.entity.User;
public class UserCommandBlock extends UserCommand implements IConfirmable {
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandIntroduce.java b/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandIntroduce.java
index f810aaae..566f3687 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandIntroduce.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandIntroduce.java
@@ -30,7 +30,7 @@ import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.activity.MainActivity;
import net.lacolaco.smileessence.view.adapter.PostState;
-import twitter4j.User;
+import net.lacolaco.smileessence.entity.User;
public class UserCommandIntroduce extends UserCommand {
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandOpenAclog.java b/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandOpenAclog.java
index 63f304e1..e10ba654 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandOpenAclog.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandOpenAclog.java
@@ -30,7 +30,7 @@ import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.command.CommandOpenURL;
import net.lacolaco.smileessence.twitter.util.TwitterUtils;
-import twitter4j.User;
+import net.lacolaco.smileessence.entity.User;
public class UserCommandOpenAclog extends UserCommand {
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandOpenFavstar.java b/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandOpenFavstar.java
index f0175e00..da55fe5e 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandOpenFavstar.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandOpenFavstar.java
@@ -30,7 +30,7 @@ import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.command.CommandOpenURL;
import net.lacolaco.smileessence.twitter.util.TwitterUtils;
-import twitter4j.User;
+import net.lacolaco.smileessence.entity.User;
public class UserCommandOpenFavstar extends UserCommand {
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandOpenTwilog.java b/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandOpenTwilog.java
index 7ee8ec1c..584e1bae 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandOpenTwilog.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandOpenTwilog.java
@@ -30,7 +30,7 @@ import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.command.CommandOpenURL;
import net.lacolaco.smileessence.twitter.util.TwitterUtils;
-import twitter4j.User;
+import net.lacolaco.smileessence.entity.User;
public class UserCommandOpenTwilog extends UserCommand {
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandReply.java b/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandReply.java
index 94dd6cfa..6c9cae7c 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandReply.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandReply.java
@@ -31,7 +31,7 @@ import net.lacolaco.smileessence.activity.MainActivity;
import net.lacolaco.smileessence.twitter.TweetBuilder;
import net.lacolaco.smileessence.view.adapter.PostState;
-import twitter4j.User;
+import net.lacolaco.smileessence.entity.User;
public class UserCommandReply extends UserCommand {
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandReportForSpam.java b/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandReportForSpam.java
index 553dc632..79b037cc 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandReportForSpam.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandReportForSpam.java
@@ -32,7 +32,7 @@ import net.lacolaco.smileessence.entity.Account;
import net.lacolaco.smileessence.twitter.TwitterApi;
import net.lacolaco.smileessence.twitter.task.ReportForSpamTask;
-import twitter4j.User;
+import net.lacolaco.smileessence.entity.User;
public class UserCommandReportForSpam extends UserCommand implements IConfirmable {
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandSendMessage.java b/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandSendMessage.java
index ee966031..ff3c434f 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandSendMessage.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandSendMessage.java
@@ -31,7 +31,7 @@ import net.lacolaco.smileessence.entity.Account;
import net.lacolaco.smileessence.view.DialogHelper;
import net.lacolaco.smileessence.view.dialog.SendMessageDialogFragment;
-import twitter4j.User;
+import net.lacolaco.smileessence.entity.User;
public class UserCommandSendMessage extends UserCommand {
diff --git a/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandUnblock.java b/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandUnblock.java
index 7f1a8776..db271821 100644
--- a/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandUnblock.java
+++ b/app/src/main/java/net/lacolaco/smileessence/command/user/UserCommandUnblock.java
@@ -32,7 +32,7 @@ import net.lacolaco.smileessence.entity.Account;
import net.lacolaco.smileessence.twitter.TwitterApi;
import net.lacolaco.smileessence.twitter.task.UnblockTask;
-import twitter4j.User;
+import net.lacolaco.smileessence.entity.User;
public class UserCommandUnblock extends UserCommand implements IConfirmable {
diff --git a/app/src/main/java/net/lacolaco/smileessence/data/CommandSettingCache.java b/app/src/main/java/net/lacolaco/smileessence/data/CommandSettingCache.java
deleted file mode 100644
index ad0ed9c6..00000000
--- a/app/src/main/java/net/lacolaco/smileessence/data/CommandSettingCache.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2012-2014 lacolaco.net
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package net.lacolaco.smileessence.data;
-
-import net.lacolaco.smileessence.entity.CommandSetting;
-
-import java.util.concurrent.ConcurrentHashMap;
-
-public class CommandSettingCache {
-
- // ------------------------------ FIELDS ------------------------------
-
- private static CommandSettingCache instance = new CommandSettingCache();
-
- private ConcurrentHashMap<Integer, Boolean> cache = new ConcurrentHashMap<>();
-
- // -------------------------- STATIC METHODS --------------------------
-
- private CommandSettingCache() {
- }
-
- // --------------------------- CONSTRUCTORS ---------------------------
-
- public static CommandSettingCache getInstance() {
- return instance;
- }
-
- // -------------------------- OTHER METHODS --------------------------
-
- public Boolean get(int id) {
- Boolean visibility = cache.get(Integer.valueOf(id));
- return visibility != null ? visibility : true;
- }
-
- public void put(CommandSetting commandSetting) {
- cache.put(commandSetting.commandKey, commandSetting.visibility);
- }
-
- public boolean remove(int id) {
- return cache.remove(Integer.valueOf(id));
- }
-}
diff --git a/app/src/main/java/net/lacolaco/smileessence/data/DirectMessageCache.java b/app/src/main/java/net/lacolaco/smileessence/data/DirectMessageCache.java
deleted file mode 100644
index c7a83b50..00000000
--- a/app/src/main/java/net/lacolaco/smileessence/data/DirectMessageCache.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2012-2014 lacolaco.net
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package net.lacolaco.smileessence.data;
-
-import twitter4j.DirectMessage;
-
-import java.util.Collection;
-import java.util.concurrent.ConcurrentHashMap;
-
-public class DirectMessageCache {
-
- // ------------------------------ FIELDS ------------------------------
-
- private static DirectMessageCache instance = new DirectMessageCache();
-
- private ConcurrentHashMap<Long, DirectMessage> cache = new ConcurrentHashMap<>();
-
- // -------------------------- STATIC METHODS --------------------------
-
- private DirectMessageCache() {
- }
-
- // --------------------------- CONSTRUCTORS ---------------------------
-
- public static DirectMessageCache getInstance() {
- return instance;
- }
-
- // -------------------------- OTHER METHODS --------------------------
-
- /**
- * Get all elements
- *
- * @return cached all message
- */
- public Collection<DirectMessage> all() {
- return cache.values();
- }
-
- /**
- * Get message by id
- *
- * @param id message id
- * @return cached value
- */
- public DirectMessage get(long id) {
- return cache.get(id);
- }
-
- /**
- * Put message into cache
- *
- * @param message
- * @return the previous value associated with key, or null if there was no mapping for key
- */
- public DirectMessage put(DirectMessage message) {
- return cache.put(message.getId(), message);
- }
-
- /**
- * Remove message by id
- *
- * @param id message id
- * @return removed message
- */
- public DirectMessage remove(long id) {
- return cache.remove(id);
- }
-}
diff --git a/app/src/main/java/net/lacolaco/smileessence/data/StatusCache.java b/app/src/main/java/net/lacolaco/smileessence/data/StatusCache.java
deleted file mode 100644
index 76c89a40..00000000
--- a/app/src/main/java/net/lacolaco/smileessence/data/StatusCache.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2012-2014 lacolaco.net
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package net.lacolaco.smileessence.data;
-
-import twitter4j.Status;
-
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentLinkedQueue;
-
-public class StatusCache {
-
- // ------------------------------ FIELDS ------------------------------
-
- private static StatusCache instance = new StatusCache();
-
- private ConcurrentHashMap<Long, Status> cache = new ConcurrentHashMap<>();
-
- private ConcurrentLinkedQueue<Long> ignoreIDs = new ConcurrentLinkedQueue<>();
-
- // -------------------------- STATIC METHODS --------------------------
-
- private StatusCache() {
- }
-
- // --------------------------- CONSTRUCTORS ---------------------------
-
- public static StatusCache getInstance() {
- return instance;
- }
-
- // -------------------------- OTHER METHODS --------------------------
-
- public void addToIgnoreStatus(long id) {
- ignoreIDs.add(id);
- }
-
- /**
- * Get status by id
- *
- * @param id status id
- * @return cached value
- */
- public Status get(long id) {
- return cache.get(id);
- }
-
- public boolean isIgnored(long id) {
- return ignoreIDs.contains(id);
- }
-
- /**
- * Put status into cache
- *
- * @param status
- * @return the previous value associated with key, or null if there was no mapping for key
- */
- public Status put(Status status) {
- if (status.isRetweet()) {
- put(status.getRetweetedStatus());
- }
- if (cache.containsKey(status.getId())) {
- cache.remove(status.getId());
- }
- return cache.put(status.getId(), status);
- }
-
- /**
- * Remove status by id
- *
- * @param id status id
- * @return removed status
- */
- public Status remove(long id) {
- return cache.remove(id);
- }
-}
diff --git a/app/src/main/java/net/lacolaco/smileessence/data/UserCache.java b/app/src/main/java/net/lacolaco/smileessence/data/UserCache.java
deleted file mode 100644
index 831a0949..00000000
--- a/app/src/main/java/net/lacolaco/smileessence/data/UserCache.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2012-2014 lacolaco.net
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-package net.lacolaco.smileessence.data;
-
-import twitter4j.User;
-
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentLinkedQueue;
-
-public class UserCache {
-
- // ------------------------------ FIELDS ------------------------------
-
- private static UserCache instance = new UserCache();
-
- private ConcurrentHashMap<Long, User> cache = new ConcurrentHashMap<>();
-
- private ConcurrentLinkedQueue<Long> invisibleIDs = new ConcurrentLinkedQueue<>();
-
- // -------------------------- STATIC METHODS --------------------------
-
- private UserCache() {
- }
-
- // --------------------------- CONSTRUCTORS ---------------------------
-
- public static UserCache getInstance() {
- return instance;
- }
-
- // -------------------------- OTHER METHODS --------------------------
-
- /**
- * Get user by id
- *
- * @param id user id
- * @return cached value
- */
- public User get(long id) {
- return cache.get(id);
- }
-
- public boolean isInvisibleUserID(long id) {
- return invisibleIDs.contains(Long.valueOf(id));
- }
-
- /**
- * Put user into cache
- *
- * @param user
- * @return the previous value associated with key, or null if there was no mapping for key
- */
- public User put(User user) {
- return cache.put(user.getId(), user);
- }
-
- public void putInvisibleUser(long id) {
- invisibleIDs.add(id);
- }
-
- /**
- * Remove user by id
- *
- * @param id user id
- * @return removed user
- */
- public User remove(long id) {
- return cache.remove(id);
- }
-
- public void removeInvisibleUser(long id) {
- invisibleIDs.remove(Long.valueOf(id));
- }
-}
diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/CommandSetting.java b/app/src/main/java/net/lacolaco/smileessence/entity/CommandSetting.java
index 3cb08ce0..ab9f9073 100644
--- a/app/src/main/java/net/lacolaco/smileessence/entity/CommandSetting.java
+++ b/app/src/main/java/net/lacolaco/smileessence/entity/CommandSetting.java
@@ -24,42 +24,65 @@
package net.lacolaco.smileessence.entity;
-import com.activeandroid.Model;
import com.activeandroid.annotation.Column;
import com.activeandroid.annotation.Table;
import com.activeandroid.query.Select;
import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
-@Table(name = "Commands")
-public class CommandSetting extends Model {
+public class CommandSetting {
+ public static ConcurrentHashMap<Integer, Boolean> cache;
- // ------------------------------ FIELDS ------------------------------
-
- @Column(name = "CommandKey")
- public int commandKey;
- @Column(name = "Visibility")
- public boolean visibility;
-
- // -------------------------- STATIC METHODS --------------------------
+ public static boolean isVisible(int key) {
+ if (cache == null) {
+ throw new IllegalStateException("Call .initialize first");
+ }
+ Boolean result = cache.get(key);
+ if (result == null) {
+ result = true; // default value
+ }
+ return result;
+ }
- public CommandSetting() {
- super();
+ public static void setVisible(int key, boolean value) {
+ if (cache == null) {
+ throw new IllegalStateException("Call .initialize first");
+ }
+ Model model = new Select().from(Model.class).where("CommandKey = ?", key).executeSingle();
+ if (model == null) {
+ model = new Model();
+ }
+ model.commandKey = key;
+ model.visibility = value;
+ model.save();
+ cache.put(key, value);
}
- public CommandSetting(int commandKey, boolean visibility) {
- super();
- this.commandKey = commandKey;
- this.visibility = visibility;
+ public static void initialize() {
+ cache = new ConcurrentHashMap<>();
+ List<Model> all = new Select().from(Model.class).execute();
+ for(Model model : all) {
+ cache.put(model.commandKey, model.visibility);
+ }
}
- // --------------------------- CONSTRUCTORS ---------------------------
+ @Table(name = "Commands")
+ private static class Model extends com.activeandroid.Model {
+ // ------------------------------ FIELDS ------------------------------
+ @Column(name = "CommandKey")
+ public int commandKey; // R.id はいってるらしいけどいいのこれ?(しらない)
+ @Column(name = "Visibility")
+ public boolean visibility;
- public static List<CommandSetting> getAll() {
- return new Select().from(CommandSetting.class).execute();
- }
+ public Model() {
+ super();
+ }
- public static CommandSetting selectByKey(int key) {
- return new Select().from(CommandSetting.class).where("CommandKey = ?", key).executeSingle();
+ public Model(int commandKey, boolean visibility) {
+ super();
+ this.commandKey = commandKey;
+ this.visibility = visibility;
+ }
}
-}
+} \ No newline at end of file
diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.java b/app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.java
new file mode 100644
index 00000000..dd870836
--- /dev/null
+++ b/app/src/main/java/net/lacolaco/smileessence/entity/DirectMessage.java
@@ -0,0 +1,114 @@
+package net.lacolaco.smileessence.entity;
+
+import com.google.common.base.Function;
+import com.google.common.cache.Cache;
+import com.google.common.cache.CacheBuilder;
+import com.google.common.collect.Lists;
+import twitter4j.*;
+
+import java.util.Date;
+import java.util.List;
+
+public class DirectMessage {
+ // キャッシュ これも weak reference
+ private static Cache<Long, DirectMessage> storage = CacheBuilder.newBuilder().weakValues().build();
+
+ public synchronized static DirectMessage fetch(long statusId) {
+ return storage.getIfPresent(statusId);
+ }
+
+ public synchronized static void remove(long statusId) {
+ storage.invalidate(statusId);
+ }
+
+ public synchronized static DirectMessage fromTwitter(twitter4j.DirectMessage st) {
+ DirectMessage t = fetch(st.getId());
+ if (t == null) {
+ t = new DirectMessage(st);
+ storage.put(st.getId(), t);
+ } else {
+ t.update(st);
+ }
+ return t;
+ }
+
+ public synchronized static List<DirectMessage> fromTwitter(List<twitter4j.DirectMessage> sts) {
+ return Lists.transform(sts, new Function<twitter4j.DirectMessage, DirectMessage>() {
+ @Override
+ public DirectMessage apply(twitter4j.DirectMessage input) {
+ return DirectMessage.fromTwitter(input);
+ }
+ });
+ }
+
+ // インスタンス
+ private long id;
+ private User sender;
+ private User recipient;
+ private String text;
+ private Date createdAt;
+
+ private UserMentionEntity[] mentions;
+ private HashtagEntity[] hashtags;
+ private MediaEntity[] media;
+ private URLEntity[] urls;
+ private SymbolEntity[] symbols;
+
+ private DirectMessage(twitter4j.DirectMessage st) {
+ update(st);
+ }
+
+ private void update(twitter4j.DirectMessage message) {
+ id = message.getId();
+ sender = User.fromTwitter(message.getSender());
+ recipient = User.fromTwitter(message.getRecipient());
+ text = message.getText();
+ createdAt = message.getCreatedAt();
+
+ mentions = message.getUserMentionEntities();
+ hashtags = message.getHashtagEntities();
+ media = message.getExtendedMediaEntities().length > 0 ? message.getExtendedMediaEntities() : message.getMediaEntities();
+ urls = message.getURLEntities();
+ symbols = message.getSymbolEntities();
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ public User getSender() {
+ return sender;
+ }
+
+ public User getRecipient() {
+ return recipient;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public Date getCreatedAt() {
+ return createdAt;
+ }
+
+ public UserMentionEntity[] getMentions() {
+ return mentions;
+ }
+
+ public HashtagEntity[] getHashtags() {
+ return hashtags;
+ }
+
+ public MediaEntity[] getMedia() {
+ return media;
+ }
+
+ public URLEntity[] getUrls() {
+ return urls;
+ }
+
+ public SymbolEntity[] getSymbols() {
+ return symbols;
+ }
+}
diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/MuteUserIds.java b/app/src/main/java/net/lacolaco/smileessence/entity/MuteUserIds.java
new file mode 100644
index 00000000..e699adaa
--- /dev/null
+++ b/app/src/main/java/net/lacolaco/smileessence/entity/MuteUserIds.java
@@ -0,0 +1,22 @@
+package net.lacolaco.smileessence.entity;
+
+import android.support.annotation.NonNull;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
+
+public class MuteUserIds {
+ private static Set<Long> storage = new HashSet<>();
+
+ public synchronized static boolean isMuted(long userId) {
+ return storage.contains(userId);
+ }
+
+ public synchronized static void remove(long userId) {
+ storage.remove(userId);
+ }
+
+ public synchronized static void add(long userId) { storage.add(userId); }
+}
diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.java b/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.java
new file mode 100644
index 00000000..effec22f
--- /dev/null
+++ b/app/src/main/java/net/lacolaco/smileessence/entity/Tweet.java
@@ -0,0 +1,159 @@
+package net.lacolaco.smileessence.entity;
+
+import com.google.common.base.Function;
+import com.google.common.cache.Cache;
+import com.google.common.cache.CacheBuilder;
+import com.google.common.collect.Lists;
+import net.lacolaco.smileessence.twitter.util.TwitterUtils;
+import twitter4j.*;
+
+import java.util.Date;
+import java.util.List;
+
+public class Tweet {
+ // キャッシュ こっちは soft reference
+ private static Cache<Long, Tweet> storage = CacheBuilder.newBuilder().softValues().build();
+
+ public synchronized static Tweet fetch(long statusId) {
+ return storage.getIfPresent(statusId);
+ }
+
+ public synchronized static void remove(long statusId) {
+ storage.invalidate(statusId);
+ }
+
+ public synchronized static Tweet fromTwitter(final twitter4j.Status st) {
+ Tweet t = fetch(st.getId());
+ if (t == null) {
+ t = new Tweet(st);
+ storage.put(st.getId(), t);
+ } else {
+ t.update(st);
+ }
+ return t;
+ }
+
+ public synchronized static List<Tweet> fromTwitter(List<Status> sts) {
+ return Lists.transform(sts, new Function<Status, Tweet>() {
+ @Override
+ public Tweet apply(twitter4j.Status input) {
+ return Tweet.fromTwitter(input);
+ }
+ });
+ }
+
+ // インスタンス
+ private long id;
+ private User user;
+ private String text;
+ private Date createdAt;
+ private String source;
+ private boolean isRetweet;
+ private Tweet retweetedTweet;
+ private UserMentionEntity[] mentions;
+ private HashtagEntity[] hashtags;
+ private MediaEntity[] media;
+ private URLEntity[] urls;
+ private SymbolEntity[] symbols;
+ private long inReplyTo;
+ private int favoriteCount;
+ private int retweetCount;
+
+ private Tweet(twitter4j.Status st) {
+ update(st);
+ }
+
+ private void update(twitter4j.Status status) {
+ id = status.getId();
+ user = User.fromTwitter(status.getUser());
+ text = TwitterUtils.replaceURLEntities(status.getText(), status.getURLEntities(), false);
+ createdAt = status.getCreatedAt();
+ source = status.getSource();
+ favoriteCount = status.getFavoriteCount();
+ retweetCount = status.getRetweetCount();
+
+ mentions = status.getUserMentionEntities();
+ hashtags = status.getHashtagEntities();
+ media = status.getExtendedMediaEntities().length > 0 ? status.getExtendedMediaEntities() : status.getMediaEntities();
+ urls = status.getURLEntities();
+ symbols = status.getSymbolEntities();
+ inReplyTo = status.getInReplyToStatusId();
+
+ isRetweet = status.isRetweet();
+ if (isRetweet()) {
+ retweetedTweet = Tweet.fromTwitter(status.getRetweetedStatus());
+ }
+ }
+
+ public String getTwitterUrl() {
+ return String.format("https://twitter.com/%s/status/%s", getOriginalTweet().getUser().getScreenName(), getOriginalTweet().getId());
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ public User getUser() {
+ return user;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public Date getCreatedAt() {
+ return createdAt;
+ }
+
+ public String getSource() {
+ return source;
+ }
+
+ public boolean isRetweet() {
+ return isRetweet;
+ }
+
+ public Tweet getRetweetedTweet() {
+ return retweetedTweet;
+ }
+
+ public Tweet getOriginalTweet() {
+ if (isRetweet()) {
+ return getRetweetedTweet();
+ } else {
+ return this;
+ }
+ }
+
+ public int getFavoriteCount() {
+ return favoriteCount;
+ }
+
+ public int getRetweetCount() {
+ return retweetCount;
+ }
+
+ public UserMentionEntity[] getMentions() {
+ return mentions;
+ }
+
+ public HashtagEntity[] getHashtags() {
+ return hashtags;
+ }
+
+ public MediaEntity[] getMedia() {
+ return media;
+ }
+
+ public URLEntity[] getUrls() {
+ return urls;
+ }
+
+ public SymbolEntity[] getSymbols() {
+ return symbols;
+ }
+
+ public long getInReplyTo() {
+ return inReplyTo;
+ }
+}
diff --git a/app/src/main/java/net/lacolaco/smileessence/entity/User.java b/app/src/main/java/net/lacolaco/smileessence/entity/User.java
new file mode 100644
index 00000000..04f3e4fc
--- /dev/null
+++ b/app/src/main/java/net/lacolaco/smileessence/entity/User.java
@@ -0,0 +1,134 @@
+package net.lacolaco.smileessence.entity;
+
+import com.google.common.cache.Cache;
+import com.google.common.cache.CacheBuilder;
+
+public class User {
+ // 重複防止用キャッシュ こっちは weak reference
+ private static Cache<Long, User> storage = CacheBuilder.newBuilder().weakValues().build();
+
+ public synchronized static User fetch(long userId) {
+ return storage.getIfPresent(userId);
+ }
+
+ public synchronized static User fromTwitter(final twitter4j.User st) {
+ User u = fetch(st.getId());
+ if (u == null) {
+ u = new User(st);
+ storage.put(st.getId(), u);
+ } else {
+ u.update(st);
+ }
+ return u;
+ }
+
+ // インスタンス
+ private long id;
+ private boolean isProtected;
+ private String screenName;
+ private String name;
+ private String profileImageUrl;
+ private String profileBannerUrl;
+ private String description;
+ private String location;
+ private String url;
+ private int favoritesCount;
+ private int statusesCount;
+ private int friendsCount;
+ private int followersCount;
+ private boolean isVerified;
+
+ private User(twitter4j.User st) {
+ update(st);
+ }
+
+ private void update(twitter4j.User user) {
+ id = user.getId();
+ isProtected = user.isProtected();
+ screenName = user.getScreenName();
+ name = user.getName();
+ profileImageUrl = user.getProfileImageURLHttps();
+ profileBannerUrl = user.getProfileBannerURL();
+ description = user.getDescription();
+ location = user.getLocation();
+ url = user.getURL();
+ favoritesCount = user.getFavouritesCount();
+ statusesCount = user.getStatusesCount();
+ friendsCount = user.getFriendsCount();
+ followersCount = user.getFollowersCount();
+ isVerified = user.isVerified();
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ public boolean isProtected() {
+ return isProtected;
+ }
+
+ public String getScreenName() {
+ return screenName;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getProfileImageUrl() {
+ return profileImageUrl;
+ }
+
+ public String getProfileImageUrlOriginal() {
+ return getProfileImageUrlWithSuffix("");
+ }
+
+ private String getProfileImageUrlWithSuffix(String suffix) {
+ String original = getProfileImageUrl();
+ if (original != null) {
+ String url = original.substring(0, original.lastIndexOf("_")) + suffix;
+ int extIndex = original.lastIndexOf(".");
+ if (extIndex > original.lastIndexOf("/")) {
+ url += original.substring(extIndex);
+ }
+ return url;
+ }
+ return null;
+ }
+
+ public String getProfileBannerUrl() {
+ return profileBannerUrl;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public String getLocation() {
+ return location;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public int getFavoritesCount() {
+ return favoritesCount;
+ }
+
+ public int getStatusesCount() {
+ return statusesCount;
+ }
+
+ public int getFriendsCount() {
+ return friendsCount;
+ }
+
+ public int getFollowersCount() {
+ return followersCount;
+ }
+
+ public boolean isVerified() {
+ return isVerified;
+ }
+}
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 986055d7..9c07fb6d 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/StatusFilter.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/StatusFilter.java
@@ -40,13 +40,13 @@ public class StatusFilter {
}
private static void extract(MainActivity activity, StatusViewModel status) {
- if (status.isRetweet()) {
+ if (status.getTweet().isRetweet()) {
return;
}
Pattern pattern;
for (ExtractionWord word : ExtractionWord.getAll()) {
pattern = Pattern.compile(word.text);
- if (pattern.matcher(status.getText()).find()) {
+ if (pattern.matcher(status.getTweet().getText()).find()) {
addToMentions(activity, status);
}
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/TweetBuilder.java b/app/src/main/java/net/lacolaco/smileessence/twitter/TweetBuilder.java
index 4fe692c8..2cd0954a 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/TweetBuilder.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/TweetBuilder.java
@@ -26,6 +26,7 @@ package net.lacolaco.smileessence.twitter;
import android.text.TextUtils;
+import net.lacolaco.smileessence.entity.Tweet;
import twitter4j.Status;
import twitter4j.StatusUpdate;
@@ -54,8 +55,8 @@ public class TweetBuilder {
return this;
}
- public TweetBuilder setQuotation(Status status) {
- return setText(String.format(" RT @%s: %s", status.getUser().getScreenName(), status.getText()));
+ public TweetBuilder setQuotation(Tweet tweet) {
+ return setText(String.format(" RT @%s: %s", tweet.getUser().getScreenName(), tweet.getText()));
}
public TweetBuilder setText(String text) {
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/UserStreamListener.java b/app/src/main/java/net/lacolaco/smileessence/twitter/UserStreamListener.java
index 41cabcc9..b34a8984 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/UserStreamListener.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/UserStreamListener.java
@@ -27,6 +27,9 @@ package net.lacolaco.smileessence.twitter;
import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.activity.MainActivity;
import net.lacolaco.smileessence.data.*;
+import net.lacolaco.smileessence.entity.DirectMessage;
+import net.lacolaco.smileessence.entity.Tweet;
+import net.lacolaco.smileessence.entity.User;
import net.lacolaco.smileessence.notification.Notificator;
import net.lacolaco.smileessence.view.adapter.CustomListAdapter;
import net.lacolaco.smileessence.view.adapter.EventListAdapter;
@@ -36,8 +39,9 @@ import net.lacolaco.smileessence.viewmodel.EnumEvent;
import net.lacolaco.smileessence.viewmodel.EventViewModel;
import net.lacolaco.smileessence.viewmodel.MessageViewModel;
import net.lacolaco.smileessence.viewmodel.StatusViewModel;
-
-import twitter4j.*;
+import twitter4j.ConnectionLifeCycleListener;
+import twitter4j.Status;
+import twitter4j.StatusDeletionNotice;
public class UserStreamListener implements twitter4j.UserStreamListener, ConnectionLifeCycleListener {
@@ -86,22 +90,19 @@ public class UserStreamListener implements twitter4j.UserStreamListener, Connect
@Override
public void onStatus(Status status) {
- StatusCache.getInstance().put(status);
- if (isIgnoredStatus(status)) {
- return;
- }
- StatusViewModel viewModel = new StatusViewModel(status, activity.getCurrentAccount());
- addToHome(viewModel);
- if (status.isRetweet()) {
- if (viewModel.isRetweetOfMe()) {
- addToHistory(new EventViewModel(EnumEvent.RETWEETED, status.getUser(), status));
- }
- } else if (viewModel.isMention()) {
- addToMentions(viewModel);
- EventViewModel mentioned = new EventViewModel(EnumEvent.MENTIONED, status.getUser(), status);
- Notificator.publish(activity, mentioned.getFormattedString(activity));
- }
- StatusFilter.filter(activity, viewModel);
+ Tweet tweet = Tweet.fromTwitter(status);
+ StatusViewModel vm = new StatusViewModel(tweet);
+ addToHome(vm);
+ if (tweet.isRetweet()) {
+ //if (viewModel.isRetweetOfMe()) {
+ // addToHistory(new EventViewModel(EnumEvent.RETWEETED, status.getUser(), status));
+ //}
+ }// else if (viewModel.isMention()) {
+ // addToMentions(viewModel);
+ // EventViewModel mentioned = new EventViewModel(EnumEvent.MENTIONED, status.getUser(), status);
+ // Notificator.publish(activity, mentioned.getFormattedString(activity));
+ //}
+ StatusFilter.filter(activity, vm);
FavoriteCache.getInstance().put(status);
}
@@ -114,7 +115,7 @@ public class UserStreamListener implements twitter4j.UserStreamListener, Connect
statusListAdapter.updateForce();
}
}
- StatusCache.getInstance().remove(statusDeletionNotice.getStatusId());
+ Tweet.remove(statusDeletionNotice.getStatusId());
}
@Override
@@ -126,7 +127,7 @@ public class UserStreamListener implements twitter4j.UserStreamListener, Connect
}
@Override
- public void onStallWarning(StallWarning warning) {
+ public void onStallWarning(twitter4j.StallWarning warning) {
}
// --------------------- Interface StreamListener ---------------------
@@ -143,7 +144,7 @@ public class UserStreamListener implements twitter4j.UserStreamListener, Connect
MessageListAdapter messages = (MessageListAdapter) activity.getListAdapter(MainActivity.AdapterID.Messages);
messages.removeByMessageID(directMessageId);
messages.updateForce();
- DirectMessageCache.getInstance().remove(directMessageId);
+ DirectMessage.remove(directMessageId);
}
@Override
@@ -151,12 +152,12 @@ public class UserStreamListener implements twitter4j.UserStreamListener, Connect
}
@Override
- public void onFavorite(User source, User target, Status favoritedStatus) {
- StatusCache.getInstance().put(favoritedStatus);
- if (isMe(target)) {
- addToHistory(new EventViewModel(EnumEvent.FAVORITED, source, favoritedStatus));
+ public void onFavorite(twitter4j.User source, twitter4j.User target, Status favoritedStatus) {
+ Tweet tweet = Tweet.fromTwitter(favoritedStatus);
+ if (isMe(User.fromTwitter(target))) {
+ addToHistory(new EventViewModel(EnumEvent.FAVORITED, User.fromTwitter(source), tweet));
}
- if (isMe(source)) {
+ if (isMe(User.fromTwitter(source))) {
FavoriteCache.getInstance().put(favoritedStatus, true);
activity.getListAdapter(MainActivity.AdapterID.Home).update();
activity.getListAdapter(MainActivity.AdapterID.Mentions).update();
@@ -164,76 +165,74 @@ public class UserStreamListener implements twitter4j.UserStreamListener, Connect
}
@Override
- public void onUnfavorite(User source, User target, Status unfavoritedStatus) {
- StatusCache.getInstance().put(unfavoritedStatus);
+ public void onUnfavorite(twitter4j.User source, twitter4j.User target, twitter4j.Status unfavoritedStatus) {
+ Tweet tweet = Tweet.fromTwitter(unfavoritedStatus);
boolean unfavNoticeEnabled = activity.getUserPreferenceHelper().getValue(R.string.key_setting_notify_on_unfavorited, true);
- if (isMe(target) && unfavNoticeEnabled) {
- addToHistory(new EventViewModel(EnumEvent.UNFAVORITED, source, unfavoritedStatus));
+ if (isMe(User.fromTwitter(target)) && unfavNoticeEnabled) {
+ addToHistory(new EventViewModel(EnumEvent.UNFAVORITED, User.fromTwitter(source), tweet));
}
- if (isMe(source)) {
- FavoriteCache.getInstance().put(unfavoritedStatus, false);
+ if (isMe(User.fromTwitter(source))) {
+ //FavoriteCache.getInstance().put(unfavoritedStatus, false);
activity.getListAdapter(MainActivity.AdapterID.Home).update();
activity.getListAdapter(MainActivity.AdapterID.Mentions).update();
}
}
@Override
- public void onFollow(User source, User followedUser) {
- UserCache.getInstance().put(source);
- UserCache.getInstance().put(followedUser);
- if (isMe(followedUser)) {
- addToHistory(new EventViewModel(EnumEvent.FOLLOWED, source));
+ public void onFollow(twitter4j.User source, twitter4j.User followedUser) {
+ if (isMe(User.fromTwitter(followedUser))) {
+ addToHistory(new EventViewModel(EnumEvent.FOLLOWED, User.fromTwitter(source)));
}
}
@Override
- public void onUnfollow(User source, User unfollowedUser) {
+ public void onUnfollow(twitter4j.User source, twitter4j.User unfollowedUser) {
}
@Override
- public void onDirectMessage(DirectMessage directMessage) {
- DirectMessageCache.getInstance().put(directMessage);
- if (isMe(directMessage.getRecipient())) {
- addToHistory(new EventViewModel(EnumEvent.RECEIVE_MESSAGE, directMessage.getSender()));
+ public void onDirectMessage(twitter4j.DirectMessage directMessage) {
+ DirectMessage message = DirectMessage.fromTwitter(directMessage);
+ if (isMe(message.getRecipient())) {
+ addToHistory(new EventViewModel(EnumEvent.RECEIVE_MESSAGE, User.fromTwitter(directMessage.getSender())));
}
- MessageViewModel message = new MessageViewModel(directMessage, activity.getCurrentAccount());
- addToMessages(message);
+ MessageViewModel vm = new MessageViewModel(message);
+ addToMessages(vm);
}
@Override
- public void onUserListMemberAddition(User addedMember, User listOwner, UserList list) {
+ public void onUserListMemberAddition(twitter4j.User addedMember, twitter4j.User listOwner, twitter4j.UserList list) {
}
@Override
- public void onUserListMemberDeletion(User deletedMember, User listOwner, UserList list) {
+ public void onUserListMemberDeletion(twitter4j.User deletedMember, twitter4j.User listOwner, twitter4j.UserList list) {
}
@Override
- public void onUserListSubscription(User subscriber, User listOwner, UserList list) {
+ public void onUserListSubscription(twitter4j.User subscriber, twitter4j.User listOwner, twitter4j.UserList list) {
UserListCache.getInstance().put(list.getFullName());
}
@Override
- public void onUserListUnsubscription(User subscriber, User listOwner, UserList list) {
+ public void onUserListUnsubscription(twitter4j.User subscriber, twitter4j.User listOwner, twitter4j.UserList list) {
UserListCache.getInstance().remove(list.getFullName());
}
@Override
- public void onUserListCreation(User listOwner, UserList list) {
+ public void onUserListCreation(twitter4j.User listOwner, twitter4j.UserList list) {
UserListCache.getInstance().put(list.getFullName());
}
@Override
- public void onUserListUpdate(User listOwner, UserList list) {
+ public void onUserListUpdate(twitter4j.User listOwner, twitter4j.UserList list) {
}
@Override
- public void onUserListDeletion(User listOwner, UserList list) {
+ public void onUserListDeletion(twitter4j.User listOwner, twitter4j.UserList list) {
UserListCache.getInstance().remove(list.getFullName());
}
@Override
- public void onUserProfileUpdate(User updatedUser) {
+ public void onUserProfileUpdate(twitter4j.User updatedUser) {
}
@Override
@@ -245,29 +244,29 @@ public class UserStreamListener implements twitter4j.UserStreamListener, Connect
}
@Override
- public void onBlock(User source, User blockedUser) {
- if (isMe(blockedUser)) {
- addToHistory(new EventViewModel(EnumEvent.BLOCKED, source));
+ public void onBlock(twitter4j.User source, twitter4j.User blockedUser) {
+ if (isMe(User.fromTwitter(blockedUser))) {
+ addToHistory(new EventViewModel(EnumEvent.BLOCKED, User.fromTwitter(source)));
}
}
@Override
- public void onUnblock(User source, User unblockedUser) {
- if (isMe(unblockedUser)) {
- addToHistory(new EventViewModel(EnumEvent.UNBLOCKED, source));
+ public void onUnblock(twitter4j.User source, twitter4j.User unblockedUser) {
+ if (isMe(User.fromTwitter(unblockedUser))) {
+ addToHistory(new EventViewModel(EnumEvent.UNBLOCKED, User.fromTwitter(source)));
}
}
@Override
- public void onRetweetedRetweet(User source, User target, Status retweetedStatus) {
+ public void onRetweetedRetweet(twitter4j.User source, twitter4j.User target, twitter4j.Status retweetedStatus) {
}
@Override
- public void onFavoritedRetweet(User source, User target, Status favoritedRetweeet) {
+ public void onFavoritedRetweet(twitter4j.User source, twitter4j.User target, twitter4j.Status favoritedRetweeet) {
}
@Override
- public void onQuotedTweet(User source, User target, Status quotingTweet) {
+ public void onQuotedTweet(twitter4j.User source, twitter4j.User target, twitter4j.Status quotingTweet) {
}
private void addToHistory(EventViewModel mentioned) {
@@ -295,10 +294,6 @@ public class UserStreamListener implements twitter4j.UserStreamListener, Connect
messages.update();
}
- private boolean isIgnoredStatus(Status status) {
- return status.isRetweet() && StatusCache.getInstance().isIgnored(status.getRetweetedStatus().getId());
- }
-
private boolean isMe(User user) {
return user.getId() == getMyID();
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/BlockIDsTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/BlockIDsTask.java
index cf57fb80..6e18ae99 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/BlockIDsTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/BlockIDsTask.java
@@ -24,7 +24,7 @@
package net.lacolaco.smileessence.twitter.task;
-import net.lacolaco.smileessence.data.UserCache;
+import net.lacolaco.smileessence.entity.MuteUserIds;
import net.lacolaco.smileessence.logging.Logger;
import twitter4j.IDs;
@@ -32,9 +32,10 @@ import twitter4j.Twitter;
import twitter4j.TwitterException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
-public class BlockIDsTask extends TwitterTask<Long[]> {
+public class BlockIDsTask extends TwitterTask<List<Long>> {
// --------------------------- CONSTRUCTORS ---------------------------
@@ -45,14 +46,14 @@ public class BlockIDsTask extends TwitterTask<Long[]> {
// ------------------------ OVERRIDE METHODS ------------------------
@Override
- protected void onPostExecute(Long[] blockIDs) {
+ protected void onPostExecute(List<Long> blockIDs) {
for (Long blockID : blockIDs) {
- UserCache.getInstance().putInvisibleUser(blockID);
+ MuteUserIds.add(blockID);
}
}
@Override
- protected Long[] doInBackground(Void... params) {
+ protected List<Long> doInBackground(Void... params) {
try {
List<Long> idList = new ArrayList<>();
long cursor = -1;
@@ -65,10 +66,10 @@ public class BlockIDsTask extends TwitterTask<Long[]> {
}
while (cursor != 0);
- return idList.toArray(new Long[idList.size()]);
+ return idList;
} catch (TwitterException e) {
Logger.error(e);
- return new Long[0];
+ return Collections.emptyList();
}
}
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/BlockTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/BlockTask.java
index 70f59a21..d0f9728d 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/BlockTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/BlockTask.java
@@ -27,14 +27,13 @@ package net.lacolaco.smileessence.twitter.task;
import android.app.Activity;
import net.lacolaco.smileessence.R;
-import net.lacolaco.smileessence.data.UserCache;
+import net.lacolaco.smileessence.entity.User;
import net.lacolaco.smileessence.logging.Logger;
import net.lacolaco.smileessence.notification.NotificationType;
import net.lacolaco.smileessence.notification.Notificator;
import twitter4j.Twitter;
import twitter4j.TwitterException;
-import twitter4j.User;
public class BlockTask extends TwitterTask<User> {
@@ -56,7 +55,6 @@ public class BlockTask extends TwitterTask<User> {
@Override
protected void onPostExecute(User user) {
if (user != null) {
- UserCache.getInstance().put(user);
new Notificator(activity, R.string.notice_block_succeeded).publish();
} else {
new Notificator(activity, R.string.notice_block_failed, NotificationType.ALERT).publish();
@@ -66,7 +64,7 @@ public class BlockTask extends TwitterTask<User> {
@Override
protected User doInBackground(Void... params) {
try {
- return twitter.users().createBlock(userID);
+ return User.fromTwitter(twitter.users().createBlock(userID));
} catch (TwitterException e) {
e.printStackTrace();
Logger.error(e.toString());
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/DeleteMessageTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/DeleteMessageTask.java
index c218cfe5..36ad887f 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/DeleteMessageTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/DeleteMessageTask.java
@@ -27,12 +27,11 @@ package net.lacolaco.smileessence.twitter.task;
import android.app.Activity;
import net.lacolaco.smileessence.R;
-import net.lacolaco.smileessence.data.DirectMessageCache;
import net.lacolaco.smileessence.logging.Logger;
import net.lacolaco.smileessence.notification.NotificationType;
import net.lacolaco.smileessence.notification.Notificator;
-import twitter4j.DirectMessage;
+import net.lacolaco.smileessence.entity.DirectMessage;
import twitter4j.Twitter;
import twitter4j.TwitterException;
@@ -56,7 +55,6 @@ public class DeleteMessageTask extends TwitterTask<DirectMessage> {
@Override
protected void onPostExecute(DirectMessage message) {
if (message != null) {
- DirectMessageCache.getInstance().put(message);
new Notificator(activity, R.string.notice_message_delete_succeeded).publish();
} else {
new Notificator(activity, R.string.notice_message_delete_failed, NotificationType.ALERT).publish();
@@ -66,7 +64,7 @@ public class DeleteMessageTask extends TwitterTask<DirectMessage> {
@Override
protected DirectMessage doInBackground(Void... params) {
try {
- return twitter.directMessages().destroyDirectMessage(messageID);
+ return DirectMessage.fromTwitter(twitter.directMessages().destroyDirectMessage(messageID));
} catch (TwitterException e) {
e.printStackTrace();
Logger.error(e.toString());
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/DeleteStatusTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/DeleteStatusTask.java
index 7dcc7b07..c770f5f7 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/DeleteStatusTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/DeleteStatusTask.java
@@ -27,7 +27,7 @@ package net.lacolaco.smileessence.twitter.task;
import android.app.Activity;
import net.lacolaco.smileessence.R;
-import net.lacolaco.smileessence.data.StatusCache;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.logging.Logger;
import net.lacolaco.smileessence.notification.NotificationType;
import net.lacolaco.smileessence.notification.Notificator;
@@ -36,7 +36,7 @@ import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
-public class DeleteStatusTask extends TwitterTask<Status> {
+public class DeleteStatusTask extends TwitterTask<Tweet> {
// ------------------------------ FIELDS ------------------------------
@@ -54,9 +54,9 @@ public class DeleteStatusTask extends TwitterTask<Status> {
// ------------------------ OVERRIDE METHODS ------------------------
@Override
- protected void onPostExecute(twitter4j.Status status) {
- if (status != null) {
- StatusCache.getInstance().remove(status.getId());
+ protected void onPostExecute(Tweet tweet) {
+ if (tweet != null) {
+ Tweet.remove(tweet.getId());
new Notificator(activity, R.string.notice_status_delete_succeeded).publish();
} else {
new Notificator(activity, R.string.notice_status_delete_failed, NotificationType.ALERT).publish();
@@ -64,9 +64,9 @@ public class DeleteStatusTask extends TwitterTask<Status> {
}
@Override
- protected twitter4j.Status doInBackground(Void... params) {
+ protected Tweet doInBackground(Void... params) {
try {
- return twitter.tweets().destroyStatus(statusID);
+ return Tweet.fromTwitter(twitter.tweets().destroyStatus(statusID));
} catch (TwitterException e) {
e.printStackTrace();
Logger.error(e.toString());
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/DirectMessagesTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/DirectMessagesTask.java
index 13b69255..481a0e6f 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/DirectMessagesTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/DirectMessagesTask.java
@@ -27,14 +27,19 @@ package net.lacolaco.smileessence.twitter.task;
import android.app.Activity;
import net.lacolaco.smileessence.R;
-import net.lacolaco.smileessence.data.DirectMessageCache;
+import net.lacolaco.smileessence.entity.DirectMessage;
import net.lacolaco.smileessence.logging.Logger;
import net.lacolaco.smileessence.notification.NotificationType;
import net.lacolaco.smileessence.notification.Notificator;
-import twitter4j.*;
+import twitter4j.Paging;
+import twitter4j.Twitter;
+import twitter4j.TwitterException;
-public class DirectMessagesTask extends TwitterTask<DirectMessage[]> {
+import java.util.Collections;
+import java.util.List;
+
+public class DirectMessagesTask extends TwitterTask<List<DirectMessage>> {
// ------------------------------ FIELDS ------------------------------
@@ -43,10 +48,6 @@ public class DirectMessagesTask extends TwitterTask<DirectMessage[]> {
// --------------------------- CONSTRUCTORS ---------------------------
- protected DirectMessagesTask(Twitter twitter, Activity activity) {
- this(twitter, activity, null);
- }
-
public DirectMessagesTask(Twitter twitter, Activity activity, Paging paging) {
super(twitter);
this.activity = activity;
@@ -56,23 +57,13 @@ public class DirectMessagesTask extends TwitterTask<DirectMessage[]> {
// ------------------------ OVERRIDE METHODS ------------------------
@Override
- protected void onPostExecute(DirectMessage[] directMessages) {
- if (directMessages.length != 0) {
- for (DirectMessage message : directMessages) {
- DirectMessageCache.getInstance().put(message);
- }
- }
+ protected void onPostExecute(List<DirectMessage> directMessages) {
}
@Override
- protected DirectMessage[] doInBackground(Void... params) {
- ResponseList<DirectMessage> responseList;
+ protected List<DirectMessage> doInBackground(Void... params) {
try {
- if (paging == null) {
- responseList = twitter.directMessages().getDirectMessages();
- } else {
- responseList = twitter.directMessages().getDirectMessages(paging);
- }
+ return DirectMessage.fromTwitter(twitter.directMessages().getDirectMessages(paging));
} catch (TwitterException e) {
e.printStackTrace();
Logger.error(e.toString());
@@ -81,8 +72,7 @@ public class DirectMessagesTask extends TwitterTask<DirectMessage[]> {
} else {
Notificator.publish(activity, R.string.notice_error_get_messages, NotificationType.ALERT);
}
- return new DirectMessage[0];
+ return Collections.emptyList();
}
- return responseList.toArray(new DirectMessage[responseList.size()]);
}
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/FavoriteTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/FavoriteTask.java
index d0ee13c5..491437c6 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/FavoriteTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/FavoriteTask.java
@@ -27,7 +27,7 @@ package net.lacolaco.smileessence.twitter.task;
import android.app.Activity;
import net.lacolaco.smileessence.R;
-import net.lacolaco.smileessence.data.StatusCache;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.logging.Logger;
import net.lacolaco.smileessence.notification.NotificationType;
import net.lacolaco.smileessence.notification.Notificator;
@@ -36,7 +36,7 @@ import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
-public class FavoriteTask extends TwitterTask<Status> {
+public class FavoriteTask extends TwitterTask<Tweet> {
// ------------------------------ FIELDS ------------------------------
@@ -54,9 +54,8 @@ public class FavoriteTask extends TwitterTask<Status> {
// ------------------------ OVERRIDE METHODS ------------------------
@Override
- protected void onPostExecute(twitter4j.Status status) {
- if (status != null) {
- StatusCache.getInstance().put(status);
+ protected void onPostExecute(Tweet tweet) {
+ if (tweet != null) {
new Notificator(activity, R.string.notice_favorite_succeeded).publish();
} else {
new Notificator(activity, R.string.notice_favorite_failed, NotificationType.ALERT).publish();
@@ -64,9 +63,9 @@ public class FavoriteTask extends TwitterTask<Status> {
}
@Override
- protected twitter4j.Status doInBackground(Void... params) {
+ protected Tweet doInBackground(Void... params) {
try {
- return twitter.favorites().createFavorite(statusID);
+ return Tweet.fromTwitter(twitter.favorites().createFavorite(statusID));
} catch (TwitterException e) {
e.printStackTrace();
Logger.error(e.toString());
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/FollowTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/FollowTask.java
index ecd6fe17..604d41ce 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/FollowTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/FollowTask.java
@@ -27,14 +27,13 @@ package net.lacolaco.smileessence.twitter.task;
import android.app.Activity;
import net.lacolaco.smileessence.R;
-import net.lacolaco.smileessence.data.UserCache;
+import net.lacolaco.smileessence.entity.User;
import net.lacolaco.smileessence.logging.Logger;
import net.lacolaco.smileessence.notification.NotificationType;
import net.lacolaco.smileessence.notification.Notificator;
import twitter4j.Twitter;
import twitter4j.TwitterException;
-import twitter4j.User;
public class FollowTask extends TwitterTask<User> {
@@ -56,7 +55,6 @@ public class FollowTask extends TwitterTask<User> {
@Override
protected void onPostExecute(User user) {
if (user != null) {
- UserCache.getInstance().put(user);
new Notificator(activity, R.string.notice_follow_succeeded).publish();
} else {
new Notificator(activity, R.string.notice_follow_failed, NotificationType.ALERT).publish();
@@ -66,7 +64,7 @@ public class FollowTask extends TwitterTask<User> {
@Override
protected User doInBackground(Void... params) {
try {
- return twitter.friendsFollowers().createFriendship(userID);
+ return User.fromTwitter(twitter.friendsFollowers().createFriendship(userID));
} catch (TwitterException e) {
e.printStackTrace();
Logger.error(e.toString());
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/GetTalkTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/GetTalkTask.java
new file mode 100644
index 00000000..2c7f8205
--- /dev/null
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/GetTalkTask.java
@@ -0,0 +1,40 @@
+package net.lacolaco.smileessence.twitter.task;
+
+import net.lacolaco.smileessence.entity.Tweet;
+import net.lacolaco.smileessence.logging.Logger;
+import twitter4j.Status;
+import twitter4j.Twitter;
+import twitter4j.TwitterException;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class GetTalkTask extends TwitterTaskWithProgress<List<Tweet>, Tweet> {
+ private final long statusId;
+
+ public GetTalkTask(Twitter twitter, long statusId) {
+ super(twitter);
+ this.statusId = statusId;
+ }
+
+ @Override
+ protected List<Tweet> doInBackground(Void... params) {
+ ArrayList<Tweet> list = new ArrayList<>();
+ try {
+ long id = statusId;
+ while (id != -1) {
+ Tweet tweet = Tweet.fromTwitter(twitter.showStatus(id));
+ if (tweet != null) {
+ publishProgress(tweet);
+ list.add(tweet);
+ } else {
+ break;
+ }
+ }
+ } catch (TwitterException e) {
+ e.printStackTrace();
+ Logger.error(e);
+ }
+ return list;
+ }
+}
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/HomeTimelineTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/HomeTimelineTask.java
index 9b435f74..2b56969f 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/HomeTimelineTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/HomeTimelineTask.java
@@ -26,16 +26,21 @@ package net.lacolaco.smileessence.twitter.task;
import android.app.Activity;
+import com.google.common.base.Function;
+import com.google.common.collect.Lists;
import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.data.FavoriteCache;
-import net.lacolaco.smileessence.data.StatusCache;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.logging.Logger;
import net.lacolaco.smileessence.notification.NotificationType;
import net.lacolaco.smileessence.notification.Notificator;
import twitter4j.*;
-public class HomeTimelineTask extends TwitterTask<Status[]> {
+import java.util.Collections;
+import java.util.List;
+
+public class HomeTimelineTask extends TwitterTask<List<Tweet>> {
// ------------------------------ FIELDS ------------------------------
@@ -44,10 +49,6 @@ public class HomeTimelineTask extends TwitterTask<Status[]> {
// --------------------------- CONSTRUCTORS ---------------------------
- public HomeTimelineTask(Twitter twitter, Activity activity) {
- this(twitter, activity, null);
- }
-
public HomeTimelineTask(Twitter twitter, Activity activity, Paging paging) {
super(twitter);
this.activity = activity;
@@ -57,24 +58,16 @@ public class HomeTimelineTask extends TwitterTask<Status[]> {
// ------------------------ OVERRIDE METHODS ------------------------
@Override
- protected void onPostExecute(twitter4j.Status[] statuses) {
- if (statuses.length != 0) {
- for (twitter4j.Status status : statuses) {
- StatusCache.getInstance().put(status);
- FavoriteCache.getInstance().put(status);
- }
+ protected void onPostExecute(List<Tweet> tweets) {
+ for (Tweet tweet : tweets) {
+ // FavoriteCache.getInstance().put(tweet);
}
}
@Override
- protected twitter4j.Status[] doInBackground(Void... params) {
- ResponseList<twitter4j.Status> responseList;
+ protected List<Tweet> doInBackground(Void... params) {
try {
- if (paging == null) {
- responseList = twitter.timelines().getHomeTimeline();
- } else {
- responseList = twitter.timelines().getHomeTimeline(paging);
- }
+ return Tweet.fromTwitter(twitter.timelines().getHomeTimeline(paging));
} catch (TwitterException e) {
e.printStackTrace();
Logger.error(e.toString());
@@ -83,8 +76,7 @@ public class HomeTimelineTask extends TwitterTask<Status[]> {
} else {
Notificator.publish(activity, R.string.notice_error_get_home, NotificationType.ALERT);
}
- return new twitter4j.Status[0];
+ return Collections.emptyList();
}
- return responseList.toArray(new twitter4j.Status[responseList.size()]);
}
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/MentionsTimelineTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/MentionsTimelineTask.java
index 87d9aacf..d38bb380 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/MentionsTimelineTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/MentionsTimelineTask.java
@@ -28,14 +28,17 @@ import android.app.Activity;
import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.data.FavoriteCache;
-import net.lacolaco.smileessence.data.StatusCache;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.logging.Logger;
import net.lacolaco.smileessence.notification.NotificationType;
import net.lacolaco.smileessence.notification.Notificator;
import twitter4j.*;
-public class MentionsTimelineTask extends TwitterTask<Status[]> {
+import java.util.Collections;
+import java.util.List;
+
+public class MentionsTimelineTask extends TwitterTask<List<Tweet>> {
// ------------------------------ FIELDS ------------------------------
@@ -44,10 +47,6 @@ public class MentionsTimelineTask extends TwitterTask<Status[]> {
// --------------------------- CONSTRUCTORS ---------------------------
- protected MentionsTimelineTask(Twitter twitter, Activity activity) {
- this(twitter, activity, null);
- }
-
public MentionsTimelineTask(Twitter twitter, Activity activity, Paging paging) {
super(twitter);
this.activity = activity;
@@ -57,24 +56,16 @@ public class MentionsTimelineTask extends TwitterTask<Status[]> {
// ------------------------ OVERRIDE METHODS ------------------------
@Override
- protected void onPostExecute(twitter4j.Status[] statuses) {
- if (statuses.length != 0) {
- for (twitter4j.Status status : statuses) {
- StatusCache.getInstance().put(status);
- FavoriteCache.getInstance().put(status);
- }
+ protected void onPostExecute(List<Tweet> tweets) {
+ for (Tweet tweet : tweets) {
+ //FavoriteCache.getInstance().put(tweet);
}
}
@Override
- protected twitter4j.Status[] doInBackground(Void... params) {
- ResponseList<twitter4j.Status> responseList;
+ protected List<Tweet> doInBackground(Void... params) {
try {
- if (paging == null) {
- responseList = twitter.timelines().getMentionsTimeline();
- } else {
- responseList = twitter.timelines().getMentionsTimeline(paging);
- }
+ return Tweet.fromTwitter(twitter.timelines().getMentionsTimeline(paging));
} catch (TwitterException e) {
e.printStackTrace();
Logger.error(e.toString());
@@ -83,8 +74,7 @@ public class MentionsTimelineTask extends TwitterTask<Status[]> {
} else {
Notificator.publish(activity, R.string.notice_error_get_mentions, NotificationType.ALERT);
}
- return new twitter4j.Status[0];
+ return Collections.emptyList();
}
- return responseList.toArray(new twitter4j.Status[responseList.size()]);
}
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/MutesIDsTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/MutesIDsTask.java
index d65b4bce..fa5a93b1 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/MutesIDsTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/MutesIDsTask.java
@@ -24,7 +24,7 @@
package net.lacolaco.smileessence.twitter.task;
-import net.lacolaco.smileessence.data.UserCache;
+import net.lacolaco.smileessence.entity.MuteUserIds;
import net.lacolaco.smileessence.logging.Logger;
import twitter4j.IDs;
@@ -32,9 +32,10 @@ import twitter4j.Twitter;
import twitter4j.TwitterException;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
-public class MutesIDsTask extends TwitterTask<Long[]> {
+public class MutesIDsTask extends TwitterTask<List<Long>> {
// --------------------------- CONSTRUCTORS ---------------------------
@@ -45,14 +46,14 @@ public class MutesIDsTask extends TwitterTask<Long[]> {
// ------------------------ OVERRIDE METHODS ------------------------
@Override
- protected void onPostExecute(Long[] mutesIDs) {
+ protected void onPostExecute(List<Long> mutesIDs) {
for (Long mutesID : mutesIDs) {
- UserCache.getInstance().putInvisibleUser(mutesID);
+ MuteUserIds.add(mutesID);
}
}
@Override
- protected Long[] doInBackground(Void... params) {
+ protected List<Long> doInBackground(Void... params) {
try {
List<Long> idList = new ArrayList<>();
long cursor = -1;
@@ -65,10 +66,10 @@ public class MutesIDsTask extends TwitterTask<Long[]> {
}
while (cursor != 0);
- return idList.toArray(new Long[idList.size()]);
+ return idList;
} catch (TwitterException e) {
Logger.error(e);
- return new Long[0];
+ return Collections.emptyList();
}
}
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/ReportForSpamTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/ReportForSpamTask.java
index 35e71fbc..38b88f4b 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/ReportForSpamTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/ReportForSpamTask.java
@@ -27,14 +27,13 @@ package net.lacolaco.smileessence.twitter.task;
import android.app.Activity;
import net.lacolaco.smileessence.R;
-import net.lacolaco.smileessence.data.UserCache;
+import net.lacolaco.smileessence.entity.User;
import net.lacolaco.smileessence.logging.Logger;
import net.lacolaco.smileessence.notification.NotificationType;
import net.lacolaco.smileessence.notification.Notificator;
import twitter4j.Twitter;
import twitter4j.TwitterException;
-import twitter4j.User;
public class ReportForSpamTask extends TwitterTask<User> {
@@ -56,7 +55,6 @@ public class ReportForSpamTask extends TwitterTask<User> {
@Override
protected void onPostExecute(User user) {
if (user != null) {
- UserCache.getInstance().put(user);
new Notificator(activity, R.string.notice_r4s_succeeded).publish();
} else {
new Notificator(activity, R.string.notice_r4s_failed, NotificationType.ALERT).publish();
@@ -66,7 +64,7 @@ public class ReportForSpamTask extends TwitterTask<User> {
@Override
protected User doInBackground(Void... params) {
try {
- return twitter.spamReporting().reportSpam(userID);
+ return User.fromTwitter(twitter.spamReporting().reportSpam(userID));
} catch (TwitterException e) {
e.printStackTrace();
Logger.error(e.toString());
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/RetweetTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/RetweetTask.java
index ffd780a6..3770588a 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/RetweetTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/RetweetTask.java
@@ -27,7 +27,7 @@ package net.lacolaco.smileessence.twitter.task;
import android.app.Activity;
import net.lacolaco.smileessence.R;
-import net.lacolaco.smileessence.data.StatusCache;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.logging.Logger;
import net.lacolaco.smileessence.notification.NotificationType;
import net.lacolaco.smileessence.notification.Notificator;
@@ -36,7 +36,7 @@ import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
-public class RetweetTask extends TwitterTask<Status> {
+public class RetweetTask extends TwitterTask<Tweet> {
// ------------------------------ FIELDS ------------------------------
@@ -54,9 +54,8 @@ public class RetweetTask extends TwitterTask<Status> {
// ------------------------ OVERRIDE METHODS ------------------------
@Override
- protected void onPostExecute(twitter4j.Status status) {
- if (status != null) {
- StatusCache.getInstance().put(status);
+ protected void onPostExecute(Tweet tweet) {
+ if (tweet != null) {
new Notificator(activity, R.string.notice_retweet_succeeded).publish();
} else {
new Notificator(activity, R.string.notice_retweet_failed, NotificationType.ALERT).publish();
@@ -64,9 +63,9 @@ public class RetweetTask extends TwitterTask<Status> {
}
@Override
- protected twitter4j.Status doInBackground(Void... params) {
+ protected Tweet doInBackground(Void... params) {
try {
- return twitter.tweets().retweetStatus(statusID);
+ return Tweet.fromTwitter(twitter.tweets().retweetStatus(statusID));
} catch (TwitterException e) {
e.printStackTrace();
Logger.error(e.toString());
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/SearchTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/SearchTask.java
index 0d6d3358..3bf715e3 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/SearchTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/SearchTask.java
@@ -29,7 +29,7 @@ import android.content.res.Configuration;
import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.activity.MainActivity;
import net.lacolaco.smileessence.data.FavoriteCache;
-import net.lacolaco.smileessence.data.StatusCache;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.logging.Logger;
import net.lacolaco.smileessence.notification.NotificationType;
import net.lacolaco.smileessence.notification.Notificator;
@@ -76,7 +76,7 @@ public class SearchTask extends TwitterTask<QueryResult> {
protected void onPostExecute(QueryResult queryResult) {
if (queryResult != null) {
for (twitter4j.Status status : queryResult.getTweets()) {
- StatusCache.getInstance().put(status);
+ Tweet.fromTwitter(status);
FavoriteCache.getInstance().put(status);
}
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/SendMessageTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/SendMessageTask.java
index c3338e63..eb4cd835 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/SendMessageTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/SendMessageTask.java
@@ -27,12 +27,11 @@ package net.lacolaco.smileessence.twitter.task;
import android.app.Activity;
import net.lacolaco.smileessence.R;
-import net.lacolaco.smileessence.data.DirectMessageCache;
import net.lacolaco.smileessence.logging.Logger;
import net.lacolaco.smileessence.notification.NotificationType;
import net.lacolaco.smileessence.notification.Notificator;
-import twitter4j.DirectMessage;
+import net.lacolaco.smileessence.entity.DirectMessage;
import twitter4j.Twitter;
import twitter4j.TwitterException;
@@ -58,7 +57,6 @@ public class SendMessageTask extends TwitterTask<DirectMessage> {
@Override
protected void onPostExecute(DirectMessage message) {
if (message != null) {
- DirectMessageCache.getInstance().put(message);
new Notificator(activity, R.string.notice_message_send_succeeded).publish();
} else {
new Notificator(activity, R.string.notice_message_send_failed, NotificationType.ALERT).publish();
@@ -68,7 +66,7 @@ public class SendMessageTask extends TwitterTask<DirectMessage> {
@Override
protected DirectMessage doInBackground(Void... params) {
try {
- return twitter.directMessages().sendDirectMessage(userID, text);
+ return DirectMessage.fromTwitter(twitter.directMessages().sendDirectMessage(userID, text));
} catch (TwitterException e) {
e.printStackTrace();
Logger.error(e.toString());
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/SentDirectMessagesTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/SentDirectMessagesTask.java
index 5cbb6700..f6c28fd6 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/SentDirectMessagesTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/SentDirectMessagesTask.java
@@ -27,14 +27,19 @@ package net.lacolaco.smileessence.twitter.task;
import android.app.Activity;
import net.lacolaco.smileessence.R;
-import net.lacolaco.smileessence.data.DirectMessageCache;
+import net.lacolaco.smileessence.entity.DirectMessage;
import net.lacolaco.smileessence.logging.Logger;
import net.lacolaco.smileessence.notification.NotificationType;
import net.lacolaco.smileessence.notification.Notificator;
-import twitter4j.*;
+import twitter4j.Paging;
+import twitter4j.Twitter;
+import twitter4j.TwitterException;
-public class SentDirectMessagesTask extends TwitterTask<DirectMessage[]> {
+import java.util.Collections;
+import java.util.List;
+
+public class SentDirectMessagesTask extends TwitterTask<List<DirectMessage>> {
// ------------------------------ FIELDS ------------------------------
@@ -43,10 +48,6 @@ public class SentDirectMessagesTask extends TwitterTask<DirectMessage[]> {
// --------------------------- CONSTRUCTORS ---------------------------
- protected SentDirectMessagesTask(Twitter twitter, Activity activity) {
- this(twitter, activity, null);
- }
-
public SentDirectMessagesTask(Twitter twitter, Activity activity, Paging paging) {
super(twitter);
this.activity = activity;
@@ -56,23 +57,13 @@ public class SentDirectMessagesTask extends TwitterTask<DirectMessage[]> {
// ------------------------ OVERRIDE METHODS ------------------------
@Override
- protected void onPostExecute(DirectMessage[] directMessages) {
- if (directMessages.length != 0) {
- for (DirectMessage message : directMessages) {
- DirectMessageCache.getInstance().put(message);
- }
- }
+ protected void onPostExecute(List<DirectMessage> directMessages) {
}
@Override
- protected DirectMessage[] doInBackground(Void... params) {
- ResponseList<DirectMessage> responseList;
+ protected List<DirectMessage> doInBackground(Void... params) {
try {
- if (paging == null) {
- responseList = twitter.directMessages().getSentDirectMessages();
- } else {
- responseList = twitter.directMessages().getSentDirectMessages(paging);
- }
+ return DirectMessage.fromTwitter(twitter.directMessages().getSentDirectMessages(paging));
} catch (TwitterException e) {
e.printStackTrace();
Logger.error(e.toString());
@@ -81,8 +72,7 @@ public class SentDirectMessagesTask extends TwitterTask<DirectMessage[]> {
} else {
Notificator.publish(activity, R.string.notice_error_get_messages, NotificationType.ALERT);
}
- return new DirectMessage[0];
+ return Collections.emptyList();
}
- return responseList.toArray(new DirectMessage[responseList.size()]);
}
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/ShowDirectMessageTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/ShowDirectMessageTask.java
index f48f1510..ab5cd409 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/ShowDirectMessageTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/ShowDirectMessageTask.java
@@ -24,10 +24,9 @@
package net.lacolaco.smileessence.twitter.task;
-import net.lacolaco.smileessence.data.DirectMessageCache;
import net.lacolaco.smileessence.logging.Logger;
-import twitter4j.DirectMessage;
+import net.lacolaco.smileessence.entity.DirectMessage;
import twitter4j.Twitter;
import twitter4j.TwitterException;
@@ -48,15 +47,12 @@ public class ShowDirectMessageTask extends TwitterTask<DirectMessage> {
@Override
protected void onPostExecute(DirectMessage directMessage) {
- if (directMessage != null) {
- DirectMessageCache.getInstance().put(directMessage);
- }
}
@Override
protected DirectMessage doInBackground(Void... params) {
try {
- return twitter.directMessages().showDirectMessage(messageID);
+ return DirectMessage.fromTwitter(twitter.directMessages().showDirectMessage(messageID));
} catch (TwitterException e) {
e.printStackTrace();
Logger.error(e.toString());
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/ShowStatusTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/ShowStatusTask.java
index 89066553..2da142ef 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/ShowStatusTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/ShowStatusTask.java
@@ -24,14 +24,14 @@
package net.lacolaco.smileessence.twitter.task;
-import net.lacolaco.smileessence.data.StatusCache;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.logging.Logger;
import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
-public class ShowStatusTask extends TwitterTask<Status> {
+public class ShowStatusTask extends TwitterTask<Tweet> {
// ------------------------------ FIELDS ------------------------------
@@ -47,16 +47,10 @@ public class ShowStatusTask extends TwitterTask<Status> {
// ------------------------ OVERRIDE METHODS ------------------------
@Override
- protected void onPostExecute(twitter4j.Status status) {
- if (status != null) {
- StatusCache.getInstance().put(status);
- }
- }
-
- @Override
- protected twitter4j.Status doInBackground(Void... params) {
+ protected Tweet doInBackground(Void... params) {
try {
- return twitter.tweets().showStatus(id);
+ twitter4j.Status status = twitter.tweets().showStatus(id);
+ return Tweet.fromTwitter(status);
} catch (TwitterException e) {
e.printStackTrace();
Logger.error(e.toString());
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/ShowUserTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/ShowUserTask.java
index 71706edf..bbea10c6 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/ShowUserTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/ShowUserTask.java
@@ -24,12 +24,11 @@
package net.lacolaco.smileessence.twitter.task;
-import net.lacolaco.smileessence.data.UserCache;
+import net.lacolaco.smileessence.entity.User;
import net.lacolaco.smileessence.logging.Logger;
import twitter4j.Twitter;
import twitter4j.TwitterException;
-import twitter4j.User;
public class ShowUserTask extends TwitterTask<User> {
@@ -56,18 +55,15 @@ public class ShowUserTask extends TwitterTask<User> {
@Override
protected void onPostExecute(User user) {
- if (user != null) {
- UserCache.getInstance().put(user);
- }
}
@Override
protected User doInBackground(Void... params) {
try {
if (screenName != null) {
- return twitter.users().showUser(screenName);
+ return User.fromTwitter(twitter.users().showUser(screenName));
} else {
- return twitter.users().showUser(userID);
+ return User.fromTwitter(twitter.users().showUser(userID));
}
} catch (TwitterException e) {
e.printStackTrace();
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/TweetTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/TweetTask.java
index 3cec661b..0e3c8ff0 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/TweetTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/TweetTask.java
@@ -31,7 +31,7 @@ import android.os.Environment;
import android.text.TextUtils;
import net.lacolaco.smileessence.R;
-import net.lacolaco.smileessence.data.StatusCache;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.logging.Logger;
import net.lacolaco.smileessence.notification.NotificationType;
import net.lacolaco.smileessence.notification.Notificator;
@@ -47,7 +47,7 @@ import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
-public class TweetTask extends TwitterTask<Status> {
+public class TweetTask extends TwitterTask<Tweet> {
// ------------------------------ FIELDS ------------------------------
@@ -109,9 +109,8 @@ public class TweetTask extends TwitterTask<Status> {
// ------------------------ OVERRIDE METHODS ------------------------
@Override
- protected void onPostExecute(twitter4j.Status status) {
- if (status != null) {
- StatusCache.getInstance().put(status);
+ protected void onPostExecute(Tweet tweet) {
+ if (tweet != null) {
new Notificator(activity, R.string.notice_tweet_succeeded).publish();
} else {
new Notificator(activity, R.string.notice_tweet_failed, NotificationType.ALERT).publish();
@@ -119,21 +118,19 @@ public class TweetTask extends TwitterTask<Status> {
}
@Override
- protected twitter4j.Status doInBackground(Void... params) {
+ protected Tweet doInBackground(Void... params) {
try {
- if (TextUtils.isEmpty(mediaPath)) {
- return twitter.tweets().updateStatus(update);
- } else {
+ if (!TextUtils.isEmpty(mediaPath)) {
File mediaFile = getMediaFile();
if (mediaFile.exists()) {
update.setMedia(mediaFile);
}
- twitter4j.Status status = twitter.tweets().updateStatus(update);
- if (tempFilePath != null) {
- new File(tempFilePath).delete();
- }
- return status;
}
+ Tweet tweet = Tweet.fromTwitter(twitter.tweets().updateStatus(update));
+ if (tempFilePath != null) {
+ new File(tempFilePath).delete();
+ }
+ return tweet;
} catch (TwitterException e) {
e.printStackTrace();
Logger.error(e.toString());
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/TwitterTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/TwitterTask.java
index b62e6770..3fa00e5a 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/TwitterTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/TwitterTask.java
@@ -24,19 +24,10 @@
package net.lacolaco.smileessence.twitter.task;
-import android.os.AsyncTask;
-
import twitter4j.Twitter;
-public abstract class TwitterTask<T> extends AsyncTask<Void, Void, T> {
-
- // ------------------------------ FIELDS ------------------------------
-
- protected Twitter twitter;
-
- // --------------------------- CONSTRUCTORS ---------------------------
-
+public abstract class TwitterTask<T> extends TwitterTaskWithProgress<T, Void> {
protected TwitterTask(Twitter twitter) {
- this.twitter = twitter;
+ super(twitter);
}
-}
+} \ No newline at end of file
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/TwitterTaskWithProgress.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/TwitterTaskWithProgress.java
new file mode 100644
index 00000000..6eb9fadd
--- /dev/null
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/TwitterTaskWithProgress.java
@@ -0,0 +1,13 @@
+package net.lacolaco.smileessence.twitter.task;
+
+import android.os.AsyncTask;
+import twitter4j.Twitter;
+
+public abstract class TwitterTaskWithProgress<T, A> extends AsyncTask<Void, A, T> {
+ protected Twitter twitter;
+
+ protected TwitterTaskWithProgress(Twitter twitter) {
+ this.twitter = twitter;
+ }
+}
+
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/UnblockTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/UnblockTask.java
index 9199a136..a1092a1f 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/UnblockTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/UnblockTask.java
@@ -27,14 +27,13 @@ package net.lacolaco.smileessence.twitter.task;
import android.app.Activity;
import net.lacolaco.smileessence.R;
-import net.lacolaco.smileessence.data.UserCache;
import net.lacolaco.smileessence.logging.Logger;
import net.lacolaco.smileessence.notification.NotificationType;
import net.lacolaco.smileessence.notification.Notificator;
import twitter4j.Twitter;
import twitter4j.TwitterException;
-import twitter4j.User;
+import net.lacolaco.smileessence.entity.User;
public class UnblockTask extends TwitterTask<User> {
@@ -56,7 +55,6 @@ public class UnblockTask extends TwitterTask<User> {
@Override
protected void onPostExecute(User user) {
if (user != null) {
- UserCache.getInstance().put(user);
new Notificator(activity, R.string.notice_unblock_succeeded).publish();
} else {
new Notificator(activity, R.string.notice_unblock_failed, NotificationType.ALERT).publish();
@@ -66,7 +64,7 @@ public class UnblockTask extends TwitterTask<User> {
@Override
protected User doInBackground(Void... params) {
try {
- return twitter.users().destroyBlock(userID);
+ return User.fromTwitter(twitter.users().destroyBlock(userID));
} catch (TwitterException e) {
e.printStackTrace();
Logger.error(e.toString());
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/UnfavoriteTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/UnfavoriteTask.java
index 93eb8623..46e70cb5 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/UnfavoriteTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/UnfavoriteTask.java
@@ -27,7 +27,7 @@ package net.lacolaco.smileessence.twitter.task;
import android.app.Activity;
import net.lacolaco.smileessence.R;
-import net.lacolaco.smileessence.data.StatusCache;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.logging.Logger;
import net.lacolaco.smileessence.notification.NotificationType;
import net.lacolaco.smileessence.notification.Notificator;
@@ -36,7 +36,7 @@ import twitter4j.Status;
import twitter4j.Twitter;
import twitter4j.TwitterException;
-public class UnfavoriteTask extends TwitterTask<Status> {
+public class UnfavoriteTask extends TwitterTask<Tweet> {
// ------------------------------ FIELDS ------------------------------
@@ -54,9 +54,8 @@ public class UnfavoriteTask extends TwitterTask<Status> {
// ------------------------ OVERRIDE METHODS ------------------------
@Override
- protected void onPostExecute(twitter4j.Status status) {
- if (status != null) {
- StatusCache.getInstance().put(status);
+ protected void onPostExecute(Tweet tweet) {
+ if (tweet != null) {
new Notificator(activity, R.string.notice_unfavorite_succeeded).publish();
} else {
new Notificator(activity, R.string.notice_unfavorite_failed, NotificationType.ALERT).publish();
@@ -64,9 +63,9 @@ public class UnfavoriteTask extends TwitterTask<Status> {
}
@Override
- protected twitter4j.Status doInBackground(Void... params) {
+ protected Tweet doInBackground(Void... params) {
try {
- return twitter.favorites().destroyFavorite(statusID);
+ return Tweet.fromTwitter(twitter.favorites().destroyFavorite(statusID));
} catch (TwitterException e) {
e.printStackTrace();
Logger.error(e.toString());
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/UnfollowTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/UnfollowTask.java
index 8c5f7dc5..c0d890fa 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/UnfollowTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/UnfollowTask.java
@@ -27,14 +27,13 @@ package net.lacolaco.smileessence.twitter.task;
import android.app.Activity;
import net.lacolaco.smileessence.R;
-import net.lacolaco.smileessence.data.UserCache;
+import net.lacolaco.smileessence.entity.User;
import net.lacolaco.smileessence.logging.Logger;
import net.lacolaco.smileessence.notification.NotificationType;
import net.lacolaco.smileessence.notification.Notificator;
import twitter4j.Twitter;
import twitter4j.TwitterException;
-import twitter4j.User;
public class UnfollowTask extends TwitterTask<User> {
@@ -56,7 +55,6 @@ public class UnfollowTask extends TwitterTask<User> {
@Override
protected void onPostExecute(User user) {
if (user != null) {
- UserCache.getInstance().put(user);
new Notificator(activity, R.string.notice_unfollow_succeeded).publish();
} else {
new Notificator(activity, R.string.notice_unfollow_failed, NotificationType.ALERT).publish();
@@ -66,7 +64,7 @@ public class UnfollowTask extends TwitterTask<User> {
@Override
protected User doInBackground(Void... params) {
try {
- return twitter.friendsFollowers().destroyFriendship(userID);
+ return User.fromTwitter(twitter.friendsFollowers().destroyFriendship(userID));
} catch (TwitterException e) {
e.printStackTrace();
Logger.error(e.toString());
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/UserListStatusesTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/UserListStatusesTask.java
index 8d56463e..beb8890c 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/UserListStatusesTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/UserListStatusesTask.java
@@ -26,54 +26,52 @@ package net.lacolaco.smileessence.twitter.task;
import net.lacolaco.smileessence.activity.MainActivity;
import net.lacolaco.smileessence.data.FavoriteCache;
-import net.lacolaco.smileessence.data.StatusCache;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.logging.Logger;
import net.lacolaco.smileessence.twitter.util.TwitterUtils;
import twitter4j.*;
-public class UserListStatusesTask extends TwitterTask<Status[]> {
+import java.util.Collections;
+import java.util.List;
+
+public class UserListStatusesTask extends TwitterTask<List<Tweet>> {
// ------------------------------ FIELDS ------------------------------
private final String listFullName;
- private final MainActivity activity;
private final Paging paging;
// --------------------------- CONSTRUCTORS ---------------------------
- public UserListStatusesTask(Twitter twitter, String listFullName, MainActivity activity) {
- this(twitter, listFullName, activity, TwitterUtils.getPaging(TwitterUtils.getPagingCount(activity)));
+ public UserListStatusesTask(Twitter twitter, MainActivity activity, String listFullName) {
+ this(twitter, activity, listFullName, TwitterUtils.getPaging(TwitterUtils.getPagingCount(activity)));
}
- public UserListStatusesTask(Twitter twitter, String listFullName, MainActivity activity, Paging paging) {
+ public UserListStatusesTask(Twitter twitter, MainActivity activity, String listFullName, Paging paging) {
super(twitter);
this.listFullName = listFullName;
- this.activity = activity;
this.paging = paging;
}
// ------------------------ OVERRIDE METHODS ------------------------
@Override
- protected void onPostExecute(twitter4j.Status[] statuses) {
- for (twitter4j.Status status : statuses) {
- StatusCache.getInstance().put(status);
- FavoriteCache.getInstance().put(status);
+ protected void onPostExecute(List<Tweet> tweets) {
+ for (Tweet tweet : tweets) {
+ // FavoriteCache.getInstance().put(tweet);
}
}
@Override
- protected twitter4j.Status[] doInBackground(Void... params) {
- ResponseList<twitter4j.Status> responseList;
+ protected List<Tweet> doInBackground(Void... params) {
try {
String[] strings = listFullName.split("/");
- responseList = twitter.list().getUserListStatuses(strings[0], strings[1], paging);
+ return Tweet.fromTwitter(twitter.list().getUserListStatuses(strings[0], strings[1], paging));
} catch (TwitterException e) {
e.printStackTrace();
Logger.error(e.toString());
- return new twitter4j.Status[0];
+ return Collections.emptyList();
}
- return responseList.toArray(new twitter4j.Status[responseList.size()]);
}
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/task/UserTimelineTask.java b/app/src/main/java/net/lacolaco/smileessence/twitter/task/UserTimelineTask.java
index 6950c563..ce5a8ed2 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/task/UserTimelineTask.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/task/UserTimelineTask.java
@@ -24,12 +24,15 @@
package net.lacolaco.smileessence.twitter.task;
-import net.lacolaco.smileessence.data.StatusCache;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.logging.Logger;
import twitter4j.*;
-public class UserTimelineTask extends TwitterTask<Status[]> {
+import java.util.Collections;
+import java.util.List;
+
+public class UserTimelineTask extends TwitterTask<List<Tweet>> {
// ------------------------------ FIELDS ------------------------------
@@ -51,27 +54,23 @@ public class UserTimelineTask extends TwitterTask<Status[]> {
// ------------------------ OVERRIDE METHODS ------------------------
@Override
- protected void onPostExecute(twitter4j.Status[] statuses) {
- for (twitter4j.Status status : statuses) {
- StatusCache.getInstance().put(status);
+ protected void onPostExecute(List<Tweet> tweets) {
+ for (Tweet tweet : tweets) {
}
-
}
@Override
- protected twitter4j.Status[] doInBackground(Void... params) {
- ResponseList<twitter4j.Status> responseList;
+ protected List<Tweet> doInBackground(Void... params) {
try {
if (paging == null) {
- responseList = twitter.timelines().getUserTimeline(userID);
+ return Tweet.fromTwitter(twitter.timelines().getUserTimeline(userID));
} else {
- responseList = twitter.timelines().getUserTimeline(userID, paging);
+ return Tweet.fromTwitter(twitter.timelines().getUserTimeline(userID, paging));
}
} catch (TwitterException e) {
e.printStackTrace();
Logger.error(e.toString());
- return new twitter4j.Status[0];
+ return Collections.emptyList();
}
- return responseList.toArray(new twitter4j.Status[responseList.size()]);
}
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/twitter/util/TwitterUtils.java b/app/src/main/java/net/lacolaco/smileessence/twitter/util/TwitterUtils.java
index 764c12a7..0e0f73fb 100644
--- a/app/src/main/java/net/lacolaco/smileessence/twitter/util/TwitterUtils.java
+++ b/app/src/main/java/net/lacolaco/smileessence/twitter/util/TwitterUtils.java
@@ -30,17 +30,19 @@ import com.twitter.Validator;
import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.activity.MainActivity;
-import net.lacolaco.smileessence.data.DirectMessageCache;
-import net.lacolaco.smileessence.data.StatusCache;
-import net.lacolaco.smileessence.data.UserCache;
import net.lacolaco.smileessence.entity.Account;
+import net.lacolaco.smileessence.entity.Tweet;
+import net.lacolaco.smileessence.entity.User;
import net.lacolaco.smileessence.twitter.TwitterApi;
import net.lacolaco.smileessence.twitter.task.ShowDirectMessageTask;
import net.lacolaco.smileessence.twitter.task.ShowStatusTask;
import net.lacolaco.smileessence.twitter.task.ShowUserTask;
import net.lacolaco.smileessence.twitter.task.TwitterTask;
-import twitter4j.*;
+import net.lacolaco.smileessence.entity.DirectMessage;
+import twitter4j.Paging;
+import twitter4j.URLEntity;
+import twitter4j.UserMentionEntity;
import java.util.ArrayList;
import java.util.Collection;
@@ -62,35 +64,33 @@ public class TwitterUtils {
/**
* Get status from api if not cached
*/
- public static TwitterTask tryGetStatus(Account account, long statusID, final StatusCallback callback) {
- Status status = StatusCache.getInstance().get(statusID);
+ public static TwitterTask<Tweet> tryGetStatus(Account account, long statusID, final StatusCallback callback) {
ShowStatusTask task;
- if (status != null) {
- callback.success(status);
+ Tweet tweet = Tweet.fetch(statusID);
+ if (tweet != null) {
+ callback.success(tweet);
//update cache
task = new ShowStatusTask(new TwitterApi(account).getTwitter(), statusID);
} else {
task = new ShowStatusTask(new TwitterApi(account).getTwitter(), statusID) {
@Override
- protected void onPostExecute(twitter4j.Status status) {
- super.onPostExecute(status);
- if (status != null) {
- callback.success(status);
+ protected void onPostExecute(Tweet tweet) {
+ if (tweet != null) {
+ callback.success(tweet);
} else {
callback.error();
}
}
};
}
- task.execute();
- return task;
+ return (TwitterTask<Tweet>) task.execute();
}
/**
* Get status from api if not cached
*/
public static void tryGetUser(Account account, long userID, final UserCallback callback) {
- User user = UserCache.getInstance().get(userID);
+ User user = User.fetch(userID);
if (user != null) {
callback.success(user);
ShowUserTask task = new ShowUserTask(new TwitterApi(account).getTwitter(), userID);
@@ -116,11 +116,9 @@ public class TwitterUtils {
* Get direct message from api if not cached
*/
public static void tryGetMessage(Account account, long messageID, final MessageCallback callback) {
- DirectMessage message = DirectMessageCache.getInstance().get(messageID);
+ DirectMessage message = DirectMessage.fetch(messageID);
if (message != null) {
callback.success(message);
- ShowDirectMessageTask task = new ShowDirectMessageTask(new TwitterApi(account).getTwitter(), messageID);
- task.execute();
} else {
ShowDirectMessageTask task = new ShowDirectMessageTask(new TwitterApi(account).getTwitter(), messageID) {
@Override
@@ -140,15 +138,15 @@ public class TwitterUtils {
/**
* Get array of screenName in own text
*
- * @param status status
+ * @param tweet tweet
* @param excludeScreenName
* @return
*/
- public static Collection<String> getScreenNames(Status status, String excludeScreenName) {
+ public static Collection<String> getScreenNames(Tweet tweet, String excludeScreenName) {
ArrayList<String> names = new ArrayList<>();
- names.add(status.getUser().getScreenName());
- if (status.getUserMentionEntities() != null) {
- for (UserMentionEntity entity : status.getUserMentionEntities()) {
+ names.add(tweet.getUser().getScreenName());
+ if (tweet.getMentions() != null) {
+ for (UserMentionEntity entity : tweet.getMentions()) {
if (names.contains(entity.getScreenName())) {
continue;
}
@@ -163,12 +161,12 @@ public class TwitterUtils {
public static Collection<String> getScreenNames(DirectMessage message, String excludeScreenName) {
ArrayList<String> names = new ArrayList<>();
- names.add(message.getSenderScreenName());
- if (!message.getRecipientScreenName().equals(message.getSenderScreenName())) {
- names.add(message.getRecipientScreenName());
+ names.add(message.getSender().getScreenName());
+ if (!message.getRecipient().getScreenName().equals(message.getSender().getScreenName())) {
+ names.add(message.getRecipient().getScreenName());
}
- if (message.getUserMentionEntities() != null) {
- for (UserMentionEntity entity : message.getUserMentionEntities()) {
+ if (message.getMentions() != null) {
+ for (UserMentionEntity entity : message.getMentions()) {
if (names.contains(entity.getScreenName())) {
continue;
}
@@ -198,26 +196,6 @@ public class TwitterUtils {
}
/**
- * Get twitter status permalink
- *
- * @param status status
- * @return url string
- */
- public static String getStatusURL(Status status) {
- return String.format("https://twitter.com/%s/status/%s", getOriginalStatus(status).getUser().getScreenName(), getOriginalStatus(status).getId());
- }
-
- /**
- * Get "@screen_name: text" format text
- *
- * @param status status
- * @return summary string
- */
- public static String getStatusSummary(Status status) {
- return String.format("@%s: %s", status.getUser().getScreenName(), status.getText());
- }
-
- /**
* Replace urls by entities
*
* @param text raw text
@@ -240,16 +218,6 @@ public class TwitterUtils {
return text;
}
- /**
- * Return original status text. If status is not retweet, value is same to a given.
- *
- * @param status
- * @return
- */
- public static String getOriginalStatusText(Status status) {
- return status.isRetweet() ? status.getRetweetedStatus().getText() : status.getText();
- }
-
public static Paging getPaging(int count) {
return new Paging(1).count(count);
}
@@ -258,10 +226,6 @@ public class TwitterUtils {
return activity.getUserPreferenceHelper().getValue(R.string.key_setting_timelines, 20);
}
- public static Status getOriginalStatus(Status status) {
- return StatusCache.getInstance().get((status.isRetweet() ? status.getRetweetedStatus() : status).getId());
- }
-
public static String getMessageSummary(DirectMessage message) {
return String.format("@%s: %s", message.getSender().getScreenName(), message.getText());
}
@@ -270,7 +234,7 @@ public class TwitterUtils {
public interface StatusCallback {
- void success(Status status);
+ void success(Tweet status);
void error();
}
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 ------------------------------
diff --git a/app/src/main/java/net/lacolaco/smileessence/viewmodel/EventViewModel.java b/app/src/main/java/net/lacolaco/smileessence/viewmodel/EventViewModel.java
index b8315a49..0eb78e11 100644
--- a/app/src/main/java/net/lacolaco/smileessence/viewmodel/EventViewModel.java
+++ b/app/src/main/java/net/lacolaco/smileessence/viewmodel/EventViewModel.java
@@ -36,6 +36,7 @@ import com.android.volley.toolbox.NetworkImageView;
import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.activity.MainActivity;
import net.lacolaco.smileessence.data.ImageCache;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.preference.UserPreferenceHelper;
import net.lacolaco.smileessence.util.StringUtils;
import net.lacolaco.smileessence.util.Themes;
@@ -44,7 +45,7 @@ import net.lacolaco.smileessence.view.dialog.UserDetailDialogFragment;
import net.lacolaco.smileessence.view.listener.ListItemClickListener;
import twitter4j.Status;
-import twitter4j.User;
+import net.lacolaco.smileessence.entity.User;
import java.util.Date;
@@ -67,21 +68,21 @@ public class EventViewModel implements IViewModel {
this(event, source, null);
}
- public EventViewModel(EnumEvent event, User source, Status status) {
+ public EventViewModel(EnumEvent event, User source, Tweet tweet) {
this.event = event;
this.createdAt = new Date();
this.sourceUserID = source.getId();
this.sourceScreenName = source.getScreenName();
this.sourceName = source.getName();
- this.iconURL = source.getProfileImageURL();
+ this.iconURL = source.getProfileImageUrl();
- if (status != null) {
+ if (tweet != null) {
if (event == EnumEvent.RETWEETED) {
- this.targetStatusID = status.getRetweetedStatus().getId();
- this.targetText = status.getRetweetedStatus().getText();
+ this.targetStatusID = tweet.getRetweetedTweet().getId();
+ this.targetText = tweet.getRetweetedTweet().getText();
} else {
- this.targetStatusID = status.getId();
- this.targetText = status.getText();
+ this.targetStatusID = tweet.getId();
+ this.targetText = tweet.getText();
}
} else {
this.targetStatusID = -1L;
diff --git a/app/src/main/java/net/lacolaco/smileessence/viewmodel/MessageViewModel.java b/app/src/main/java/net/lacolaco/smileessence/viewmodel/MessageViewModel.java
index bde1b607..7930e410 100644
--- a/app/src/main/java/net/lacolaco/smileessence/viewmodel/MessageViewModel.java
+++ b/app/src/main/java/net/lacolaco/smileessence/viewmodel/MessageViewModel.java
@@ -35,8 +35,8 @@ import com.android.volley.toolbox.NetworkImageView;
import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.activity.MainActivity;
import net.lacolaco.smileessence.data.ImageCache;
-import net.lacolaco.smileessence.data.UserCache;
import net.lacolaco.smileessence.entity.Account;
+import net.lacolaco.smileessence.entity.DirectMessage;
import net.lacolaco.smileessence.preference.UserPreferenceHelper;
import net.lacolaco.smileessence.util.NameStyles;
import net.lacolaco.smileessence.util.StringUtils;
@@ -46,88 +46,37 @@ import net.lacolaco.smileessence.view.dialog.MessageDetailDialogFragment;
import net.lacolaco.smileessence.view.dialog.UserDetailDialogFragment;
import net.lacolaco.smileessence.view.listener.ListItemClickListener;
-import twitter4j.DirectMessage;
-
-import java.util.Date;
-
public class MessageViewModel implements IViewModel {
// ------------------------------ FIELDS ------------------------------
public static final String DETAIL_DIALOG = "messageDetail";
- private final long id;
- private final long senderID;
- private final String senderScreenName;
- private final String senderName;
- private final String senderIconURL;
- private final long recipientId;
- private final String recipientScreenName;
- private final String text;
- private final Date createdAt;
+
+ private final DirectMessage directMessage;
private final boolean myMessage;
// --------------------------- CONSTRUCTORS ---------------------------
- public MessageViewModel(DirectMessage directMessage, Account account) {
- id = directMessage.getId();
- UserCache.getInstance().put(directMessage.getSender());
- senderID = directMessage.getSenderId();
- senderScreenName = directMessage.getSenderScreenName();
- senderName = directMessage.getSender().getName();
- senderIconURL = directMessage.getSender().getProfileImageURL();
- recipientId = directMessage.getRecipientId();
- recipientScreenName = directMessage.getRecipientScreenName();
- text = directMessage.getText();
- createdAt = directMessage.getCreatedAt();
- myMessage = isMyMessage(account);
+ public MessageViewModel(DirectMessage mes) {
+ directMessage = mes;
+ //myMessage = isMyMessage(account);
+ myMessage = true; // :wTODO
}
// --------------------- GETTER / SETTER METHODS ---------------------
- public Date getCreatedAt() {
- return createdAt;
- }
+ public DirectMessage getDirectMessage() {
+ return directMessage;
+ }
private String getFooterText() {
- String s = StringUtils.dateToString(getCreatedAt());
+ String s = StringUtils.dateToString(directMessage.getCreatedAt());
if (isMyMessage()) {
- s = String.format("%s to @%s", s, recipientScreenName);
+ s = String.format("%s to @%s", s, directMessage.getRecipient().getScreenName());
}
return s;
}
- public long getID() {
- return id;
- }
-
- public long getRecipientId() {
- return recipientId;
- }
-
- public String getRecipientScreenName() {
- return recipientScreenName;
- }
-
- public String getSenderIconURL() {
- return senderIconURL;
- }
-
- public long getSenderID() {
- return senderID;
- }
-
- public String getSenderName() {
- return senderName;
- }
-
- public String getSenderScreenName() {
- return senderScreenName;
- }
-
- public String getText() {
- return text;
- }
-
public boolean isMyMessage() {
return myMessage;
}
@@ -147,12 +96,12 @@ public class MessageViewModel implements IViewModel {
int nameStyle = preferenceHelper.getValue(R.string.key_setting_namestyle, 0);
int theme = ((MainActivity) activity).getThemeIndex();
NetworkImageView icon = (NetworkImageView) convertedView.findViewById(R.id.imageview_status_icon);
- ImageCache.getInstance().setImageToView(getSenderIconURL(), icon);
+ ImageCache.getInstance().setImageToView(directMessage.getSender().getProfileImageUrl(), icon);
icon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
UserDetailDialogFragment dialogFragment = new UserDetailDialogFragment();
- dialogFragment.setUserID(senderID);
+ dialogFragment.setUserID(directMessage.getSender().getId());
DialogHelper.showDialog(activity, dialogFragment);
}
});
@@ -165,7 +114,7 @@ public class MessageViewModel implements IViewModel {
content.setTextSize(textSize);
int colorNormal = Themes.getStyledColor(activity, theme, R.attr.color_status_text_normal, 0);
content.setTextColor(colorNormal);
- content.setText(getText());
+ content.setText(directMessage.getText());
TextView footer = (TextView) convertedView.findViewById(R.id.textview_status_footer);
footer.setTextSize(textSize - 2);
int colorFooter = Themes.getStyledColor(activity, theme, R.attr.color_status_text_footer, 0);
@@ -179,7 +128,7 @@ public class MessageViewModel implements IViewModel {
@Override
public void run() {
MessageDetailDialogFragment dialogFragment = new MessageDetailDialogFragment();
- dialogFragment.setMessageID(getID());
+ dialogFragment.setMessageID(directMessage.getId());
DialogHelper.showDialog(activity, dialogFragment);
}
}));
@@ -187,10 +136,10 @@ public class MessageViewModel implements IViewModel {
}
private String getNameString(int nameStyle) {
- return NameStyles.getNameString(nameStyle, getSenderScreenName(), getSenderName());
+ return NameStyles.getNameString(nameStyle, directMessage.getSender().getScreenName(), directMessage.getSender().getName());
}
private boolean isMyMessage(Account account) {
- return senderID == account.userID;
+ return directMessage.getSender().getId() == account.userID;
}
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/viewmodel/StatusViewModel.java b/app/src/main/java/net/lacolaco/smileessence/viewmodel/StatusViewModel.java
index b945b088..1013b1a9 100644
--- a/app/src/main/java/net/lacolaco/smileessence/viewmodel/StatusViewModel.java
+++ b/app/src/main/java/net/lacolaco/smileessence/viewmodel/StatusViewModel.java
@@ -40,8 +40,8 @@ import net.lacolaco.smileessence.R;
import net.lacolaco.smileessence.activity.MainActivity;
import net.lacolaco.smileessence.data.FavoriteCache;
import net.lacolaco.smileessence.data.ImageCache;
-import net.lacolaco.smileessence.data.UserCache;
import net.lacolaco.smileessence.entity.Account;
+import net.lacolaco.smileessence.entity.Tweet;
import net.lacolaco.smileessence.preference.UserPreferenceHelper;
import net.lacolaco.smileessence.twitter.util.TwitterUtils;
import net.lacolaco.smileessence.util.Morse;
@@ -56,75 +56,31 @@ import net.lacolaco.smileessence.view.listener.ListItemClickListener;
import twitter4j.*;
import java.util.ArrayList;
-import java.util.Date;
import java.util.List;
public class StatusViewModel implements IViewModel {
-
- // ------------------------------ FIELDS ------------------------------
-
- private long id;
- private long userID;
- private String screenName;
- private String name;
- private String iconURL;
- private String text;
- private Date createdAt;
- private String source;
- private boolean isProtected;
- private StatusViewModel retweetedStatus;
- private UserMentionEntity[] mentions;
- private HashtagEntity[] hashtags;
- private MediaEntity[] media;
- private URLEntity[] urls;
- private SymbolEntity[] symbols;
+ private Tweet tweet;
private boolean isMyStatus;
private boolean isMention;
private boolean isRetweetOfMe;
- private ArrayList<AsyncTask> lastTasks; // internal
+ private ArrayList<AsyncTask> lastTasks = new ArrayList<>(); // internal
// --------------------------- CONSTRUCTORS ---------------------------
- public StatusViewModel(Status status, Account account) {
- if (status.isRetweet()) {
- retweetedStatus = new StatusViewModel(status.getRetweetedStatus(), account);
- }
- id = status.getId();
- text = TwitterUtils.replaceURLEntities(status.getText(), status.getURLEntities(), false);
- createdAt = status.getCreatedAt();
- source = status.getSource();
- mentions = status.getUserMentionEntities();
- hashtags = status.getHashtagEntities();
- media = status.getMediaEntities();
- urls = status.getURLEntities();
- symbols = status.getSymbolEntities();
- User user = status.getUser();
- UserCache.getInstance().put(user);
- userID = user.getId();
- screenName = user.getScreenName();
- name = user.getName();
- iconURL = user.getProfileImageURLHttps();
- isProtected = user.isProtected();
- setMention(isMention(account.screenName));
- setMyStatus(isMyStatus(account.userID));
- setRetweetOfMe(isRetweetOfMe(account.userID));
-
- lastTasks = new ArrayList<>();
+ public StatusViewModel(Tweet tw) {
+ tweet = tw;
}
// --------------------- GETTER / SETTER METHODS ---------------------
- public Date getCreatedAt() {
- if (isRetweet()) {
- return retweetedStatus.createdAt;
- }
- return createdAt;
+ public Tweet getTweet() {
+ return tweet;
}
private List<Long> getEmbeddedStatusIDs() {
ArrayList<Long> list = new ArrayList<>();
- for (URLEntity url : urls) {
+ for (URLEntity url : tweet.getUrls()) {
Uri uri = Uri.parse(url.getExpandedURL());
if (uri.getHost().equals("twitter.com")) {
String[] arr = uri.toString().split("/");
@@ -138,109 +94,25 @@ public class StatusViewModel implements IViewModel {
private String getFooterText() {
StringBuilder builder = new StringBuilder();
- if (isRetweet()) {
- builder.append("(RT: ").append(this.screenName).append(") ");
+ if (tweet.isRetweet()) {
+ builder.append("(RT: ").append(tweet.getUser().getScreenName()).append(") ");
}
- builder.append(StringUtils.dateToString(getCreatedAt()));
+ builder.append(StringUtils.dateToString(tweet.getCreatedAt()));
builder.append(" via ");
- builder.append(Html.fromHtml(getSource()));
+ builder.append(Html.fromHtml(tweet.getSource()));
return builder.toString();
}
- public HashtagEntity[] getHashtags() {
- if (isRetweet()) {
- return retweetedStatus.hashtags;
- }
- return hashtags;
- }
-
- public String getIconURL() {
- if (isRetweet()) {
- return retweetedStatus.iconURL;
- }
- return iconURL;
- }
-
- public long getID() {
- return id;
- }
-
- public MediaEntity[] getMedia() {
- if (isRetweet()) {
- return retweetedStatus.media;
- }
- return media;
- }
-
- public UserMentionEntity[] getMentions() {
- if (isRetweet()) {
- return retweetedStatus.mentions;
- }
- return mentions;
- }
-
- public String getName() {
- if (isRetweet()) {
- return retweetedStatus.name;
- }
- return name;
- }
-
- public StatusViewModel getOriginal() {
- return isRetweet() ? retweetedStatus : this;
- }
-
- public long getOriginalUserID() {
- return isRetweet() ? getRetweetedStatus().getUserID() : getUserID();
- }
-
- public StatusViewModel getRetweetedStatus() {
- return retweetedStatus;
- }
-
- public String getScreenName() {
- if (isRetweet()) {
- return retweetedStatus.screenName;
- }
- return screenName;
- }
-
- public String getSource() {
- if (isRetweet()) {
- return retweetedStatus.source;
- }
- return source;
- }
-
- public SymbolEntity[] getSymbols() {
- return symbols;
- }
-
- public String getText() {
- if (isRetweet()) {
- return retweetedStatus.text;
- }
- return text;
- }
-
- public URLEntity[] getURLs() {
- return urls;
- }
-
- public long getUserID() {
- return userID;
- }
-
public boolean isFavorited() {
- if (isRetweet()) {
- return FavoriteCache.getInstance().get(retweetedStatus.id);
+ if (tweet.isRetweet()) {
+ return FavoriteCache.getInstance().get(tweet.getRetweetedTweet().getId());
}
- return FavoriteCache.getInstance().get(id);
+ return FavoriteCache.getInstance().get(tweet.getId());
}
public boolean isMention() {
- if (isRetweet()) {
- return retweetedStatus.isMention;
+ if (tweet.isRetweet()) {
+ return tweet.getRetweetedTweet() == null;
}
return isMention;
}
@@ -250,8 +122,8 @@ public class StatusViewModel implements IViewModel {
}
public boolean isMyStatus() {
- if (isRetweet()) {
- return retweetedStatus.isMyStatus;
+ if (tweet.isRetweet()) {
+ return tweet.getRetweetedTweet() == null;
}
return isMyStatus;
}
@@ -260,17 +132,6 @@ public class StatusViewModel implements IViewModel {
isMyStatus = myStatus;
}
- public boolean isProtected() {
- if (isRetweet()) {
- return retweetedStatus.isProtected;
- }
- return isProtected;
- }
-
- public boolean isRetweet() {
- return retweetedStatus != null;
- }
-
public boolean isRetweetOfMe() {
return isRetweetOfMe;
}
@@ -306,7 +167,7 @@ public class StatusViewModel implements IViewModel {
int nameStyle = preferenceHelper.getValue(R.string.key_setting_namestyle, 0);
int theme = ((MainActivity) activity).getThemeIndex();
NetworkImageView icon = (NetworkImageView) convertedView.findViewById(R.id.imageview_status_icon);
- ImageCache.getInstance().setImageToView(getIconURL(), icon);
+ ImageCache.getInstance().setImageToView(tweet.getUser().getProfileImageUrl(), icon);
icon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -318,12 +179,12 @@ public class StatusViewModel implements IViewModel {
int colorHeader = Themes.getStyledColor(activity, theme, R.attr.color_status_text_header, 0);
int colorMineHeader = Themes.getStyledColor(activity, theme, R.attr.color_status_text_mine, 0);
header.setTextColor(isMyStatus() ? colorMineHeader : colorHeader);
- header.setText(NameStyles.getNameString(nameStyle, getScreenName(), getName()));
+ header.setText(NameStyles.getNameString(nameStyle, tweet.getUser().getScreenName(), tweet.getUser().getName()));
TextView content = (TextView) convertedView.findViewById(R.id.textview_status_text);
content.setTextSize(textSize);
int colorNormal = Themes.getStyledColor(activity, theme, R.attr.color_status_text_normal, 0);
content.setTextColor(colorNormal);
- String rawText = getText();
+ String rawText = tweet.getText();
if (isReadMorseEnabled((MainActivity) activity) && Morse.isMorse(rawText)) {
content.setText(String.format("%s\n(%s)", rawText, Morse.morseToJa(rawText)));
} else {
@@ -336,7 +197,7 @@ public class StatusViewModel implements IViewModel {
footer.setText(getFooterText());
ImageView favorited = (ImageView) convertedView.findViewById(R.id.imageview_status_favorited);
favorited.setVisibility(isFavorited() ? View.VISIBLE : View.GONE);
- if (isRetweet()) {
+ if (tweet.isRetweet()) {
int colorBgRetweet = Themes.getStyledColor(activity, theme, R.attr.color_status_bg_retweet, 0);
convertedView.setBackgroundColor(colorBgRetweet);
} else if (isMention()) {
@@ -363,8 +224,8 @@ public class StatusViewModel implements IViewModel {
for (long id : embeddedStatusIDs) {
AsyncTask task = TwitterUtils.tryGetStatus(account, id, new TwitterUtils.StatusCallback() {
@Override
- public void success(Status status) {
- StatusViewModel viewModel = new StatusViewModel(status, account);
+ public void success(Tweet tweet) {
+ StatusViewModel viewModel = new StatusViewModel(tweet);
View embeddedHolder = viewModel.getView(activity, inflater, null, false);
embeddedStatus.addView(embeddedHolder);
embeddedStatus.invalidate();
@@ -385,10 +246,10 @@ public class StatusViewModel implements IViewModel {
}
public boolean isMention(String screenName) {
- if (mentions == null) {
+ if (tweet.getMentions() == null) {
return false;
}
- for (UserMentionEntity mention : mentions) {
+ for (UserMentionEntity mention : tweet.getMentions()) {
if (mention.getScreenName().equals(screenName)) {
return true;
}
@@ -396,27 +257,19 @@ public class StatusViewModel implements IViewModel {
return false;
}
- public boolean isMyStatus(long userID) {
- return this.userID == userID;
- }
-
- public boolean isRetweetOfMe(long userID) {
- return retweetedStatus != null && retweetedStatus.getUserID() == userID;
- }
-
- private boolean isReadMorseEnabled(MainActivity activity) {
+ private boolean isReadMorseEnabled(MainActivity activity) {
return activity.getUserPreferenceHelper().getValue(R.string.key_setting_read_morse, true);
}
private void onClick(Activity activity) {
StatusDetailDialogFragment fragment = new StatusDetailDialogFragment();
- fragment.setStatusID(getID());
+ fragment.setStatusID(tweet.getId());
DialogHelper.showDialog(activity, fragment);
}
private void onIconClick(Activity activity) {
UserDetailDialogFragment dialogFragment = new UserDetailDialogFragment();
- dialogFragment.setUserID(isRetweet() ? getRetweetedStatus().userID : userID);
+ dialogFragment.setUserID(tweet.getOriginalTweet().getUser().getId());
DialogHelper.showDialog(activity, dialogFragment);
}
}
diff --git a/app/src/main/java/net/lacolaco/smileessence/viewmodel/UserViewModel.java b/app/src/main/java/net/lacolaco/smileessence/viewmodel/UserViewModel.java
index 0b8e9ad4..3c25bf31 100644
--- a/app/src/main/java/net/lacolaco/smileessence/viewmodel/UserViewModel.java
+++ b/app/src/main/java/net/lacolaco/smileessence/viewmodel/UserViewModel.java
@@ -24,7 +24,7 @@
package net.lacolaco.smileessence.viewmodel;
-import twitter4j.User;
+import net.lacolaco.smileessence.entity.User;
public class UserViewModel {
@@ -53,13 +53,13 @@ public class UserViewModel {
name = user.getName();
description = user.getDescription();
location = user.getLocation();
- url = user.getURL();
- iconURL = user.getBiggerProfileImageURL();
- bannerURL = user.getProfileBannerURL();
+ url = user.getUrl();
+ iconURL = user.getProfileImageUrlOriginal();
+ bannerURL = user.getProfileBannerUrl();
statusesCount = user.getStatusesCount();
friendsCount = user.getFriendsCount();
followersCount = user.getFollowersCount();
- favoritesCount = user.getFavouritesCount();
+ favoritesCount = user.getFavoritesCount();
isProtected = user.isProtected();
isVerified = user.isVerified();
}