1
0
mirror of https://github.com/TwidereProject/Twidere-Android synced 2025-02-01 17:26:46 +01:00

supports mastodon user lin

This commit is contained in:
Mariotaku Lee 2017-04-19 00:45:22 +08:00
parent 121950dc92
commit dcfc73b8bd
No known key found for this signature in database
GPG Key ID: 15C10F89D7C33535
3 changed files with 20 additions and 4 deletions

View File

@ -20,6 +20,7 @@
package org.mariotaku.twidere.extension.model.api.mastodon package org.mariotaku.twidere.extension.model.api.mastodon
import org.mariotaku.microblog.library.mastodon.model.Account import org.mariotaku.microblog.library.mastodon.model.Account
import org.mariotaku.twidere.annotation.AccountType
import org.mariotaku.twidere.model.ParcelableUser import org.mariotaku.twidere.model.ParcelableUser
import org.mariotaku.twidere.model.UserKey import org.mariotaku.twidere.model.UserKey
@ -47,6 +48,7 @@ fun Account.toParcelable(accountKey: UserKey, position: Long = 0): ParcelableUse
obj.favorites_count = -1 obj.favorites_count = -1
obj.listed_count = -1 obj.listed_count = -1
obj.media_count = -1 obj.media_count = -1
obj.user_type = AccountType.MASTODON
return obj return obj
} }

View File

@ -3,6 +3,7 @@ package org.mariotaku.twidere.model.util
import android.text.TextUtils import android.text.TextUtils
import org.mariotaku.ktextension.isNotNullOrEmpty import org.mariotaku.ktextension.isNotNullOrEmpty
import org.mariotaku.microblog.library.twitter.model.User import org.mariotaku.microblog.library.twitter.model.User
import org.mariotaku.twidere.annotation.AccountType
import org.mariotaku.twidere.extension.model.api.getProfileImageOfSize import org.mariotaku.twidere.extension.model.api.getProfileImageOfSize
import org.mariotaku.twidere.model.AccountDetails import org.mariotaku.twidere.model.AccountDetails
import org.mariotaku.twidere.model.ParcelableUser import org.mariotaku.twidere.model.ParcelableUser
@ -29,8 +30,8 @@ object ParcelableUserUtils {
} }
private fun fromUserInternal(user: User, accountKey: UserKey?, accountType: String?, position: Long = 0, private fun fromUserInternal(user: User, accountKey: UserKey?, @AccountType accountType: String?,
profileImageSize: String = "normal"): ParcelableUser { position: Long = 0, profileImageSize: String = "normal"): ParcelableUser {
val urlEntities = user.urlEntities val urlEntities = user.urlEntities
val obj = ParcelableUser() val obj = ParcelableUser()
obj.position = position obj.position = position

View File

@ -21,6 +21,7 @@ package org.mariotaku.twidere.util
import android.net.Uri import android.net.Uri
import org.mariotaku.twidere.TwidereConstants.* import org.mariotaku.twidere.TwidereConstants.*
import org.mariotaku.twidere.annotation.AccountType
import org.mariotaku.twidere.model.ParcelableStatus import org.mariotaku.twidere.model.ParcelableStatus
import org.mariotaku.twidere.model.ParcelableUser import org.mariotaku.twidere.model.ParcelableUser
import org.mariotaku.twidere.model.UserKey import org.mariotaku.twidere.model.UserKey
@ -133,8 +134,12 @@ object LinkCreator {
if (user.extras != null && user.extras.statusnet_profile_url != null) { if (user.extras != null && user.extras.statusnet_profile_url != null) {
return Uri.parse(user.extras.statusnet_profile_url) return Uri.parse(user.extras.statusnet_profile_url)
} }
if (USER_TYPE_FANFOU_COM == user.key.host) { when (user.user_type) {
return getFanfouUserLink(user.key.id) AccountType.FANFOU -> return getFanfouUserLink(user.key.id)
AccountType.MASTODON -> {
val host = user.key.host ?: user.account_key.host
return getMastodonUserLink(host!!, user.screen_name)
}
} }
return getTwitterUserLink(user.screen_name) return getTwitterUserLink(user.screen_name)
} }
@ -173,4 +178,12 @@ object LinkCreator {
builder.appendPath(id) builder.appendPath(id)
return builder.build() return builder.build()
} }
internal fun getMastodonUserLink(host: String, username: String): Uri {
val builder = Uri.Builder()
builder.scheme(SCHEME_HTTPS)
builder.authority(host)
builder.appendEncodedPath(Uri.encode("@$username", "@"))
return builder.build()
}
} }