From 4a0df8b56336dba79cdf50d1f5870c2f708117a3 Mon Sep 17 00:00:00 2001 From: Mariotaku Lee Date: Tue, 23 Jun 2015 22:50:53 +0800 Subject: [PATCH] updated api --- twidere.component.common/build.gradle | 2 +- .../twitter/api/DirectMessagesResources.java | 19 +++++--- .../api/twitter/api/FavoritesResources.java | 3 ++ .../api/FriendsFollowersResources.java | 2 + .../api/twitter/api/ListsResources.java | 7 +++ .../twitter/api/PrivateActivityResources.java | 3 ++ .../api/PrivateDirectMessagesResources.java | 5 +- .../api/PrivateFriendsFollowersResources.java | 2 + .../api/PrivateTimelinesResources.java | 3 ++ .../twitter/api/PrivateTweetResources.java | 3 ++ .../api/twitter/api/SearchResource.java | 3 ++ .../api/twitter/api/TimelinesResources.java | 5 +- .../api/twitter/api/TweetResources.java | 3 ++ .../api/twitter/api/UsersResources.java | 6 ++- .../support/MessagesConversationFragment.java | 23 ++++----- .../support/RetweetQuoteDialogFragment.java | 28 +++++------ .../twidere/util/AsyncTwitterWrapper.java | 4 +- .../twidere/util/TwitterAPIFactory.java | 47 ++++++++++++------- ...Text.java => ComposeMaterialEditText.java} | 13 +++-- .../layout/dialog_status_quote_retweet.xml | 4 +- .../layout/fragment_messages_conversation.xml | 34 +++++++------- 21 files changed, 134 insertions(+), 85 deletions(-) rename twidere/src/main/java/org/mariotaku/twidere/view/{UserHashtagAutoCompleteEditText.java => ComposeMaterialEditText.java} (84%) diff --git a/twidere.component.common/build.gradle b/twidere.component.common/build.gradle index 774f0ff70..f4c8af237 100644 --- a/twidere.component.common/build.gradle +++ b/twidere.component.common/build.gradle @@ -43,7 +43,7 @@ dependencies { compile 'com.android.support:support-v4:22.2.0' compile 'com.bluelinelabs:logansquare:1.1.0' compile 'org.apache.commons:commons-lang3:3.4' - compile 'com.github.mariotaku:RestFu:c8bd230561' + compile 'com.github.mariotaku:RestFu:b40c366f1c' compile 'com.hannesdorfmann.parcelableplease:annotation:1.0.1' compile project(':twidere.component.querybuilder') compile fileTree(dir: 'libs', include: ['*.jar']) diff --git a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/DirectMessagesResources.java b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/DirectMessagesResources.java index 5db7847f9..0a8e92aab 100644 --- a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/DirectMessagesResources.java +++ b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/DirectMessagesResources.java @@ -23,6 +23,7 @@ import org.mariotaku.restfu.annotation.method.GET; import org.mariotaku.restfu.annotation.method.POST; import org.mariotaku.restfu.annotation.param.Body; import org.mariotaku.restfu.annotation.param.Form; +import org.mariotaku.restfu.annotation.param.MethodExtra; import org.mariotaku.restfu.annotation.param.Query; import org.mariotaku.restfu.http.BodyType; import org.mariotaku.twidere.api.twitter.TwitterException; @@ -31,6 +32,7 @@ import org.mariotaku.twidere.api.twitter.model.Paging; import org.mariotaku.twidere.api.twitter.model.ResponseList; @SuppressWarnings("RedundantThrows") +@MethodExtra(name = "extra_params", values = {"full_text", "include_entities", "include_cards", "cards_platform"}) public interface DirectMessagesResources { @POST("/direct_messages/destroy.json") @@ -38,27 +40,30 @@ public interface DirectMessagesResources { DirectMessage destroyDirectMessage(@Form("id") long id) throws TwitterException; @GET("/direct_messages.json") - ResponseList getDirectMessages(@Query Paging paging, @Query("full_text") boolean fullText) throws TwitterException; - + ResponseList getDirectMessages(@Query Paging paging) throws TwitterException; @GET("/direct_messages/sent.json") - ResponseList getSentDirectMessages(@Query Paging paging, @Query("full_text") boolean fullText) throws TwitterException; + ResponseList getSentDirectMessages(@Query Paging paging) throws TwitterException; @POST("/direct_messages/new.json") @Body(BodyType.FORM) - DirectMessage sendDirectMessage(@Form("user_id") long userId, @Form("text") String text) throws TwitterException; + DirectMessage sendDirectMessage(@Form("user_id") long userId, @Form("text") String text) + throws TwitterException; @POST("/direct_messages/new.json") @Body(BodyType.FORM) - DirectMessage sendDirectMessage(@Form("user_id") long userId, @Form("text") String text, @Form("media_id") long mediaId) throws TwitterException; + DirectMessage sendDirectMessage(@Form("user_id") long userId, @Form("text") String text, + @Form("media_id") long mediaId) throws TwitterException; @POST("/direct_messages/new.json") @Body(BodyType.FORM) - DirectMessage sendDirectMessage(@Form("screen_name") String screenName, @Form("text") String text) throws TwitterException; + DirectMessage sendDirectMessage(@Form("screen_name") String screenName, @Form("text") String text) + throws TwitterException; @POST("/direct_messages/new.json") @Body(BodyType.FORM) - DirectMessage sendDirectMessage(@Form("screen_name") String screenName, @Form("text") String text, @Form("media_id") long mediaId) throws TwitterException; + DirectMessage sendDirectMessage(@Form("screen_name") String screenName, @Form("text") String text, + @Form("media_id") long mediaId) throws TwitterException; @GET("/direct_messages/show.json") DirectMessage showDirectMessage(@Query("id") long id) throws TwitterException; diff --git a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/FavoritesResources.java b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/FavoritesResources.java index de4cce89f..f7ad6f4a9 100644 --- a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/FavoritesResources.java +++ b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/FavoritesResources.java @@ -23,6 +23,7 @@ import org.mariotaku.restfu.annotation.method.GET; import org.mariotaku.restfu.annotation.method.POST; import org.mariotaku.restfu.annotation.param.Body; import org.mariotaku.restfu.annotation.param.Form; +import org.mariotaku.restfu.annotation.param.MethodExtra; import org.mariotaku.restfu.annotation.param.Query; import org.mariotaku.restfu.http.BodyType; import org.mariotaku.twidere.api.twitter.TwitterException; @@ -34,6 +35,8 @@ import org.mariotaku.twidere.api.twitter.model.Status; * @author Joern Huxhorn - jhuxhorn at googlemail.com */ @SuppressWarnings("RedundantThrows") +@MethodExtra(name = "extra_params", values = {"include_my_retweet", "include_rts", "include_entities", + "include_cards", "cards_platform", "include_reply_count", "include_descendent_reply_count"}) public interface FavoritesResources { @POST("/favorites/create.json") diff --git a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/FriendsFollowersResources.java b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/FriendsFollowersResources.java index ec6ed84b2..b301d5922 100644 --- a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/FriendsFollowersResources.java +++ b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/FriendsFollowersResources.java @@ -23,6 +23,7 @@ import org.mariotaku.restfu.annotation.method.GET; import org.mariotaku.restfu.annotation.method.POST; import org.mariotaku.restfu.annotation.param.Body; import org.mariotaku.restfu.annotation.param.Form; +import org.mariotaku.restfu.annotation.param.MethodExtra; import org.mariotaku.restfu.annotation.param.Query; import org.mariotaku.restfu.http.BodyType; import org.mariotaku.twidere.api.twitter.TwitterException; @@ -36,6 +37,7 @@ import org.mariotaku.twidere.api.twitter.model.ResponseList; import org.mariotaku.twidere.api.twitter.model.User; @SuppressWarnings("RedundantThrows") +@MethodExtra(name = "extra_params", values = {"include_entities"}) public interface FriendsFollowersResources { @POST("/friendships/create.json") diff --git a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/ListsResources.java b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/ListsResources.java index dde729229..a16610282 100644 --- a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/ListsResources.java +++ b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/ListsResources.java @@ -23,6 +23,7 @@ import org.mariotaku.restfu.annotation.method.GET; import org.mariotaku.restfu.annotation.method.POST; import org.mariotaku.restfu.annotation.param.Body; import org.mariotaku.restfu.annotation.param.Form; +import org.mariotaku.restfu.annotation.param.MethodExtra; import org.mariotaku.restfu.annotation.param.Query; import org.mariotaku.restfu.http.BodyType; import org.mariotaku.twidere.api.twitter.TwitterException; @@ -130,12 +131,18 @@ public interface ListsResources { ResponseList getUserLists(@Query("screen_name") String screenName, @Query("reverse") boolean reverse) throws TwitterException; @GET("/lists/statuses.json") + @MethodExtra(name = "extra_params", values = {"include_my_retweet", "include_rts", "include_entities", + "include_cards", "cards_platform", "include_reply_count", "include_descendent_reply_count"}) ResponseList getUserListStatuses(@Query("list_id") long listId, @Query Paging paging) throws TwitterException; @GET("/lists/statuses.json") + @MethodExtra(name = "extra_params", values = {"include_my_retweet", "include_rts", "include_entities", + "include_cards", "cards_platform", "include_reply_count", "include_descendent_reply_count"}) ResponseList getUserListStatuses(@Query("slug") String slug, @Query("owner_id") long ownerId, @Query Paging paging) throws TwitterException; @GET("/lists/statuses.json") + @MethodExtra(name = "extra_params", values = {"include_my_retweet", "include_rts", "include_entities", + "include_cards", "cards_platform", "include_reply_count", "include_descendent_reply_count"}) ResponseList getUserListStatuses(@Query("slug") String slug, @Query("owner_screen_name") String ownerScreenName, @Query Paging paging) throws TwitterException; diff --git a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/PrivateActivityResources.java b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/PrivateActivityResources.java index cba25fa3b..81ca8dfd1 100644 --- a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/PrivateActivityResources.java +++ b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/PrivateActivityResources.java @@ -20,6 +20,7 @@ package org.mariotaku.twidere.api.twitter.api; import org.mariotaku.restfu.annotation.method.GET; +import org.mariotaku.restfu.annotation.param.MethodExtra; import org.mariotaku.restfu.annotation.param.Query; import org.mariotaku.twidere.api.twitter.TwitterException; import org.mariotaku.twidere.api.twitter.model.Activity; @@ -27,6 +28,8 @@ import org.mariotaku.twidere.api.twitter.model.Paging; import org.mariotaku.twidere.api.twitter.model.ResponseList; @SuppressWarnings("RedundantThrows") +@MethodExtra(name = "extra_params", values = {"include_my_retweet", "include_rts", "include_entities", + "include_cards", "cards_platform", "include_reply_count", "include_descendent_reply_count"}) public interface PrivateActivityResources extends PrivateResources { @GET("/activity/about_me.json") diff --git a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/PrivateDirectMessagesResources.java b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/PrivateDirectMessagesResources.java index bc98a745e..338cb71df 100644 --- a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/PrivateDirectMessagesResources.java +++ b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/PrivateDirectMessagesResources.java @@ -24,16 +24,17 @@ import org.mariotaku.restfu.annotation.param.Body; import org.mariotaku.restfu.annotation.param.Path; import org.mariotaku.restfu.http.BodyType; import org.mariotaku.twidere.api.twitter.TwitterException; +import org.mariotaku.twidere.api.twitter.model.ResponseCode; @SuppressWarnings("RedundantThrows") public interface PrivateDirectMessagesResources extends PrivateResources { @POST("/dm/conversation/{conversation_id}/delete.json") @Body(BodyType.FORM) - void destroyDirectMessagesConversation(@Path("conversation_id") String conversationId) throws TwitterException; + ResponseCode destroyDirectMessagesConversation(@Path("conversation_id") String conversationId) throws TwitterException; @POST("/dm/conversation/{account_id}-{user_id}/delete.json") @Body(BodyType.FORM) - void destroyDirectMessagesConversation(@Path("account_id") long accountId, @Path("user_id") long userId) throws TwitterException; + ResponseCode destroyDirectMessagesConversation(@Path("account_id") long accountId, @Path("user_id") long userId) throws TwitterException; } diff --git a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/PrivateFriendsFollowersResources.java b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/PrivateFriendsFollowersResources.java index cc6a813e0..c33dee33d 100644 --- a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/PrivateFriendsFollowersResources.java +++ b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/PrivateFriendsFollowersResources.java @@ -19,10 +19,12 @@ package org.mariotaku.twidere.api.twitter.api; +import org.mariotaku.restfu.annotation.param.MethodExtra; import org.mariotaku.twidere.api.twitter.TwitterException; import org.mariotaku.twidere.api.twitter.model.User; @SuppressWarnings("RedundantThrows") +@MethodExtra(name = "extra_params", values = {"include_entities"}) public interface PrivateFriendsFollowersResources extends PrivateResources { User acceptFriendship(long userId) throws TwitterException; diff --git a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/PrivateTimelinesResources.java b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/PrivateTimelinesResources.java index 47c8fec2d..4c1ec4c8c 100644 --- a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/PrivateTimelinesResources.java +++ b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/PrivateTimelinesResources.java @@ -20,6 +20,7 @@ package org.mariotaku.twidere.api.twitter.api; import org.mariotaku.restfu.annotation.method.GET; +import org.mariotaku.restfu.annotation.param.MethodExtra; import org.mariotaku.restfu.annotation.param.Query; import org.mariotaku.twidere.api.twitter.TwitterException; import org.mariotaku.twidere.api.twitter.model.Paging; @@ -27,6 +28,8 @@ import org.mariotaku.twidere.api.twitter.model.ResponseList; import org.mariotaku.twidere.api.twitter.model.Status; @SuppressWarnings("RedundantThrows") +@MethodExtra(name = "extra_params", values = {"include_my_retweet", "include_rts", "include_entities", + "include_cards", "cards_platform", "include_reply_count", "include_descendent_reply_count"}) public interface PrivateTimelinesResources extends PrivateResources { @GET("/statuses/media_timeline.json") diff --git a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/PrivateTweetResources.java b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/PrivateTweetResources.java index c0930ac98..0d394ee7b 100644 --- a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/PrivateTweetResources.java +++ b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/PrivateTweetResources.java @@ -20,6 +20,7 @@ package org.mariotaku.twidere.api.twitter.api; import org.mariotaku.restfu.annotation.method.GET; +import org.mariotaku.restfu.annotation.param.MethodExtra; import org.mariotaku.restfu.annotation.param.Path; import org.mariotaku.restfu.annotation.param.Query; import org.mariotaku.twidere.api.twitter.TwitterException; @@ -30,6 +31,8 @@ import org.mariotaku.twidere.api.twitter.model.StatusActivitySummary; import org.mariotaku.twidere.api.twitter.model.TranslationResult; @SuppressWarnings("RedundantThrows") +@MethodExtra(name = "extra_params", values = {"include_my_retweet", "include_rts", "include_entities", + "include_cards", "cards_platform", "include_reply_count", "include_descendent_reply_count"}) public interface PrivateTweetResources extends PrivateResources { @GET("/statuses/{id}/activity/summary.json") diff --git a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/SearchResource.java b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/SearchResource.java index ba2fb52ff..d16a233e5 100644 --- a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/SearchResource.java +++ b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/SearchResource.java @@ -20,12 +20,15 @@ package org.mariotaku.twidere.api.twitter.api; import org.mariotaku.restfu.annotation.method.GET; +import org.mariotaku.restfu.annotation.param.MethodExtra; import org.mariotaku.restfu.annotation.param.Query; import org.mariotaku.twidere.api.twitter.TwitterException; import org.mariotaku.twidere.api.twitter.model.QueryResult; import org.mariotaku.twidere.api.twitter.model.SearchQuery; @SuppressWarnings("RedundantThrows") +@MethodExtra(name = "extra_params", values = {"include_my_retweet", "include_rts", "include_entities", + "include_cards", "cards_platform", "include_reply_count", "include_descendent_reply_count"}) public interface SearchResource { @GET("/search/tweets.json") QueryResult search(@Query SearchQuery query) throws TwitterException; diff --git a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/TimelinesResources.java b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/TimelinesResources.java index 24dcf4c01..34446cd88 100644 --- a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/TimelinesResources.java +++ b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/TimelinesResources.java @@ -21,13 +21,16 @@ package org.mariotaku.twidere.api.twitter.api; import org.mariotaku.restfu.annotation.method.GET; +import org.mariotaku.restfu.annotation.param.MethodExtra; import org.mariotaku.restfu.annotation.param.Query; +import org.mariotaku.twidere.api.twitter.TwitterException; import org.mariotaku.twidere.api.twitter.model.Paging; import org.mariotaku.twidere.api.twitter.model.ResponseList; import org.mariotaku.twidere.api.twitter.model.Status; -import org.mariotaku.twidere.api.twitter.TwitterException; @SuppressWarnings("RedundantThrows") +@MethodExtra(name = "extra_params", values = {"include_my_retweet", "include_rts", "include_entities", + "include_cards", "cards_platform", "include_reply_count", "include_descendent_reply_count"}) public interface TimelinesResources { @GET("/statuses/home_timeline.json") diff --git a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/TweetResources.java b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/TweetResources.java index 3f1c8925e..b64e99c81 100644 --- a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/TweetResources.java +++ b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/TweetResources.java @@ -23,6 +23,7 @@ import org.mariotaku.restfu.annotation.method.GET; import org.mariotaku.restfu.annotation.method.POST; import org.mariotaku.restfu.annotation.param.Body; import org.mariotaku.restfu.annotation.param.Form; +import org.mariotaku.restfu.annotation.param.MethodExtra; import org.mariotaku.restfu.annotation.param.Path; import org.mariotaku.restfu.annotation.param.Query; import org.mariotaku.restfu.http.BodyType; @@ -34,6 +35,8 @@ import org.mariotaku.twidere.api.twitter.model.Status; import org.mariotaku.twidere.api.twitter.model.StatusUpdate; @SuppressWarnings("RedundantThrows") +@MethodExtra(name = "extra_params", values = {"include_my_retweet", "include_rts", "include_entities", + "include_cards", "cards_platform", "include_reply_count", "include_descendent_reply_count"}) public interface TweetResources { @POST("/statuses/destroy/{id}.json") @Body(BodyType.FORM) diff --git a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/UsersResources.java b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/UsersResources.java index 4728ffd87..86204a3b0 100644 --- a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/UsersResources.java +++ b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/api/UsersResources.java @@ -23,6 +23,7 @@ import org.mariotaku.restfu.annotation.method.GET; import org.mariotaku.restfu.annotation.method.POST; import org.mariotaku.restfu.annotation.param.Body; import org.mariotaku.restfu.annotation.param.Form; +import org.mariotaku.restfu.annotation.param.MethodExtra; import org.mariotaku.restfu.annotation.param.Part; import org.mariotaku.restfu.annotation.param.Query; import org.mariotaku.restfu.http.BodyType; @@ -40,6 +41,7 @@ import org.mariotaku.twidere.api.twitter.model.SettingsUpdate; import org.mariotaku.twidere.api.twitter.model.User; @SuppressWarnings("RedundantThrows") +@MethodExtra(name = "extra_params", values = {"include_entities"}) public interface UsersResources { @POST("/blocks/create.json") @@ -134,8 +136,8 @@ public interface UsersResources { @POST("/account/update_profile_banner.json") @Body(BodyType.MULTIPART) ResponseCode updateProfileBannerImage(@Part("banner") FileTypedData data, @Part("width") int width, - @Part("height") int height, @Part("offset_left") int offsetLeft, - @Part("offset_top") int offsetTop) + @Part("height") int height, @Part("offset_left") int offsetLeft, + @Part("offset_top") int offsetTop) throws TwitterException; @POST("/account/update_profile_banner.json") diff --git a/twidere/src/main/java/org/mariotaku/twidere/fragment/support/MessagesConversationFragment.java b/twidere/src/main/java/org/mariotaku/twidere/fragment/support/MessagesConversationFragment.java index e863d4589..688939897 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/fragment/support/MessagesConversationFragment.java +++ b/twidere/src/main/java/org/mariotaku/twidere/fragment/support/MessagesConversationFragment.java @@ -68,7 +68,6 @@ import android.widget.TextView; import com.github.johnpersano.supertoasts.SuperToast; import com.github.johnpersano.supertoasts.SuperToast.Duration; import com.github.johnpersano.supertoasts.SuperToast.OnDismissListener; -import com.rengwuxian.materialedittext.validation.METLengthChecker; import com.squareup.otto.Bus; import com.squareup.otto.Subscribe; @@ -113,7 +112,8 @@ import org.mariotaku.twidere.util.TwidereValidator; import org.mariotaku.twidere.util.UserColorNameManager; import org.mariotaku.twidere.util.Utils; import org.mariotaku.twidere.util.message.TaskStateChangedEvent; -import org.mariotaku.twidere.view.UserHashtagAutoCompleteEditText; +import org.mariotaku.twidere.view.ComposeEditText; +import org.mariotaku.twidere.view.ComposeMaterialEditText; import java.util.ArrayList; import java.util.Collections; @@ -177,7 +177,7 @@ public class MessagesConversationFragment extends BaseSupportFragment implements // Views private RecyclerView mMessagesListView; private ListView mUsersSearchList; - private UserHashtagAutoCompleteEditText mEditText; + private ComposeEditText mEditText; private View mSendButton; private ImageView mAddImageButton; private View mConversationContainer, mRecipientSelectorContainer; @@ -337,13 +337,14 @@ public class MessagesConversationFragment extends BaseSupportFragment implements } } mEditText.setSelection(mEditText.length()); - mEditText.setMaxCharacters(mValidator.getMaxTweetLength()); - mEditText.setLengthChecker(new METLengthChecker() { - @Override - public int getLength(CharSequence text) { - return mValidator.getTweetLength(String.valueOf(text)); - } - }); +// mEditText.setMaxCharacters(mValidator.getMaxTweetLength()); +// mEditText.setLengthChecker(new METLengthChecker() { +// @Override +// public int getLength(CharSequence text) { +// return mValidator.getTweetLength(String.valueOf(text)); +// } +// }); + // TODO show text length final boolean isValid = mAccount != null && mRecipient != null; mConversationContainer.setVisibility(isValid ? View.VISIBLE : View.GONE); mRecipientSelectorContainer.setVisibility(isValid ? View.GONE : View.VISIBLE); @@ -439,7 +440,7 @@ public class MessagesConversationFragment extends BaseSupportFragment implements mRecipientSelectorContainer = view.findViewById(R.id.recipient_selector_container); mInputPanelShadowCompat = view.findViewById(R.id.input_panel_shadow_compat); mInputPanel = view.findViewById(R.id.input_panel); - mEditText = (UserHashtagAutoCompleteEditText) mInputPanel.findViewById(R.id.edit_text); + mEditText = (ComposeEditText) mInputPanel.findViewById(R.id.edit_text); mSendButton = mInputPanel.findViewById(R.id.send); mAddImageButton = (ImageView) mInputPanel.findViewById(R.id.add_image); } diff --git a/twidere/src/main/java/org/mariotaku/twidere/fragment/support/RetweetQuoteDialogFragment.java b/twidere/src/main/java/org/mariotaku/twidere/fragment/support/RetweetQuoteDialogFragment.java index c8f497277..20f60cf10 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/fragment/support/RetweetQuoteDialogFragment.java +++ b/twidere/src/main/java/org/mariotaku/twidere/fragment/support/RetweetQuoteDialogFragment.java @@ -39,8 +39,6 @@ import android.view.MenuItem; import android.view.View; import android.widget.Button; -import com.rengwuxian.materialedittext.validation.METLengthChecker; - import org.mariotaku.twidere.Constants; import org.mariotaku.twidere.R; import org.mariotaku.twidere.constant.SharedPreferenceConstants; @@ -52,7 +50,7 @@ import org.mariotaku.twidere.util.MenuUtils; import org.mariotaku.twidere.util.SharedPreferencesWrapper; import org.mariotaku.twidere.util.ThemeUtils; import org.mariotaku.twidere.util.TwidereValidator; -import org.mariotaku.twidere.view.UserHashtagAutoCompleteEditText; +import org.mariotaku.twidere.view.ComposeMaterialEditText; import org.mariotaku.twidere.view.holder.StatusViewHolder; import org.mariotaku.twidere.view.holder.StatusViewHolder.DummyStatusHolderAdapter; @@ -62,7 +60,7 @@ public class RetweetQuoteDialogFragment extends BaseSupportDialogFragment implem Constants, DialogInterface.OnClickListener { public static final String FRAGMENT_TAG = "retweet_quote"; - private UserHashtagAutoCompleteEditText mEditComment; + private ComposeMaterialEditText mEditComment; private PopupMenu mPopupMenu; private View mCommentMenu; private TwidereValidator mValidator; @@ -121,18 +119,18 @@ public class RetweetQuoteDialogFragment extends BaseSupportDialogFragment implem view.findViewById(R.id.action_buttons).setVisibility(View.GONE); view.findViewById(R.id.item_content).setFocusable(false); view.findViewById(R.id.comment_container).setVisibility(status.user_is_protected ? View.GONE : View.VISIBLE); - mEditComment = (UserHashtagAutoCompleteEditText) view.findViewById(R.id.edit_comment); + mEditComment = (ComposeMaterialEditText) view.findViewById(R.id.edit_comment); mEditComment.setAccountId(status.account_id); - mEditComment.setLengthChecker(new METLengthChecker() { - - final String statusLink = LinkCreator.getTwitterStatusLink(status.user_screen_name, status.quote_id).toString(); - - @Override - public int getLength(CharSequence text) { - return mValidator.getTweetLength(text + " " + statusLink); - } - }); - mEditComment.setMaxCharacters(mValidator.getMaxTweetLength()); +// mEditComment.setLengthChecker(new METLengthChecker() { +// +// final String statusLink = LinkCreator.getTwitterStatusLink(status.user_screen_name, status.quote_id).toString(); +// +// @Override +// public int getLength(CharSequence text) { +// return mValidator.getTweetLength(text + " " + statusLink); +// } +// }); +// mEditComment.setMaxCharacters(mValidator.getMaxTweetLength()); final boolean sendByEnter = mPreferences.getBoolean(KEY_QUICK_SEND); final EditTextEnterHandler enterHandler = EditTextEnterHandler.attach(mEditComment, new EditTextEnterHandler.EnterListener() { diff --git a/twidere/src/main/java/org/mariotaku/twidere/util/AsyncTwitterWrapper.java b/twidere/src/main/java/org/mariotaku/twidere/util/AsyncTwitterWrapper.java index 93c810305..8987fd434 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/util/AsyncTwitterWrapper.java +++ b/twidere/src/main/java/org/mariotaku/twidere/util/AsyncTwitterWrapper.java @@ -2087,7 +2087,7 @@ public class AsyncTwitterWrapper extends TwitterWrapper { @Override public ResponseList getDirectMessages(final Twitter twitter, final Paging paging) throws TwitterException { - return twitter.getDirectMessages(paging, true); + return twitter.getDirectMessages(paging); } @Override @@ -2126,7 +2126,7 @@ public class AsyncTwitterWrapper extends TwitterWrapper { @Override public ResponseList getDirectMessages(final Twitter twitter, final Paging paging) throws TwitterException { - return twitter.getSentDirectMessages(paging, true); + return twitter.getSentDirectMessages(paging); } @Override diff --git a/twidere/src/main/java/org/mariotaku/twidere/util/TwitterAPIFactory.java b/twidere/src/main/java/org/mariotaku/twidere/util/TwitterAPIFactory.java index da3956831..e075cec22 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/util/TwitterAPIFactory.java +++ b/twidere/src/main/java/org/mariotaku/twidere/util/TwitterAPIFactory.java @@ -20,6 +20,7 @@ import org.mariotaku.restfu.RestAPIFactory; import org.mariotaku.restfu.RestMethodInfo; import org.mariotaku.restfu.RestRequestInfo; import org.mariotaku.restfu.annotation.RestMethod; +import org.mariotaku.restfu.annotation.param.MethodExtra; import org.mariotaku.restfu.http.Authorization; import org.mariotaku.restfu.http.Endpoint; import org.mariotaku.restfu.http.FileValue; @@ -50,6 +51,7 @@ import java.net.Proxy; import java.net.SocketAddress; import java.nio.charset.Charset; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; @@ -308,6 +310,21 @@ public class TwitterAPIFactory implements TwidereConstants { } public static class TwidereRequestInfoFactory implements RequestInfoFactory { + + private static HashMap sExtraParams = new HashMap<>(); + + static { + sExtraParams.put("include_cards", "true"); + sExtraParams.put("cards_platform", "Android-12"); + sExtraParams.put("include_entities", "true"); + sExtraParams.put("include_my_retweet", "1"); + sExtraParams.put("include_rts", "1"); + sExtraParams.put("include_reply_count", "true"); + sExtraParams.put("include_descendent_reply_count", "true"); + sExtraParams.put("full_text", "true"); + } + + @Override public RestRequestInfo create(RestMethodInfo methodInfo) { final RestMethod method = methodInfo.getMethod(); @@ -318,23 +335,19 @@ public class TwitterAPIFactory implements TwidereConstants { final List> parts = methodInfo.getParts(); final FileValue file = methodInfo.getFile(); final Map extras = methodInfo.getExtras(); - if (parts.isEmpty()) { - final List> params = method.hasBody() ? forms : queries; - addParameter(params, "include_cards", true); - addParameter(params, "cards_platform", "Android-12"); - addParameter(params, "include_entities", true); - addParameter(params, "include_my_retweet", 1); - addParameter(params, "include_rts", 1); - addParameter(params, "include_reply_count", true); - addParameter(params, "include_descendent_reply_count", true); - } else { - addPart(parts, "include_cards", true); - addPart(parts, "cards_platform", "Android-12"); - addPart(parts, "include_entities", true); - addPart(parts, "include_my_retweet", 1); - addPart(parts, "include_rts", 1); - addPart(parts, "include_reply_count", true); - addPart(parts, "include_descendent_reply_count", true); + final MethodExtra methodExtra = methodInfo.getMethodExtra(); + if (methodExtra != null && "extra_params".equals(methodExtra.name())) { + final String[] extraParamKeys = methodExtra.values(); + if (parts.isEmpty()) { + final List> params = method.hasBody() ? forms : queries; + for (String key : extraParamKeys) { + addParameter(params, key, sExtraParams.get(key)); + } + } else { + for (String key : extraParamKeys) { + addPart(parts, key, sExtraParams.get(key)); + } + } } return new RestRequestInfo(method.value(), path, queries, forms, headers, parts, file, methodInfo.getBody(), extras); diff --git a/twidere/src/main/java/org/mariotaku/twidere/view/UserHashtagAutoCompleteEditText.java b/twidere/src/main/java/org/mariotaku/twidere/view/ComposeMaterialEditText.java similarity index 84% rename from twidere/src/main/java/org/mariotaku/twidere/view/UserHashtagAutoCompleteEditText.java rename to twidere/src/main/java/org/mariotaku/twidere/view/ComposeMaterialEditText.java index 2e3c575ff..84e2f1d4b 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/view/UserHashtagAutoCompleteEditText.java +++ b/twidere/src/main/java/org/mariotaku/twidere/view/ComposeMaterialEditText.java @@ -22,31 +22,30 @@ package org.mariotaku.twidere.view; import android.content.Context; import android.content.res.ColorStateList; import android.support.annotation.NonNull; +import android.support.v7.widget.AppCompatMultiAutoCompleteTextView; import android.text.InputType; import android.text.method.ArrowKeyMovementMethod; import android.util.AttributeSet; -import com.rengwuxian.materialedittext.MaterialMultiAutoCompleteTextView; - import org.mariotaku.twidere.R; import org.mariotaku.twidere.adapter.UserHashtagAutoCompleteAdapter; import org.mariotaku.twidere.util.widget.ScreenNameTokenizer; import org.mariotaku.twidere.view.iface.IThemeBackgroundTintView; -public class UserHashtagAutoCompleteEditText extends MaterialMultiAutoCompleteTextView implements IThemeBackgroundTintView { +public class ComposeMaterialEditText extends AppCompatMultiAutoCompleteTextView implements IThemeBackgroundTintView { private UserHashtagAutoCompleteAdapter mAdapter; private long mAccountId; - public UserHashtagAutoCompleteEditText(final Context context) { + public ComposeMaterialEditText(final Context context) { this(context, null); } - public UserHashtagAutoCompleteEditText(final Context context, final AttributeSet attrs) { + public ComposeMaterialEditText(final Context context, final AttributeSet attrs) { this(context, attrs, R.attr.autoCompleteTextViewStyle); } - public UserHashtagAutoCompleteEditText(final Context context, final AttributeSet attrs, final int defStyle) { + public ComposeMaterialEditText(final Context context, final AttributeSet attrs, final int defStyle) { super(context, attrs, defStyle); setTokenizer(new ScreenNameTokenizer()); setMovementMethod(ArrowKeyMovementMethod.getInstance()); @@ -80,7 +79,7 @@ public class UserHashtagAutoCompleteEditText extends MaterialMultiAutoCompleteTe @Override public void setBackgroundTintColor(@NonNull ColorStateList color) { - setPrimaryColor(color.getDefaultColor()); + setSupportBackgroundTintList(color); } public void setAccountId(long accountId) { diff --git a/twidere/src/main/res/layout/dialog_status_quote_retweet.xml b/twidere/src/main/res/layout/dialog_status_quote_retweet.xml index ebac090bc..9a21151a5 100644 --- a/twidere/src/main/res/layout/dialog_status_quote_retweet.xml +++ b/twidere/src/main/res/layout/dialog_status_quote_retweet.xml @@ -38,7 +38,7 @@ android:layout_height="wrap_content" android:orientation="horizontal"> - - + . --> - @@ -42,7 +43,7 @@ android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" - android:scrollbars="vertical" /> + android:scrollbars="vertical"/> @@ -51,7 +52,7 @@ android:layout_width="match_parent" android:layout_height="@dimen/element_spacing_small" android:layout_above="@+id/input_panel" - android:background="@drawable/shadow_top" /> + android:background="@drawable/shadow_top"/> + android:src="@drawable/ic_action_gallery"/> + android:src="@drawable/ic_action_send"/> - + android:textColor="?android:textColorPrimary" + android:textColorHint="?android:textColorTertiary"> - - + + @@ -154,7 +152,7 @@ android:layout_height="match_parent" android:paddingLeft="@dimen/element_spacing_normal" android:paddingRight="@dimen/element_spacing_normal" - android:scrollbarStyle="outsideInset" /> + android:scrollbarStyle="outsideInset"/> + android:src="@drawable/ic_info_search"/> + android:textAppearance="?android:textAppearanceMedium"/> + android:visibility="gone"/> \ No newline at end of file