mirror of
https://github.com/TwidereProject/Twidere-Android
synced 2025-02-02 09:46:51 +01:00
crash fixes
This commit is contained in:
parent
0b381c013e
commit
e3978b91bf
@ -49,6 +49,7 @@ public class ParcelableUser implements Parcelable, Comparable<ParcelableUser> {
|
||||
|
||||
@ParcelableThisPlease
|
||||
@JsonField(name = "account_id", typeConverter = UserKeyConverter.class)
|
||||
@Nullable
|
||||
public UserKey account_key;
|
||||
|
||||
@ParcelableThisPlease
|
||||
|
@ -959,13 +959,14 @@ class ComposeActivity : BaseActivity(), OnMenuItemClickListener, OnClickListener
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
private fun handleMentionIntent(user: ParcelableUser?): Boolean {
|
||||
if (user == null || user.key == null) return false
|
||||
val accountScreenName = DataStoreUtils.getAccountScreenName(this, user.account_key)
|
||||
if (user?.key == null) return false
|
||||
val accountKey = user.account_key ?: return false
|
||||
val accountScreenName = DataStoreUtils.getAccountScreenName(this, accountKey)
|
||||
if (TextUtils.isEmpty(accountScreenName)) return false
|
||||
editText.setText("@${user.acct} ")
|
||||
val selectionEnd = editText.length()
|
||||
editText.setSelection(selectionEnd)
|
||||
accountsAdapter.selectedAccountKeys = arrayOf(user.account_key)
|
||||
accountsAdapter.selectedAccountKeys = arrayOf(accountKey)
|
||||
return true
|
||||
}
|
||||
|
||||
|
@ -26,21 +26,16 @@ import org.mariotaku.twidere.R
|
||||
import org.mariotaku.twidere.util.StatusCodeMessageUtils
|
||||
import java.security.cert.CertPathValidatorException
|
||||
|
||||
/**
|
||||
* Created by mariotaku on 2017/4/20.
|
||||
*/
|
||||
|
||||
fun Throwable.getErrorMessage(context: Context): CharSequence = when (this) {
|
||||
is MicroBlogException -> getMicroBlogErrorMessage(context)
|
||||
is CertPathValidatorException -> context.getString(R.string.message_toast_ssl_tls_error)
|
||||
else -> message ?: toString()
|
||||
}
|
||||
|
||||
|
||||
private fun MicroBlogException.getMicroBlogErrorMessage(context: Context): String {
|
||||
if (isRateLimitExceeded) {
|
||||
val status = rateLimitStatus
|
||||
val secUntilReset = status.secondsUntilReset * 1000L
|
||||
val rateLimitStatus = this.rateLimitStatus
|
||||
if (isRateLimitExceeded && rateLimitStatus != null) {
|
||||
val secUntilReset = rateLimitStatus.secondsUntilReset * 1000L
|
||||
val nextResetTime = DateUtils.getRelativeTimeSpanString(System.currentTimeMillis() + secUntilReset)
|
||||
return context.getString(R.string.error_message_rate_limit, nextResetTime.trim())
|
||||
} else if (isCausedByNetworkIssue) {
|
||||
@ -50,12 +45,10 @@ private fun MicroBlogException.getMicroBlogErrorMessage(context: Context): Strin
|
||||
}
|
||||
return context.getString(R.string.message_toast_network_error_with_message, msg)
|
||||
}
|
||||
val msg = if (StatusCodeMessageUtils.containsTwitterError(errorCode)) {
|
||||
StatusCodeMessageUtils.getTwitterErrorMessage(context, errorCode)
|
||||
} else if (StatusCodeMessageUtils.containsHttpStatus(statusCode)) {
|
||||
StatusCodeMessageUtils.getHttpStatusMessage(context, statusCode)
|
||||
} else {
|
||||
errorMessage
|
||||
val msg = when {
|
||||
StatusCodeMessageUtils.containsTwitterError(errorCode) -> StatusCodeMessageUtils.getTwitterErrorMessage(context, errorCode)
|
||||
StatusCodeMessageUtils.containsHttpStatus(statusCode) -> StatusCodeMessageUtils.getHttpStatusMessage(context, statusCode)
|
||||
else -> errorMessage
|
||||
}
|
||||
return msg ?: message ?: javaClass.simpleName
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ import org.mariotaku.twidere.util.Utils
|
||||
fun ParcelableUser.getBestProfileBanner(width: Int, height: Int = 0): String? {
|
||||
return profile_banner_url?.let {
|
||||
InternalTwitterContentUtils.getBestBannerUrl(it, width, height)
|
||||
} ?: if (USER_TYPE_FANFOU_COM == key.host) {
|
||||
} ?: if (USER_TYPE_FANFOU_COM == key?.host) {
|
||||
profile_background_url
|
||||
} else {
|
||||
null
|
||||
@ -60,11 +60,12 @@ fun ParcelableUser.applyTo(relationship: ParcelableRelationship) {
|
||||
}
|
||||
}
|
||||
|
||||
val ParcelableUser.relationship: ParcelableRelationship get() = ParcelableRelationship().also {
|
||||
it.account_key = this.account_key
|
||||
it.user_key = this.key
|
||||
this.applyTo(it)
|
||||
}
|
||||
val ParcelableUser.relationship: ParcelableRelationship
|
||||
get() = ParcelableRelationship().also {
|
||||
it.account_key = this.account_key
|
||||
it.user_key = this.key
|
||||
this.applyTo(it)
|
||||
}
|
||||
|
||||
val ParcelableUser.host: String
|
||||
get() {
|
||||
@ -77,18 +78,22 @@ val ParcelableUser.host: String
|
||||
val ParcelableUser.isFanfouUser: Boolean
|
||||
get() = USER_TYPE_FANFOU_COM == key.host
|
||||
|
||||
inline val ParcelableUser.originalProfileImage: String? get() {
|
||||
return extras?.profile_image_url_original?.takeIf(String::isNotEmpty)
|
||||
?: Utils.getOriginalTwitterProfileImage(profile_image_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
|
||||
|
||||
|
||||
inline val ParcelableUser.acct: String get() = if (account_key.host == key.host) {
|
||||
screen_name
|
||||
} else {
|
||||
"$screen_name@${key.host}"
|
||||
}
|
||||
inline val ParcelableUser.acct: String
|
||||
get() {
|
||||
val key = this.key ?: return screen_name
|
||||
return if (account_key?.host == key.host) {
|
||||
screen_name
|
||||
} else {
|
||||
"$screen_name@${key.host}"
|
||||
}
|
||||
}
|
||||
|
||||
inline val ParcelableUser.groups_count: Long get() = extras?.groups_count ?: -1
|
@ -40,7 +40,8 @@ class AddUserFilterDialogFragment : AbsUserMuteBlockDialogFragment() {
|
||||
|
||||
override fun performUserAction(user: ParcelableUser, filterEverywhere: Boolean) {
|
||||
DataStoreUtils.addToFilter(context, listOf(user), filterEverywhere)
|
||||
bus.post(FriendshipTaskEvent(FriendshipTaskEvent.Action.FILTER, user.account_key, user.key).apply {
|
||||
val accountKey = user.account_key ?: return
|
||||
bus.post(FriendshipTaskEvent(FriendshipTaskEvent.Action.FILTER, accountKey, user.key).apply {
|
||||
isFinished = true
|
||||
isSucceeded = true
|
||||
})
|
||||
|
@ -42,7 +42,8 @@ class CreateUserBlockDialogFragment : AbsUserMuteBlockDialogFragment() {
|
||||
}
|
||||
|
||||
override fun performUserAction(user: ParcelableUser, filterEverywhere: Boolean) {
|
||||
twitterWrapper.createBlockAsync(user.account_key, user.key, filterEverywhere)
|
||||
val accountKey = user.account_key ?: return
|
||||
twitterWrapper.createBlockAsync(accountKey, user.key, filterEverywhere)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
@ -43,7 +43,8 @@ class CreateUserMuteDialogFragment : AbsUserMuteBlockDialogFragment() {
|
||||
}
|
||||
|
||||
override fun performUserAction(user: ParcelableUser, filterEverywhere: Boolean) {
|
||||
twitterWrapper.createMuteAsync(user.account_key, user.key, filterEverywhere)
|
||||
val accountKey = user.account_key ?: return
|
||||
twitterWrapper.createMuteAsync(accountKey, user.key, filterEverywhere)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
@ -39,7 +39,8 @@ class DestroyFriendshipDialogFragment : BaseDialogFragment(), DialogInterface.On
|
||||
override fun onClick(dialog: DialogInterface, which: Int) {
|
||||
when (which) {
|
||||
DialogInterface.BUTTON_POSITIVE -> {
|
||||
twitterWrapper.destroyFriendshipAsync(user.account_key, user.key)
|
||||
val accountKey = user.account_key ?: return
|
||||
twitterWrapper.destroyFriendshipAsync(accountKey, user.key)
|
||||
}
|
||||
else -> {
|
||||
}
|
||||
|
@ -209,24 +209,27 @@ abstract class ParcelableUsersFragment : AbsContentListRecyclerViewFragment<Parc
|
||||
|
||||
override fun onFollowClicked(holder: UserViewHolder, position: Int) {
|
||||
val user = adapter.getUser(position) ?: return
|
||||
if (twitterWrapper.isUpdatingRelationship(user.account_key, user.key)) return
|
||||
val accountKey = user.account_key ?: return
|
||||
if (twitterWrapper.isUpdatingRelationship(accountKey, user.key)) return
|
||||
if (user.is_following) {
|
||||
DestroyFriendshipDialogFragment.show(fragmentManager, user)
|
||||
} else {
|
||||
twitterWrapper.createFriendshipAsync(user.account_key, user.key, user.screen_name)
|
||||
twitterWrapper.createFriendshipAsync(accountKey, user.key, user.screen_name)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onUnblockClicked(holder: UserViewHolder, position: Int) {
|
||||
val user = adapter.getUser(position) ?: return
|
||||
if (twitterWrapper.isUpdatingRelationship(user.account_key, user.key)) return
|
||||
twitterWrapper.destroyBlockAsync(user.account_key, user.key)
|
||||
val accountKey = user.account_key ?: return
|
||||
if (twitterWrapper.isUpdatingRelationship(accountKey, user.key)) return
|
||||
twitterWrapper.destroyBlockAsync(accountKey, user.key)
|
||||
}
|
||||
|
||||
override fun onUnmuteClicked(holder: UserViewHolder, position: Int) {
|
||||
val user = adapter.getUser(position) ?: return
|
||||
if (twitterWrapper.isUpdatingRelationship(user.account_key, user.key)) return
|
||||
twitterWrapper.destroyMuteAsync(user.account_key, user.key)
|
||||
val accountKey = user.account_key ?: return
|
||||
if (twitterWrapper.isUpdatingRelationship(accountKey, user.key)) return
|
||||
twitterWrapper.destroyMuteAsync(accountKey, user.key)
|
||||
}
|
||||
|
||||
|
||||
|
@ -43,7 +43,8 @@ class ReportUserSpamDialogFragment : AbsUserMuteBlockDialogFragment() {
|
||||
}
|
||||
|
||||
override fun performUserAction(user: ParcelableUser, filterEverywhere: Boolean) {
|
||||
twitterWrapper.reportSpamAsync(user.account_key, user.key)
|
||||
val accountKey = user.account_key ?: return
|
||||
twitterWrapper.reportSpamAsync(accountKey, user.key)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
@ -410,7 +410,7 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
|
||||
val activity = activity ?: return
|
||||
this.user = user
|
||||
this.account = account
|
||||
if (user == null || user.key == null) {
|
||||
if (user?.key == null) {
|
||||
profileImage.visibility = View.GONE
|
||||
profileType.visibility = View.GONE
|
||||
val theme = Chameleon.getOverrideTheme(activity, activity)
|
||||
@ -612,36 +612,34 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
|
||||
}
|
||||
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
val user = user
|
||||
val user = user ?: return
|
||||
val accountKey = user.account_key ?: return
|
||||
when (requestCode) {
|
||||
REQUEST_SET_COLOR -> {
|
||||
if (user == null) return
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
if (data == null) return
|
||||
val color = data.getIntExtra(EXTRA_COLOR, Color.TRANSPARENT)
|
||||
userColorNameManager.setUserColor(this.user!!.key, color)
|
||||
userColorNameManager.setUserColor(user.key, color)
|
||||
} else if (resultCode == ColorPickerDialogActivity.RESULT_CLEARED) {
|
||||
userColorNameManager.clearUserColor(this.user!!.key)
|
||||
userColorNameManager.clearUserColor(user.key)
|
||||
}
|
||||
}
|
||||
REQUEST_ADD_TO_LIST -> {
|
||||
if (user == null) return
|
||||
if (resultCode == Activity.RESULT_OK && data != null) {
|
||||
val twitter = twitterWrapper
|
||||
val list = data.getParcelableExtra<ParcelableUserList>(EXTRA_USER_LIST) ?: return
|
||||
twitter.addUserListMembersAsync(user.account_key, list.id, user)
|
||||
twitter.addUserListMembersAsync(accountKey, list.id, user)
|
||||
}
|
||||
}
|
||||
REQUEST_SELECT_ACCOUNT -> {
|
||||
if (user == null) return
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
if (data == null || !data.hasExtra(EXTRA_ID)) return
|
||||
val accountKey = data.getParcelableExtra<UserKey>(EXTRA_ACCOUNT_KEY)
|
||||
val selectedAccountKey: UserKey = data.getParcelableExtra(EXTRA_ACCOUNT_KEY) ?: return
|
||||
var userKey = user.key
|
||||
if (account?.type == AccountType.MASTODON && account?.key?.host != accountKey.host) {
|
||||
if (account?.type == AccountType.MASTODON && account?.key?.host != selectedAccountKey.host) {
|
||||
userKey = AcctPlaceholderUserKey(user.key.host)
|
||||
}
|
||||
IntentUtils.openUserProfile(activity, accountKey, userKey, user.screen_name,
|
||||
IntentUtils.openUserProfile(activity, selectedAccountKey, userKey, user.screen_name,
|
||||
user.extras?.statusnet_profile_url, preferences[newDocumentApiKey],
|
||||
null)
|
||||
}
|
||||
@ -786,10 +784,11 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
|
||||
@UiThread
|
||||
override fun onPrepareOptionsMenu(menu: Menu) {
|
||||
val user = this.user ?: return
|
||||
val accountKey = user.account_key ?: return
|
||||
val account = this.account
|
||||
val relationship = this.relationship
|
||||
|
||||
val isMyself = user.account_key.maybeEquals(user.key)
|
||||
val isMyself = accountKey.maybeEquals(user.key)
|
||||
val mentionItem = menu.findItem(R.id.mention)
|
||||
if (mentionItem != null) {
|
||||
val displayName = UserColorNameManager.decideDisplayName(user.nickname,
|
||||
@ -881,14 +880,14 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
val context = context
|
||||
val twitter = twitterWrapper
|
||||
val user = user
|
||||
val user = user ?: return false
|
||||
val accountKey = user.account_key ?: return false
|
||||
val userRelationship = relationship
|
||||
if (user == null) return false
|
||||
when (item.itemId) {
|
||||
R.id.block -> {
|
||||
if (userRelationship == null) return true
|
||||
if (userRelationship.blocking) {
|
||||
twitter.destroyBlockAsync(user.account_key, user.key)
|
||||
twitter.destroyBlockAsync(accountKey, user.key)
|
||||
} else {
|
||||
CreateUserBlockDialogFragment.show(fragmentManager, user)
|
||||
}
|
||||
@ -910,7 +909,7 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
|
||||
R.id.mute_user -> {
|
||||
if (userRelationship == null) return true
|
||||
if (userRelationship.muting) {
|
||||
twitter.destroyMuteAsync(user.account_key, user.key)
|
||||
twitter.destroyMuteAsync(accountKey, user.key)
|
||||
} else {
|
||||
CreateUserMuteDialogFragment.show(fragmentManager, user)
|
||||
}
|
||||
@ -928,10 +927,10 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
|
||||
scheme(SCHEME_TWIDERE)
|
||||
authority(AUTHORITY_MESSAGES)
|
||||
path(PATH_MESSAGES_CONVERSATION_NEW)
|
||||
appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, user.account_key.toString())
|
||||
appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, accountKey.toString())
|
||||
}
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
intent.putExtra(EXTRA_ACCOUNT, AccountUtils.getAccountDetails(am, user.account_key,
|
||||
intent.putExtra(EXTRA_ACCOUNT, AccountUtils.getAccountDetails(am, accountKey,
|
||||
true))
|
||||
intent.putExtra(EXTRA_USERS, arrayOf(user))
|
||||
intent.putExtra(EXTRA_OPEN_CONVERSATION, true)
|
||||
@ -966,13 +965,13 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
|
||||
}
|
||||
R.id.follow -> {
|
||||
if (userRelationship == null) return true
|
||||
val updatingRelationship = twitter.isUpdatingRelationship(user.account_key,
|
||||
val updatingRelationship = twitter.isUpdatingRelationship(accountKey,
|
||||
user.key)
|
||||
if (!updatingRelationship) {
|
||||
if (userRelationship.following) {
|
||||
DestroyFriendshipDialogFragment.show(fragmentManager, user)
|
||||
} else {
|
||||
twitter.createFriendshipAsync(user.account_key, user.key, user.screen_name)
|
||||
twitter.createFriendshipAsync(accountKey, user.key, user.screen_name)
|
||||
}
|
||||
}
|
||||
return true
|
||||
@ -981,7 +980,7 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
|
||||
val newState = !item.isChecked
|
||||
val update = FriendshipUpdate()
|
||||
update.retweets(newState)
|
||||
twitter.updateFriendship(user.account_key, user.key, update)
|
||||
twitter.updateFriendship(accountKey, user.key, update)
|
||||
item.isChecked = newState
|
||||
return true
|
||||
}
|
||||
@ -993,28 +992,28 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
|
||||
}
|
||||
val update = FriendshipUpdate()
|
||||
update.deviceNotifications(newState)
|
||||
twitter.updateFriendship(user.account_key, user.key, update)
|
||||
twitter.updateFriendship(accountKey, user.key, update)
|
||||
item.isChecked = newState
|
||||
return true
|
||||
}
|
||||
R.id.muted_users -> {
|
||||
IntentUtils.openMutesUsers(activity, user.account_key)
|
||||
IntentUtils.openMutesUsers(activity, accountKey)
|
||||
return true
|
||||
}
|
||||
R.id.blocked_users -> {
|
||||
IntentUtils.openUserBlocks(activity, user.account_key)
|
||||
IntentUtils.openUserBlocks(activity, accountKey)
|
||||
return true
|
||||
}
|
||||
R.id.incoming_friendships -> {
|
||||
IntentUtils.openIncomingFriendships(activity, user.account_key)
|
||||
IntentUtils.openIncomingFriendships(activity, accountKey)
|
||||
return true
|
||||
}
|
||||
R.id.user_mentions -> {
|
||||
IntentUtils.openUserMentions(context, user.account_key, user.screen_name)
|
||||
IntentUtils.openUserMentions(context, accountKey, user.screen_name)
|
||||
return true
|
||||
}
|
||||
R.id.saved_searches -> {
|
||||
IntentUtils.openSavedSearches(context, user.account_key)
|
||||
IntentUtils.openSavedSearches(context, accountKey)
|
||||
return true
|
||||
}
|
||||
R.id.open_in_browser -> {
|
||||
@ -1039,22 +1038,22 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
|
||||
}
|
||||
R.id.add_user_to_home_screen -> {
|
||||
ShortcutCreator.performCreation(this) {
|
||||
ShortcutCreator.user(context, user.account_key, user)
|
||||
ShortcutCreator.user(context, accountKey, user)
|
||||
}
|
||||
}
|
||||
R.id.add_statuses_to_home_screen -> {
|
||||
ShortcutCreator.performCreation(this) {
|
||||
ShortcutCreator.userTimeline(context, user.account_key, user)
|
||||
ShortcutCreator.userTimeline(context, accountKey, user)
|
||||
}
|
||||
}
|
||||
R.id.add_favorites_to_home_screen -> {
|
||||
ShortcutCreator.performCreation(this) {
|
||||
ShortcutCreator.userFavorites(context, user.account_key, user)
|
||||
ShortcutCreator.userFavorites(context, accountKey, user)
|
||||
}
|
||||
}
|
||||
R.id.add_media_to_home_screen -> {
|
||||
ShortcutCreator.performCreation(this) {
|
||||
ShortcutCreator.userMediaTimeline(context, user.account_key, user)
|
||||
ShortcutCreator.userMediaTimeline(context, accountKey, user)
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
@ -1197,28 +1196,28 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
|
||||
}
|
||||
|
||||
override fun onClick(view: View) {
|
||||
val activity = activity
|
||||
val user = user
|
||||
if (activity == null || user == null) return
|
||||
val activity = activity ?: return
|
||||
val user = user ?: return
|
||||
val accountKey = user.account_key ?: return
|
||||
when (view.id) {
|
||||
R.id.errorContainer -> {
|
||||
getUserInfo(true)
|
||||
}
|
||||
R.id.follow -> {
|
||||
if (user.account_key.maybeEquals(user.key)) {
|
||||
IntentUtils.openProfileEditor(getActivity(), user.account_key)
|
||||
if (accountKey.maybeEquals(user.key)) {
|
||||
IntentUtils.openProfileEditor(getActivity(), accountKey)
|
||||
} else {
|
||||
val userRelationship = relationship
|
||||
val twitter = twitterWrapper
|
||||
if (userRelationship == null) return
|
||||
if (userRelationship.blocking) {
|
||||
twitter.destroyBlockAsync(user.account_key, user.key)
|
||||
twitter.destroyBlockAsync(accountKey, user.key)
|
||||
} else if (userRelationship.blocked_by) {
|
||||
CreateUserBlockDialogFragment.show(childFragmentManager, user)
|
||||
} else if (userRelationship.following) {
|
||||
DestroyFriendshipDialogFragment.show(fragmentManager, user)
|
||||
} else {
|
||||
twitter.createFriendshipAsync(user.account_key, user.key, user.screen_name)
|
||||
twitter.createFriendshipAsync(accountKey, user.key, user.screen_name)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1228,7 +1227,7 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
|
||||
profileImage.type = ParcelableMedia.Type.IMAGE
|
||||
profileImage.preview_url = user.profile_image_url
|
||||
val media = arrayOf(profileImage)
|
||||
IntentUtils.openMedia(activity, user.account_key, media, null, false,
|
||||
IntentUtils.openMedia(activity, accountKey, media, null, false,
|
||||
preferences[newDocumentApiKey], preferences[displaySensitiveContentsKey])
|
||||
}
|
||||
R.id.profileBanner -> {
|
||||
@ -1236,28 +1235,28 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
|
||||
val profileBanner = ParcelableMediaUtils.image(url)
|
||||
profileBanner.type = ParcelableMedia.Type.IMAGE
|
||||
val media = arrayOf(profileBanner)
|
||||
IntentUtils.openMedia(activity, user.account_key, media, null, false,
|
||||
IntentUtils.openMedia(activity, accountKey, media, null, false,
|
||||
preferences[newDocumentApiKey], preferences[displaySensitiveContentsKey])
|
||||
}
|
||||
R.id.listedContainer -> {
|
||||
IntentUtils.openUserLists(getActivity(), user.account_key, user.key,
|
||||
IntentUtils.openUserLists(getActivity(), accountKey, user.key,
|
||||
user.screen_name)
|
||||
}
|
||||
R.id.groupsContainer -> {
|
||||
IntentUtils.openUserGroups(getActivity(), user.account_key, user.key,
|
||||
IntentUtils.openUserGroups(getActivity(), accountKey, user.key,
|
||||
user.screen_name)
|
||||
}
|
||||
R.id.followersContainer -> {
|
||||
IntentUtils.openUserFollowers(getActivity(), user.account_key, user.key,
|
||||
IntentUtils.openUserFollowers(getActivity(), accountKey, user.key,
|
||||
user.screen_name)
|
||||
}
|
||||
R.id.friendsContainer -> {
|
||||
IntentUtils.openUserFriends(getActivity(), user.account_key, user.key,
|
||||
IntentUtils.openUserFriends(getActivity(), accountKey, user.key,
|
||||
user.screen_name)
|
||||
}
|
||||
R.id.nameContainer -> {
|
||||
if (user.account_key == user.key) return
|
||||
IntentUtils.openProfileEditor(getActivity(), user.account_key)
|
||||
if (accountKey == user.key) return
|
||||
IntentUtils.openProfileEditor(getActivity(), accountKey)
|
||||
}
|
||||
R.id.urlContainer -> {
|
||||
val uri = user.urlPreferred?.let(Uri::parse) ?: return
|
||||
@ -1379,7 +1378,8 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
|
||||
|
||||
private fun getUserInfo(omitIntentExtra: Boolean) {
|
||||
val user = this.user ?: return
|
||||
getUserInfo(user.account_key, user.key, user.screen_name, omitIntentExtra)
|
||||
val accountKey = user.account_key ?: return
|
||||
getUserInfo(accountKey, user.key, user.screen_name, omitIntentExtra)
|
||||
}
|
||||
|
||||
private fun setUiColor(color: Int) {
|
||||
@ -1598,6 +1598,7 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
|
||||
}
|
||||
|
||||
private fun showAddToListDialog(user: ParcelableUser) {
|
||||
val accountKey = user.account_key ?: return
|
||||
val weakThis = WeakReference(this)
|
||||
executeAfterFragmentResumed {
|
||||
ProgressDialogFragment.show(it.childFragmentManager, "get_list_progress")
|
||||
@ -1618,7 +1619,7 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
|
||||
return result
|
||||
}
|
||||
|
||||
val microBlog = MicroBlogAPIFactory.getInstance(fragment.context, user.account_key)
|
||||
val microBlog = MicroBlogAPIFactory.getInstance(fragment.context, accountKey)
|
||||
val ownedLists = ArrayList<ParcelableUserList>()
|
||||
val listMemberships = microBlog.getUserListOwnerMemberships(user.key.id)
|
||||
val paging = Paging()
|
||||
@ -1627,7 +1628,7 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
|
||||
do {
|
||||
val resp = microBlog.getUserListOwnerships(paging)
|
||||
resp.mapTo(ownedLists) { item ->
|
||||
val userList = item.toParcelable(user.account_key)
|
||||
val userList = item.toParcelable(accountKey)
|
||||
userList.is_user_inside = listMemberships.any { it.id == item.id }
|
||||
return@mapTo userList
|
||||
}
|
||||
@ -1645,7 +1646,7 @@ class UserFragment : BaseFragment(), OnClickListener, OnLinkClickListener,
|
||||
fragment.executeAfterFragmentResumed { f ->
|
||||
val df = AddRemoveUserListDialogFragment()
|
||||
df.arguments = Bundle {
|
||||
this[EXTRA_ACCOUNT_KEY] = user.account_key
|
||||
this[EXTRA_ACCOUNT_KEY] = accountKey
|
||||
this[EXTRA_USER_KEY] = user.key
|
||||
this[EXTRA_USER_LISTS] = result
|
||||
}
|
||||
|
@ -57,12 +57,14 @@ class IncomingFriendshipsFragment : ParcelableUsersFragment(), IUsersAdapter.Req
|
||||
|
||||
override fun onAcceptClicked(holder: UserViewHolder, position: Int) {
|
||||
val user = adapter.getUser(position) ?: return
|
||||
twitterWrapper.acceptFriendshipAsync(user.account_key, user.key)
|
||||
val accountKey = user.account_key ?: return
|
||||
twitterWrapper.acceptFriendshipAsync(accountKey, user.key)
|
||||
}
|
||||
|
||||
override fun onDenyClicked(holder: UserViewHolder, position: Int) {
|
||||
val user = adapter.getUser(position) ?: return
|
||||
twitterWrapper.denyFriendshipAsync(user.account_key, user.key)
|
||||
val accountKey = user.account_key ?: return
|
||||
twitterWrapper.denyFriendshipAsync(accountKey, user.key)
|
||||
}
|
||||
|
||||
@SuppressLint("SwitchIntDef")
|
||||
|
@ -36,7 +36,7 @@ abstract class ComponentPickerPreference(context: Context, attrs: AttributeSet?
|
||||
|
||||
override fun getSummary(): CharSequence {
|
||||
if (isNoneValue(value)) return noneEntry
|
||||
return entry
|
||||
return entry ?: noneEntry
|
||||
}
|
||||
|
||||
protected abstract val intentAction: String
|
||||
|
@ -69,7 +69,7 @@ object IntentUtils {
|
||||
|
||||
fun userProfile(user: ParcelableUser): Intent {
|
||||
val uri = LinkCreator.getTwidereUserLink(user.account_key, user.key, user.screen_name)
|
||||
val intent = Intent(Intent.ACTION_VIEW, uri)
|
||||
val intent = uri.intent()
|
||||
intent.setExtrasClassLoader(TwidereApplication::class.java.classLoader)
|
||||
intent.putExtra(EXTRA_USER, user)
|
||||
if (user.extras != null) {
|
||||
@ -81,7 +81,7 @@ object IntentUtils {
|
||||
fun userProfile(accountKey: UserKey?, userKey: UserKey?, screenName: String?,
|
||||
profileUrl: String? = null, accountHost: String? = accountKey?.host ?: userKey?.host): Intent {
|
||||
val uri = LinkCreator.getTwidereUserLink(accountKey, userKey, screenName)
|
||||
val intent = Intent(Intent.ACTION_VIEW, uri)
|
||||
val intent = uri.intent()
|
||||
intent.putExtra(EXTRA_PROFILE_URL, profileUrl)
|
||||
intent.putExtra(EXTRA_ACCOUNT_HOST, accountHost)
|
||||
return intent
|
||||
@ -100,7 +100,7 @@ object IntentUtils {
|
||||
profileUrl: String? = null): Intent {
|
||||
val uri = LinkCreator.getTwidereUserRelatedLink(AUTHORITY_USER_MEDIA_TIMELINE, accountKey,
|
||||
userKey, screenName)
|
||||
val intent = Intent(Intent.ACTION_VIEW, uri)
|
||||
val intent = uri.intent()
|
||||
intent.putExtra(EXTRA_PROFILE_URL, profileUrl)
|
||||
return intent
|
||||
}
|
||||
@ -109,7 +109,7 @@ object IntentUtils {
|
||||
profileUrl: String? = null): Intent {
|
||||
val uri = LinkCreator.getTwidereUserRelatedLink(AUTHORITY_USER_FAVORITES, accountKey,
|
||||
userKey, screenName)
|
||||
val intent = Intent(Intent.ACTION_VIEW, uri)
|
||||
val intent = uri.intent()
|
||||
intent.putExtra(EXTRA_PROFILE_URL, profileUrl)
|
||||
return intent
|
||||
}
|
||||
@ -118,25 +118,20 @@ object IntentUtils {
|
||||
if (items == null) return
|
||||
val extras = Bundle()
|
||||
extras.putParcelableArrayList(EXTRA_ITEMS, ArrayList(items))
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_ITEMS)
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
val builder = UriBuilder(AUTHORITY_ITEMS)
|
||||
val intent = builder.intent()
|
||||
intent.putExtras(extras)
|
||||
context.startActivity(intent)
|
||||
}
|
||||
|
||||
fun openUserMentions(context: Context, accountKey: UserKey?,
|
||||
screenName: String) {
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_USER_MENTIONS)
|
||||
val builder = UriBuilder(AUTHORITY_USER_MENTIONS)
|
||||
if (accountKey != null) {
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, accountKey.toString())
|
||||
}
|
||||
builder.appendQueryParameter(QUERY_PARAM_SCREEN_NAME, screenName)
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
context.startActivity(intent)
|
||||
context.startActivity(builder.intent())
|
||||
}
|
||||
|
||||
fun openMedia(context: Context, status: ParcelableStatus,
|
||||
@ -250,137 +245,107 @@ object IntentUtils {
|
||||
}
|
||||
|
||||
fun messageConversation(accountKey: UserKey, conversationId: String): Intent {
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_MESSAGES)
|
||||
val builder = UriBuilder(AUTHORITY_MESSAGES)
|
||||
builder.path(PATH_MESSAGES_CONVERSATION)
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, accountKey.toString())
|
||||
builder.appendQueryParameter(QUERY_PARAM_CONVERSATION_ID, conversationId)
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
intent.`package` = BuildConfig.APPLICATION_ID
|
||||
return intent
|
||||
return builder.intent()
|
||||
}
|
||||
|
||||
fun messageConversationInfo(accountKey: UserKey, conversationId: String): Intent {
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_MESSAGES)
|
||||
val builder = UriBuilder(AUTHORITY_MESSAGES)
|
||||
builder.path(PATH_MESSAGES_CONVERSATION_INFO)
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, accountKey.toString())
|
||||
builder.appendQueryParameter(QUERY_PARAM_CONVERSATION_ID, conversationId)
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
intent.`package` = BuildConfig.APPLICATION_ID
|
||||
return intent
|
||||
return builder.intent()
|
||||
}
|
||||
|
||||
fun newMessageConversation(accountKey: UserKey): Intent {
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_MESSAGES)
|
||||
val builder = UriBuilder(AUTHORITY_MESSAGES)
|
||||
builder.path(PATH_MESSAGES_CONVERSATION_NEW)
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, accountKey.toString())
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
intent.`package` = BuildConfig.APPLICATION_ID
|
||||
return intent
|
||||
return builder.intent()
|
||||
}
|
||||
|
||||
fun openIncomingFriendships(context: Context,
|
||||
accountKey: UserKey?) {
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_INCOMING_FRIENDSHIPS)
|
||||
val builder = UriBuilder(AUTHORITY_INCOMING_FRIENDSHIPS)
|
||||
if (accountKey != null) {
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, accountKey.toString())
|
||||
}
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
intent.`package` = BuildConfig.APPLICATION_ID
|
||||
context.startActivity(intent)
|
||||
context.startActivity(builder.intent())
|
||||
}
|
||||
|
||||
fun openMap(context: Context, latitude: Double, longitude: Double) {
|
||||
if (!ParcelableLocationUtils.isValidLocation(latitude, longitude)) return
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_MAP)
|
||||
val builder = UriBuilder(AUTHORITY_MAP)
|
||||
builder.appendQueryParameter(QUERY_PARAM_LAT, latitude.toString())
|
||||
builder.appendQueryParameter(QUERY_PARAM_LNG, longitude.toString())
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
intent.`package` = BuildConfig.APPLICATION_ID
|
||||
context.startActivity(intent)
|
||||
context.startActivity(builder.intent())
|
||||
}
|
||||
|
||||
fun openMutesUsers(context: Context,
|
||||
accountKey: UserKey?) {
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_MUTES_USERS)
|
||||
val builder = UriBuilder(AUTHORITY_MUTES_USERS)
|
||||
if (accountKey != null) {
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, accountKey.toString())
|
||||
}
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
intent.`package` = BuildConfig.APPLICATION_ID
|
||||
context.startActivity(intent)
|
||||
context.startActivity(builder.intent())
|
||||
}
|
||||
|
||||
fun openSavedSearches(context: Context, accountKey: UserKey?) {
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_SAVED_SEARCHES)
|
||||
val builder = UriBuilder(AUTHORITY_SAVED_SEARCHES)
|
||||
if (accountKey != null) {
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, accountKey.toString())
|
||||
}
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
intent.`package` = BuildConfig.APPLICATION_ID
|
||||
context.startActivity(intent)
|
||||
context.startActivity(builder.intent())
|
||||
}
|
||||
|
||||
fun openSearch(context: Context, accountKey: UserKey?, query: String, type: String? = null) {
|
||||
val intent = Intent(Intent.ACTION_VIEW)
|
||||
// Some devices cannot process query parameter with hashes well, so add this intent extra
|
||||
intent.putExtra(EXTRA_QUERY, query)
|
||||
if (accountKey != null) {
|
||||
intent.putExtra(EXTRA_ACCOUNT_KEY, accountKey)
|
||||
}
|
||||
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_SEARCH)
|
||||
val builder = UriBuilder(AUTHORITY_SEARCH)
|
||||
if (accountKey != null) {
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, accountKey.toString())
|
||||
}
|
||||
builder.appendQueryParameter(QUERY_PARAM_QUERY, query)
|
||||
if (!TextUtils.isEmpty(type)) {
|
||||
builder.appendQueryParameter(QUERY_PARAM_TYPE, type)
|
||||
}
|
||||
|
||||
val intent = builder.intent()
|
||||
// Some devices cannot process query parameter with hashes well, so add this intent extra
|
||||
intent.putExtra(EXTRA_QUERY, query)
|
||||
|
||||
if (!TextUtils.isEmpty(type)) {
|
||||
intent.putExtra(EXTRA_TYPE, type)
|
||||
}
|
||||
intent.data = builder.build()
|
||||
|
||||
if (accountKey != null) {
|
||||
intent.putExtra(EXTRA_ACCOUNT_KEY, accountKey)
|
||||
}
|
||||
context.startActivity(intent)
|
||||
}
|
||||
|
||||
fun openMastodonSearch(context: Context, accountKey: UserKey?, query: String) {
|
||||
val intent = Intent(Intent.ACTION_VIEW)
|
||||
val builder = UriBuilder(AUTHORITY_MASTODON_SEARCH)
|
||||
|
||||
if (accountKey != null) {
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, accountKey.toString())
|
||||
}
|
||||
builder.appendQueryParameter(QUERY_PARAM_QUERY, query)
|
||||
val intent = builder.intent()
|
||||
|
||||
// Some devices cannot process query parameter with hashes well, so add this intent extra
|
||||
intent.putExtra(EXTRA_QUERY, query)
|
||||
if (accountKey != null) {
|
||||
intent.putExtra(EXTRA_ACCOUNT_KEY, accountKey)
|
||||
}
|
||||
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_MASTODON_SEARCH)
|
||||
if (accountKey != null) {
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, accountKey.toString())
|
||||
}
|
||||
builder.appendQueryParameter(QUERY_PARAM_QUERY, query)
|
||||
intent.data = builder.build()
|
||||
|
||||
context.startActivity(intent)
|
||||
}
|
||||
|
||||
fun status(accountKey: UserKey?, statusId: String): Intent {
|
||||
val uri = LinkCreator.getTwidereStatusLink(accountKey, statusId)
|
||||
return Intent(Intent.ACTION_VIEW, uri)
|
||||
return Intent(Intent.ACTION_VIEW, uri).setPackage(BuildConfig.APPLICATION_ID)
|
||||
}
|
||||
|
||||
fun openStatus(context: Context, accountKey: UserKey?, statusId: String) {
|
||||
@ -388,65 +353,44 @@ object IntentUtils {
|
||||
}
|
||||
|
||||
fun openStatus(context: Context, status: ParcelableStatus, activityOptions: Bundle? = null) {
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_STATUS)
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, status.account_key.toString())
|
||||
builder.appendQueryParameter(QUERY_PARAM_STATUS_ID, status.id)
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
val intent = status(status.account_key, status.id)
|
||||
intent.setExtrasClassLoader(TwidereApplication::class.java.classLoader)
|
||||
intent.putExtra(EXTRA_STATUS, status)
|
||||
ActivityCompat.startActivity(context, intent, activityOptions)
|
||||
}
|
||||
|
||||
fun openStatusFavoriters(context: Context, accountKey: UserKey?,
|
||||
statusId: String) {
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_STATUS_FAVORITERS)
|
||||
fun openStatusFavoriters(context: Context, accountKey: UserKey?, statusId: String) {
|
||||
val builder = UriBuilder(AUTHORITY_STATUS_FAVORITERS)
|
||||
if (accountKey != null) {
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, accountKey.toString())
|
||||
}
|
||||
builder.appendQueryParameter(QUERY_PARAM_STATUS_ID, statusId)
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
ActivityCompat.startActivity(context, intent, null)
|
||||
ActivityCompat.startActivity(context, builder.intent(), null)
|
||||
}
|
||||
|
||||
fun openStatusRetweeters(context: Context, accountKey: UserKey?,
|
||||
statusId: String) {
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_STATUS_RETWEETERS)
|
||||
fun openStatusRetweeters(context: Context, accountKey: UserKey?, statusId: String) {
|
||||
val builder = UriBuilder(AUTHORITY_STATUS_RETWEETERS)
|
||||
if (accountKey != null) {
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, accountKey.toString())
|
||||
}
|
||||
builder.appendQueryParameter(QUERY_PARAM_STATUS_ID, statusId)
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
ActivityCompat.startActivity(context, intent, null)
|
||||
ActivityCompat.startActivity(context, builder.intent(), null)
|
||||
}
|
||||
|
||||
fun openTweetSearch(context: Context, accountKey: UserKey?,
|
||||
query: String) {
|
||||
fun openTweetSearch(context: Context, accountKey: UserKey?, query: String) {
|
||||
openSearch(context, accountKey, query, QUERY_PARAM_VALUE_TWEETS)
|
||||
}
|
||||
|
||||
fun openUserBlocks(activity: Activity?, accountKey: UserKey) {
|
||||
if (activity == null) return
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_USER_BLOCKS)
|
||||
val builder = UriBuilder(AUTHORITY_USER_BLOCKS)
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, accountKey.toString())
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
activity.startActivity(intent)
|
||||
activity.startActivity(builder.intent())
|
||||
}
|
||||
|
||||
fun openUserFavorites(context: Context,
|
||||
accountKey: UserKey?,
|
||||
userKey: UserKey?,
|
||||
fun openUserFavorites(context: Context, accountKey: UserKey?, userKey: UserKey?,
|
||||
screenName: String?) {
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_USER_FAVORITES)
|
||||
val builder = UriBuilder(AUTHORITY_USER_FAVORITES)
|
||||
if (accountKey != null) {
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, accountKey.toString())
|
||||
}
|
||||
@ -456,8 +400,7 @@ object IntentUtils {
|
||||
if (screenName != null) {
|
||||
builder.appendQueryParameter(QUERY_PARAM_SCREEN_NAME, screenName)
|
||||
}
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
context.startActivity(intent)
|
||||
context.startActivity(builder.intent())
|
||||
|
||||
}
|
||||
|
||||
@ -468,13 +411,9 @@ object IntentUtils {
|
||||
context.startActivity(Intent(Intent.ACTION_VIEW, intent))
|
||||
}
|
||||
|
||||
fun openUserFriends(context: Context,
|
||||
accountKey: UserKey?,
|
||||
userKey: UserKey?,
|
||||
fun openUserFriends(context: Context, accountKey: UserKey?, userKey: UserKey?,
|
||||
screenName: String?) {
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_USER_FRIENDS)
|
||||
val builder = UriBuilder(AUTHORITY_USER_FRIENDS)
|
||||
if (accountKey != null) {
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, accountKey.toString())
|
||||
}
|
||||
@ -484,9 +423,7 @@ object IntentUtils {
|
||||
if (screenName != null) {
|
||||
builder.appendQueryParameter(QUERY_PARAM_SCREEN_NAME, screenName)
|
||||
}
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
context.startActivity(intent)
|
||||
|
||||
context.startActivity(builder.intent())
|
||||
}
|
||||
|
||||
fun openUserListDetails(context: Context, accountKey: UserKey?, listId: String?,
|
||||
@ -496,14 +433,14 @@ object IntentUtils {
|
||||
|
||||
fun userListDetails(accountKey: UserKey?, listId: String?, userKey: UserKey?,
|
||||
screenName: String?, listName: String?): Intent {
|
||||
return Intent(Intent.ACTION_VIEW, getTwidereUserListRelatedLink(AUTHORITY_USER_LIST,
|
||||
accountKey, listId, userKey, screenName, listName))
|
||||
return getTwidereUserListRelatedLink(AUTHORITY_USER_LIST, accountKey, listId, userKey,
|
||||
screenName, listName).intent()
|
||||
}
|
||||
|
||||
fun userListTimeline(accountKey: UserKey?, listId: String?, userKey: UserKey?,
|
||||
screenName: String?, listName: String?): Intent {
|
||||
return Intent(Intent.ACTION_VIEW, getTwidereUserListRelatedLink(AUTHORITY_USER_LIST_TIMELINE,
|
||||
accountKey, listId, userKey, screenName, listName))
|
||||
return getTwidereUserListRelatedLink(AUTHORITY_USER_LIST_TIMELINE, accountKey, listId,
|
||||
userKey, screenName, listName).intent()
|
||||
}
|
||||
|
||||
fun openUserListDetails(context: Context, userList: ParcelableUserList) {
|
||||
@ -513,35 +450,28 @@ object IntentUtils {
|
||||
fun userListDetails(userList: ParcelableUserList): Intent {
|
||||
val userKey = userList.user_key
|
||||
val listId = userList.id
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_USER_LIST)
|
||||
val builder = UriBuilder(AUTHORITY_USER_LIST)
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, userList.account_key.toString())
|
||||
builder.appendQueryParameter(QUERY_PARAM_USER_KEY, userKey.toString())
|
||||
builder.appendQueryParameter(QUERY_PARAM_LIST_ID, listId)
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
val intent = builder.intent()
|
||||
intent.setExtrasClassLoader(TwidereApplication::class.java.classLoader)
|
||||
intent.putExtra(EXTRA_USER_LIST, userList)
|
||||
return intent
|
||||
}
|
||||
|
||||
fun openGroupDetails(context: Context, group: ParcelableGroup) {
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_GROUP)
|
||||
val builder = UriBuilder(AUTHORITY_GROUP)
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, group.account_key.toString())
|
||||
builder.appendQueryParameter(QUERY_PARAM_GROUP_ID, group.id)
|
||||
builder.appendQueryParameter(QUERY_PARAM_GROUP_NAME, group.nickname)
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
val intent = builder.intent()
|
||||
intent.setExtrasClassLoader(TwidereApplication::class.java.classLoader)
|
||||
intent.putExtra(EXTRA_GROUP, group)
|
||||
context.startActivity(intent)
|
||||
}
|
||||
|
||||
fun openUserLists(context: Context,
|
||||
accountKey: UserKey?,
|
||||
userKey: UserKey?,
|
||||
screenName: String?) {
|
||||
fun openUserLists(context: Context, accountKey: UserKey?, userKey: UserKey?, screenName: String?) {
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_USER_LISTS)
|
||||
@ -554,16 +484,12 @@ object IntentUtils {
|
||||
if (screenName != null) {
|
||||
builder.appendQueryParameter(QUERY_PARAM_SCREEN_NAME, screenName)
|
||||
}
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
context.startActivity(intent)
|
||||
context.startActivity(builder.intent())
|
||||
}
|
||||
|
||||
|
||||
fun openUserGroups(context: Context, accountKey: UserKey?, userKey: UserKey?,
|
||||
screenName: String?) {
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_USER_GROUPS)
|
||||
fun openUserGroups(context: Context, accountKey: UserKey?, userKey: UserKey?, screenName: String?) {
|
||||
val builder = UriBuilder(AUTHORITY_USER_GROUPS)
|
||||
if (accountKey != null) {
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, accountKey.toString())
|
||||
}
|
||||
@ -573,104 +499,69 @@ object IntentUtils {
|
||||
if (screenName != null) {
|
||||
builder.appendQueryParameter(QUERY_PARAM_SCREEN_NAME, screenName)
|
||||
}
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
context.startActivity(intent)
|
||||
context.startActivity(builder.intent())
|
||||
}
|
||||
|
||||
fun openDirectMessages(context: Context, accountKey: UserKey?) {
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_MESSAGES)
|
||||
val builder = UriBuilder(AUTHORITY_MESSAGES)
|
||||
if (accountKey != null) {
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, accountKey.toString())
|
||||
}
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
context.startActivity(intent)
|
||||
context.startActivity(builder.intent())
|
||||
}
|
||||
|
||||
fun openInteractions(context: Context, accountKey: UserKey?) {
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_INTERACTIONS)
|
||||
val builder = UriBuilder(AUTHORITY_INTERACTIONS)
|
||||
if (accountKey != null) {
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, accountKey.toString())
|
||||
}
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
context.startActivity(intent)
|
||||
context.startActivity(builder.intent())
|
||||
}
|
||||
|
||||
fun openPublicTimeline(context: Context, accountKey: UserKey?) {
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_PUBLIC_TIMELINE)
|
||||
val builder = UriBuilder(AUTHORITY_PUBLIC_TIMELINE)
|
||||
if (accountKey != null) {
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, accountKey.toString())
|
||||
}
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
context.startActivity(intent)
|
||||
context.startActivity(builder.intent())
|
||||
}
|
||||
|
||||
fun openNetworkPublicTimeline(context: Context, accountKey: UserKey?) {
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_NETWORK_PUBLIC_TIMELINE)
|
||||
val builder = UriBuilder(AUTHORITY_NETWORK_PUBLIC_TIMELINE)
|
||||
if (accountKey != null) {
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, accountKey.toString())
|
||||
}
|
||||
val intent = Intent(Intent.ACTION_VIEW, builder.build())
|
||||
context.startActivity(intent)
|
||||
context.startActivity(builder.intent())
|
||||
}
|
||||
|
||||
fun openAccountsManager(context: Context) {
|
||||
val intent = Intent()
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_ACCOUNTS)
|
||||
intent.data = builder.build()
|
||||
intent.`package` = BuildConfig.APPLICATION_ID
|
||||
context.startActivity(intent)
|
||||
val builder = UriBuilder(AUTHORITY_ACCOUNTS)
|
||||
context.startActivity(builder.intent())
|
||||
}
|
||||
|
||||
fun openDrafts(context: Context) {
|
||||
val intent = Intent()
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_DRAFTS)
|
||||
intent.data = builder.build()
|
||||
intent.`package` = BuildConfig.APPLICATION_ID
|
||||
context.startActivity(intent)
|
||||
val builder = UriBuilder(AUTHORITY_DRAFTS)
|
||||
context.startActivity(builder.intent())
|
||||
}
|
||||
|
||||
fun settings(initialTag: String? = null): Intent {
|
||||
val intent = Intent()
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE_SETTINGS)
|
||||
builder.authority(initialTag.orEmpty())
|
||||
intent.data = builder.build()
|
||||
intent.`package` = BuildConfig.APPLICATION_ID
|
||||
return intent
|
||||
return builder.intent()
|
||||
}
|
||||
|
||||
fun openProfileEditor(context: Context, accountKey: UserKey?) {
|
||||
val intent = Intent()
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_PROFILE_EDITOR)
|
||||
val builder = UriBuilder(AUTHORITY_PROFILE_EDITOR)
|
||||
if (accountKey != null) {
|
||||
builder.appendQueryParameter(QUERY_PARAM_ACCOUNT_KEY, accountKey.toString())
|
||||
}
|
||||
intent.data = builder.build()
|
||||
intent.`package` = BuildConfig.APPLICATION_ID
|
||||
context.startActivity(intent)
|
||||
context.startActivity(builder.intent())
|
||||
}
|
||||
|
||||
fun openFilters(context: Context, initialTab: String? = null) {
|
||||
val intent = Intent()
|
||||
val builder = Uri.Builder()
|
||||
builder.scheme(SCHEME_TWIDERE)
|
||||
builder.authority(AUTHORITY_FILTERS)
|
||||
intent.data = builder.build()
|
||||
intent.`package` = BuildConfig.APPLICATION_ID
|
||||
val builder = UriBuilder(AUTHORITY_FILTERS)
|
||||
val intent = builder.intent()
|
||||
intent.putExtra(EXTRA_INITIAL_TAB, initialTab)
|
||||
context.startActivity(intent)
|
||||
}
|
||||
@ -702,4 +593,16 @@ object IntentUtils {
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT)
|
||||
}
|
||||
}
|
||||
|
||||
private fun UriBuilder(authority: String): Uri.Builder {
|
||||
return Uri.Builder().scheme(SCHEME_TWIDERE).authority(authority)
|
||||
}
|
||||
|
||||
private fun Uri.intent(action: String = Intent.ACTION_VIEW): Intent {
|
||||
return Intent(action, this).setPackage(BuildConfig.APPLICATION_ID)
|
||||
}
|
||||
|
||||
private fun Uri.Builder.intent(action: String = Intent.ACTION_VIEW): Intent {
|
||||
return build().intent(action)
|
||||
}
|
||||
}
|
||||
|
@ -134,8 +134,8 @@ object LinkCreator {
|
||||
when (user.user_type) {
|
||||
AccountType.FANFOU -> return getFanfouUserLink(user.key.id)
|
||||
AccountType.MASTODON -> {
|
||||
val host = user.key.host ?: user.account_key.host
|
||||
return getMastodonUserLink(host!!, user.screen_name)
|
||||
val host = (user.key.host ?: user.account_key?.host)!! // Let it crash
|
||||
return getMastodonUserLink(host, user.screen_name)
|
||||
}
|
||||
}
|
||||
return getTwitterUserLink(user.screen_name)
|
||||
|
@ -120,14 +120,15 @@ class UserViewHolder(
|
||||
profileImageView.visibility = View.GONE
|
||||
}
|
||||
|
||||
if (user.account_key != null && twitter.isUpdatingRelationship(user.account_key, user.key)) {
|
||||
val accountKey = user.account_key
|
||||
if (accountKey != null && twitter.isUpdatingRelationship(accountKey, user.key)) {
|
||||
processingRequestProgress.visibility = View.VISIBLE
|
||||
actionsContainer.visibility = View.GONE
|
||||
} else {
|
||||
processingRequestProgress.visibility = View.GONE
|
||||
actionsContainer.visibility = View.VISIBLE
|
||||
}
|
||||
if (user.account_key != null && user.key.hasSameHost(user.account_key)) {
|
||||
if (accountKey != null && user.key.hasSameHost(accountKey)) {
|
||||
externalIndicator.visibility = View.GONE
|
||||
} else {
|
||||
externalIndicator.visibility = View.VISIBLE
|
||||
@ -137,7 +138,7 @@ class UserViewHolder(
|
||||
followButton.setImageResource(if (user.is_following) R.drawable.ic_action_confirm else R.drawable.ic_action_add)
|
||||
followButton.isActivated = user.is_following
|
||||
|
||||
val isMySelf = user.account_key == user.key
|
||||
val isMySelf = accountKey == user.key
|
||||
|
||||
if (requestClickListener != null && !isMySelf) {
|
||||
acceptRequestButton.visibility = View.VISIBLE
|
||||
|
Loading…
x
Reference in New Issue
Block a user