diff --git a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/statusnet/api/StatusNetResources.java b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/statusnet/api/StatusNetResources.java index aaa2b1906..7347d2494 100644 --- a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/statusnet/api/StatusNetResources.java +++ b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/statusnet/api/StatusNetResources.java @@ -1,6 +1,7 @@ package org.mariotaku.twidere.api.statusnet.api; import org.mariotaku.restfu.annotation.method.GET; +import org.mariotaku.restfu.annotation.param.Path; import org.mariotaku.restfu.annotation.param.Query; import org.mariotaku.twidere.api.statusnet.model.StatusNetConfig; import org.mariotaku.twidere.api.twitter.TwitterException; @@ -16,5 +17,6 @@ public interface StatusNetResources { @GET("/statusnet/config.json") StatusNetConfig getStatusNetConfig() throws TwitterException; - + @GET("/statusnet/conversation/{id}.json") + ResponseList getStatusNetConversation(@Path("id") long statusId, @Query Paging paging) throws TwitterException; } 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 c926a467d..b3579bc90 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 @@ -44,12 +44,6 @@ public interface PrivateTweetResources extends PrivateResources { @GET("/statuses/{id}/activity/summary.json") StatusActivitySummary getStatusActivitySummary(@Path("id") long statusId) throws TwitterException; - @GET("/statuses/{id}/activity/summary.json") - StatusActivitySummary getStatusActivitySummary(@Path("id") long statusId, boolean includeUserEntities) throws TwitterException; - - @GET("/conversation/show.json") - ResponseList showConversation(@Query("id") long statusId) throws TwitterException; - @GET("/conversation/show.json") ResponseList showConversation(@Query("id") long statusId, @Query Paging paging) throws TwitterException; diff --git a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/model/User.java b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/model/User.java index c3a474e96..f4c984be2 100644 --- a/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/model/User.java +++ b/twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/model/User.java @@ -73,6 +73,9 @@ public class User extends TwitterResponseObject implements Comparable { @JsonField(name = "listed_count") long listedCount = -1; + @JsonField(name = "groups_count") + long groupsCount = -1; + @JsonField(name = "created_at", typeConverter = TwitterDateConverter.class) Date createdAt; @@ -299,6 +302,9 @@ public class User extends TwitterResponseObject implements Comparable { return listedCount; } + public long getGroupsCount() { + return groupsCount; + } public String getLocation() { return location; diff --git a/twidere.component.common/src/main/java/org/mariotaku/twidere/model/ParcelableUser.java b/twidere.component.common/src/main/java/org/mariotaku/twidere/model/ParcelableUser.java index f23ae6efd..8df4cab8f 100644 --- a/twidere.component.common/src/main/java/org/mariotaku/twidere/model/ParcelableUser.java +++ b/twidere.component.common/src/main/java/org/mariotaku/twidere/model/ParcelableUser.java @@ -307,6 +307,9 @@ public class ParcelableUser implements Parcelable, Comparable { @JsonField(name = "profile_image_url_profile_size") @ParcelableThisPlease public String profile_image_url_profile_size; + @JsonField(name = "groups_count") + @ParcelableThisPlease + public long groups_count = -1; @Override public int describeContents() { diff --git a/twidere/src/main/java/org/mariotaku/twidere/fragment/support/UserFragment.java b/twidere/src/main/java/org/mariotaku/twidere/fragment/support/UserFragment.java index 552c90ecf..81e546d61 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/fragment/support/UserFragment.java +++ b/twidere/src/main/java/org/mariotaku/twidere/fragment/support/UserFragment.java @@ -181,9 +181,10 @@ public class UserFragment extends BaseSupportFragment implements OnClickListener private ProfileBannerImageView mProfileBannerView; private View mProfileBirthdayBannerView; private TextView mNameView, mScreenNameView, mDescriptionView, mLocationView, mURLView, mCreatedAtView, - mListedCount, mFollowersCount, mFriendsCount, mHeaderErrorTextView; - private View mDescriptionContainer, mLocationContainer, mURLContainer, mListedContainer, mFollowersContainer, - mFriendsContainer; + mHeaderErrorTextView; + private TextView mListedCount, mFollowersCount, mFriendsCount, mGroupsCount; + private View mDescriptionContainer, mLocationContainer, mURLContainer; + private View mListedContainer, mFollowersContainer, mFriendsContainer, mGroupsContainer; private ImageView mHeaderErrorIcon; private ColorLabelRelativeLayout mProfileNameContainer; private View mProgressContainer, mHeaderErrorContainer; @@ -554,9 +555,14 @@ public class UserFragment extends BaseSupportFragment implements OnClickListener mCreatedAtView.setText(resources.getQuantityString(R.plurals.created_at_with_N_tweets_per_day, dailyTweets, createdAt, dailyTweets)); mListedCount.setText(Utils.getLocalizedNumber(mLocale, user.listed_count)); + final long groupsCount = user.extras != null ? user.extras.groups_count : -1; + mGroupsCount.setText(Utils.getLocalizedNumber(mLocale, groupsCount)); mFollowersCount.setText(Utils.getLocalizedNumber(mLocale, user.followers_count)); mFriendsCount.setText(Utils.getLocalizedNumber(mLocale, user.friends_count)); + mListedContainer.setVisibility(user.listed_count < 0 ? View.GONE : View.VISIBLE); + mGroupsContainer.setVisibility(groupsCount < 0 ? View.GONE : View.VISIBLE); + mMediaLoader.displayOriginalProfileImage(mProfileImageView, user); if (userColor != 0) { setUiColor(userColor); @@ -1150,7 +1156,9 @@ public class UserFragment extends BaseSupportFragment implements OnClickListener mURLView = (TextView) headerView.findViewById(R.id.url); mCreatedAtView = (TextView) headerView.findViewById(R.id.created_at); mListedContainer = headerView.findViewById(R.id.listed_container); + mGroupsContainer = headerView.findViewById(R.id.groups_container); mListedCount = (TextView) headerView.findViewById(R.id.listed_count); + mGroupsCount = (TextView) headerView.findViewById(R.id.groups_count); mFollowersContainer = headerView.findViewById(R.id.followers_container); mFollowersCount = (TextView) headerView.findViewById(R.id.followers_count); mFriendsContainer = headerView.findViewById(R.id.friends_container); diff --git a/twidere/src/main/java/org/mariotaku/twidere/loader/support/ConversationLoader.java b/twidere/src/main/java/org/mariotaku/twidere/loader/support/ConversationLoader.java index 585b7a017..afc030d08 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/loader/support/ConversationLoader.java +++ b/twidere/src/main/java/org/mariotaku/twidere/loader/support/ConversationLoader.java @@ -63,6 +63,8 @@ public class ConversationLoader extends TwitterAPIStatusesLoader { if (credentials == null) throw new TwitterException("Null credentials"); if (Utils.isOfficialCredentials(getContext(), credentials)) { return twitter.showConversation(status.id, paging); + } else if (!TwitterAPIFactory.isTwitterCredentials(credentials)) { + return twitter.getStatusNetConversation(status.id, paging); } final List statuses = new ArrayList<>(); final long maxId = getMaxId(), sinceId = getSinceId(); diff --git a/twidere/src/main/java/org/mariotaku/twidere/model/util/ParcelableUserUtils.java b/twidere/src/main/java/org/mariotaku/twidere/model/util/ParcelableUserUtils.java index 15199c574..7547daf0c 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/model/util/ParcelableUserUtils.java +++ b/twidere/src/main/java/org/mariotaku/twidere/model/util/ParcelableUserUtils.java @@ -1,7 +1,6 @@ package org.mariotaku.twidere.model.util; import android.database.Cursor; -import android.support.annotation.Nullable; import org.mariotaku.twidere.TwidereConstants; import org.mariotaku.twidere.api.twitter.model.UrlEntity; @@ -17,7 +16,7 @@ import org.mariotaku.twidere.util.media.preview.PreviewMediaExtractor; /** * Created by mariotaku on 16/2/24. */ -public class ParcelableUserUtils implements TwidereConstants{ +public class ParcelableUserUtils implements TwidereConstants { public static ParcelableUser fromUser(User user, long accountId) { return fromUser(user, accountId, 0); @@ -64,6 +63,7 @@ public class ParcelableUserUtils implements TwidereConstants{ extras.statusnet_profile_url = user.getStatusnetProfileUrl(); extras.profile_image_url_original = user.getProfileImageUrlOriginal(); extras.profile_image_url_profile_size = user.getProfileImageUrlProfileSize(); + extras.groups_count = user.getGroupsCount(); obj.extras = extras; obj.user_type = getUserType(extras.ostatus_uri); return obj; diff --git a/twidere/src/main/java/org/mariotaku/twidere/util/TwitterWrapper.java b/twidere/src/main/java/org/mariotaku/twidere/util/TwitterWrapper.java index 851f5f12d..3d218b758 100644 --- a/twidere/src/main/java/org/mariotaku/twidere/util/TwitterWrapper.java +++ b/twidere/src/main/java/org/mariotaku/twidere/util/TwitterWrapper.java @@ -151,9 +151,12 @@ public class TwitterWrapper implements Constants { try { return showUser(twitter, id, screenName); } catch (final TwitterException e) { - if (e.isCausedByNetworkIssue()) throw e; + // Twitter specific error for private API calling through proxy + if (e.getStatusCode() == 200) { + return showUserAlternative(twitter, id, screenName); + } + throw e; } - return showUserAlternative(twitter, id, screenName); } public static void updateProfileBannerImage(final Context context, final long accountId, diff --git a/twidere/src/main/res/layout/header_user.xml b/twidere/src/main/res/layout/header_user.xml index 31d35ca12..bb6ce9c1f 100644 --- a/twidere/src/main/res/layout/header_user.xml +++ b/twidere/src/main/res/layout/header_user.xml @@ -362,6 +362,35 @@ android:textAppearance="?android:textAppearanceSmall" android:textColor="?android:textColorSecondary" /> + + + + + + + diff --git a/twidere/src/main/res/values/strings.xml b/twidere/src/main/res/values/strings.xml index abd067475..2d0923278 100644 --- a/twidere/src/main/res/values/strings.xml +++ b/twidere/src/main/res/values/strings.xml @@ -755,4 +755,5 @@ Translation Incompatible tweet shortener Incompatible media uploader + Groups \ No newline at end of file