improved original sized profile image

This commit is contained in:
Mariotaku Lee 2017-04-10 19:11:49 +08:00
parent bcbc8c21d9
commit bf40c062ea
No known key found for this signature in database
GPG Key ID: 15C10F89D7C33535
7 changed files with 19 additions and 21 deletions

View File

@ -155,9 +155,10 @@ public class User extends TwitterResponseObject implements Comparable<User>, Par
String profileImageUrlHttps;
/**
* Fanfou has this field
* Fanfou has field {@code "profile_image_url_large"}
* GNU Social has field {@code "profile_image_url_profile_size"}
*/
@JsonField(name = "profile_image_url_large")
@JsonField(name = {"profile_image_url_large", "profile_image_url_profile_size"})
String profileImageUrlLarge;
@JsonField(name = {"profile_banner_url", "cover_photo"})
@ -204,9 +205,6 @@ public class User extends TwitterResponseObject implements Comparable<User>, Par
@JsonField(name = "profile_image_url_original")
String profileImageUrlOriginal;
@JsonField(name = "profile_image_url_profile_size")
String profileImageUrlProfileSize;
// BEGIN Twitter fields
@JsonField(name = "pinned_tweet_ids")
@ -447,10 +445,6 @@ public class User extends TwitterResponseObject implements Comparable<User>, Par
return profileImageUrlOriginal;
}
public String getProfileImageUrlProfileSize() {
return profileImageUrlProfileSize;
}
public String[] getPinnedTweetIds() {
return pinnedTweetIds;
}
@ -562,7 +556,6 @@ public class User extends TwitterResponseObject implements Comparable<User>, Par
", statusnetProfileUrl='" + statusnetProfileUrl + '\'' +
", ostatusUri='" + ostatusUri + '\'' +
", profileImageUrlOriginal='" + profileImageUrlOriginal + '\'' +
", profileImageUrlProfileSize='" + profileImageUrlProfileSize + '\'' +
", blockedBy=" + blockedBy +
", blocking=" + blocking +
", muting=" + muting +

View File

@ -28,6 +28,7 @@ import jp.wasabeef.glide.transformations.CropCircleTransformation
import org.mariotaku.twidere.R
import org.mariotaku.twidere.annotation.ImageShapeStyle
import org.mariotaku.twidere.extension.model.getBestProfileBanner
import org.mariotaku.twidere.extension.model.originalProfileImage
import org.mariotaku.twidere.extension.model.user
import org.mariotaku.twidere.model.*
import org.mariotaku.twidere.util.Utils
@ -124,10 +125,8 @@ fun RequestManager.loadProfileImage(context: Context, conversation: ParcelableMe
fun RequestManager.loadOriginalProfileImage(context: Context, user: ParcelableUser,
@ImageShapeStyle shapeStyle: Int, cornerRadius: Float = 0f, cornerRadiusRatio: Float = 0f
): DrawableRequestBuilder<String> {
val original = user.extras?.profile_image_url_original?.takeUnless(String::isEmpty)
?: Utils.getOriginalTwitterProfileImage(user.profile_image_url)
return configureLoadProfileImage(context, shapeStyle, cornerRadius, cornerRadiusRatio) {
load(original)
load(user.originalProfileImage)
}
}

View File

@ -25,6 +25,7 @@ import org.mariotaku.twidere.model.ParcelableUser
import org.mariotaku.twidere.model.UserKey
import org.mariotaku.twidere.model.util.ParcelableUserUtils
import org.mariotaku.twidere.util.InternalTwitterContentUtils
import org.mariotaku.twidere.util.Utils
fun ParcelableUser.getBestProfileBanner(width: Int): String? {
return profile_banner_url?.let {
@ -36,7 +37,12 @@ fun ParcelableUser.getBestProfileBanner(width: Int): String? {
}
}
val ParcelableUser.urlPreferred: String? get() = url_expanded?.takeIf(String::isNotEmpty) ?: url
inline val ParcelableUser.originalProfileImage: String? get() {
return extras?.profile_image_url_original?.takeIf(String::isNotEmpty)
?: Utils.getOriginalTwitterProfileImage(profile_image_url)
}
inline val ParcelableUser.urlPreferred: String? get() = url_expanded?.takeIf(String::isNotEmpty) ?: url
fun Array<User>.toParcelables(accountKey: UserKey, accountType: String, profileImageSize: String = "normal"): Array<ParcelableUser>? {

View File

@ -24,7 +24,7 @@ import org.mariotaku.twidere.util.Utils
fun User.getProfileImageOfSize(size: String): String {
if ("normal" != size) {
val larger = profileImageUrlProfileSize ?: profileImageUrlLarge
val larger = profileImageUrlLarge
if (larger != null) return larger
}
val profileImage = profileImageUrlHttps ?: profileImageUrl

View File

@ -112,6 +112,7 @@ import org.mariotaku.twidere.extension.loadOriginalProfileImage
import org.mariotaku.twidere.extension.loadProfileBanner
import org.mariotaku.twidere.extension.model.applyTo
import org.mariotaku.twidere.extension.model.getBestProfileBanner
import org.mariotaku.twidere.extension.model.originalProfileImage
import org.mariotaku.twidere.extension.model.urlPreferred
import org.mariotaku.twidere.fragment.AbsStatusesFragment.StatusesFragmentDelegate
import org.mariotaku.twidere.fragment.UserTimelineFragment.UserTimelineFragmentDelegate
@ -1228,7 +1229,7 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
}
}
R.id.profileImage -> {
val url = Utils.getOriginalTwitterProfileImage(user.profile_image_url)
val url = user.originalProfileImage ?: return
val profileImage = ParcelableMediaUtils.image(url)
profileImage.type = ParcelableMedia.Type.IMAGE
val media = arrayOf(profileImage)

View File

@ -39,9 +39,8 @@ import nl.komponents.kovenant.ui.failUi
import nl.komponents.kovenant.ui.promiseOnUi
import nl.komponents.kovenant.ui.successUi
import org.mariotaku.twidere.R
import org.mariotaku.twidere.annotation.ProfileImageSize
import org.mariotaku.twidere.constant.IntentConstants.EXTRA_USER
import org.mariotaku.twidere.extension.loadProfileImage
import org.mariotaku.twidere.extension.loadOriginalProfileImage
import org.mariotaku.twidere.model.ParcelableUser
import org.mariotaku.twidere.util.LinkCreator
import org.mariotaku.twidere.util.TwidereColorUtils
@ -67,8 +66,8 @@ class UserQrDialogFragment : BaseDialogFragment() {
super.onViewCreated(view, savedInstanceState)
val weakThis = WeakReference(this)
val deferred = Glide.with(context.applicationContext).loadProfileImage(context, user, 0,
size = ProfileImageSize.ORIGINAL).into(DeferredTarget())
val deferred = Glide.with(context.applicationContext).loadOriginalProfileImage(context,
user, 0).into(DeferredTarget())
promiseOnUi {
val fragment = weakThis.get() ?: return@promiseOnUi
fragment.qrView.visibility = View.INVISIBLE

View File

@ -80,7 +80,7 @@ object ParcelableUserUtils {
extras.followed_by = user.isFollowedBy == true
extras.muting = user.isMuting == true
extras.statusnet_profile_url = user.statusnetProfileUrl
extras.profile_image_url_original = user.profileImageUrlOriginal
extras.profile_image_url_original = user.profileImageUrlOriginal ?: user.profileImageUrlLarge
extras.pinned_status_ids = user.pinnedTweetIds
extras.groups_count = user.groupsCount
extras.unique_id = user.uniqueId