supported fav/unfav, reblog/unreblog, delete status for mastodon

improved mastodon visibility in timeline
This commit is contained in:
Mariotaku Lee 2017-04-23 00:34:44 +08:00
parent f97c820ec8
commit 2987651e23
No known key found for this signature in database
GPG Key ID: 15C10F89D7C33535
10 changed files with 185 additions and 101 deletions

View File

@ -25,6 +25,8 @@ import org.mariotaku.microblog.library.mastodon.model.Context;
import org.mariotaku.microblog.library.mastodon.model.LinkHeaderList;
import org.mariotaku.microblog.library.mastodon.model.Status;
import org.mariotaku.microblog.library.mastodon.model.StatusUpdate;
import org.mariotaku.microblog.library.twitter.model.ResponseCode;
import org.mariotaku.restfu.annotation.method.DELETE;
import org.mariotaku.restfu.annotation.method.GET;
import org.mariotaku.restfu.annotation.method.POST;
import org.mariotaku.restfu.annotation.param.Param;
@ -52,4 +54,19 @@ public interface StatusesResources {
@POST("/v1/statuses")
Status postStatus(@Param StatusUpdate update) throws MicroBlogException;
@DELETE("/v1/statuses/{id}")
ResponseCode deleteStatus(@Path("id") String id) throws MicroBlogException;
@POST("/v1/statuses/{id}/reblog")
Status reblogStatus(@Path("id") String id) throws MicroBlogException;
@POST("/v1/statuses/{id}/unreblog")
Status unreblogStatus(@Path("id") String id) throws MicroBlogException;
@POST("/v1/statuses/{id}/favourite")
Status favouriteStatus(@Path("id") String id) throws MicroBlogException;
@POST("/v1/statuses/{id}/unfavourite")
Status unfavouriteStatus(@Path("id") String id) throws MicroBlogException;
}

View File

@ -890,9 +890,10 @@ class ComposeActivity : BaseActivity(), OnMenuItemClickListener, OnClickListener
}
private fun resetButtonsStates() {
// Should be called first
updateAccountSelectionState()
updateLocationState()
updateVisibilityState()
updateAccountSelectionState()
updateUpdateStatusIcon()
updateMediaState()
setMenu()
@ -1007,6 +1008,7 @@ class ComposeActivity : BaseActivity(), OnMenuItemClickListener, OnClickListener
val selectionEnd = editText.length()
editText.setSelection(selectionStart, selectionEnd)
}
statusVisibility = intent.getStringExtra(EXTRA_VISIBILITY) ?: status.extras?.visibility
accountsAdapter.selectedAccountKeys = arrayOf(status.account_key)
showReplyLabelAndHint(status)
return true
@ -1578,6 +1580,7 @@ class ComposeActivity : BaseActivity(), OnMenuItemClickListener, OnClickListener
}
private fun updateVisibilityState() {
visibilityLabel.visibility = if (hasStatusVisibility) View.VISIBLE else View.GONE
when (statusVisibility) {
StatusVisibility.UNLISTED -> {
visibilityLabel.setText(R.string.label_status_visibility_unlisted)
@ -1600,6 +1603,7 @@ class ComposeActivity : BaseActivity(), OnMenuItemClickListener, OnClickListener
R.drawable.ic_action_web, 0, 0, 0)
}
}
visibilityLabel.refreshDrawableState()
}
private fun getTwitterReplyTextAndMentions(text: String = editText.text?.toString().orEmpty(),
@ -1952,6 +1956,7 @@ class ComposeActivity : BaseActivity(), OnMenuItemClickListener, OnClickListener
val account = accounts!![position]
selection.put(account.key, true != selection[account.key])
activity.updateAccountSelectionState()
activity.updateVisibilityState()
activity.setMenu()
notifyDataSetChanged()
}
@ -1962,6 +1967,7 @@ class ComposeActivity : BaseActivity(), OnMenuItemClickListener, OnClickListener
selection.clear()
selection.put(account.key, true != selection[account.key])
activity.updateAccountSelectionState()
activity.updateVisibilityState()
activity.setMenu()
notifyDataSetChanged()
}

View File

@ -6,9 +6,11 @@ import android.widget.Toast
import org.apache.commons.collections.primitives.ArrayIntList
import org.mariotaku.microblog.library.MicroBlog
import org.mariotaku.microblog.library.MicroBlogException
import org.mariotaku.microblog.library.mastodon.Mastodon
import org.mariotaku.sqliteqb.library.Expression
import org.mariotaku.twidere.annotation.AccountType
import org.mariotaku.twidere.extension.getErrorMessage
import org.mariotaku.twidere.extension.model.api.mastodon.toParcelable
import org.mariotaku.twidere.extension.model.api.toParcelable
import org.mariotaku.twidere.extension.model.newMicroBlogInstance
import org.mariotaku.twidere.model.AccountDetails
@ -18,8 +20,7 @@ import org.mariotaku.twidere.model.UserKey
import org.mariotaku.twidere.model.draft.StatusObjectActionExtras
import org.mariotaku.twidere.model.event.FavoriteTaskEvent
import org.mariotaku.twidere.model.event.StatusListChangedEvent
import org.mariotaku.twidere.model.util.ParcelableStatusUtils
import org.mariotaku.twidere.provider.TwidereDataStore
import org.mariotaku.twidere.provider.TwidereDataStore.Statuses
import org.mariotaku.twidere.task.twitter.UpdateStatusTask
import org.mariotaku.twidere.util.AsyncTwitterWrapper.Companion.calculateHashCode
import org.mariotaku.twidere.util.DataStoreUtils
@ -48,6 +49,10 @@ class CreateFavoriteTask(context: Context, accountKey: UserKey, private val stat
val microBlog = account.newMicroBlogInstance(context, cls = MicroBlog::class.java)
microBlog.createFanfouFavorite(statusId).toParcelable(account)
}
AccountType.MASTODON -> {
val mastodon = account.newMicroBlogInstance(context, cls = Mastodon::class.java)
mastodon.favouriteStatus(statusId).toParcelable(account)
}
else -> {
val microBlog = account.newMicroBlogInstance(context, cls = MicroBlog::class.java)
microBlog.createFavorite(statusId).toParcelable(account)
@ -55,15 +60,15 @@ class CreateFavoriteTask(context: Context, accountKey: UserKey, private val stat
}
Utils.setLastSeen(context, result.mentions, System.currentTimeMillis())
val values = ContentValues()
values.put(TwidereDataStore.Statuses.IS_FAVORITE, true)
values.put(TwidereDataStore.Statuses.REPLY_COUNT, result.reply_count)
values.put(TwidereDataStore.Statuses.RETWEET_COUNT, result.retweet_count)
values.put(TwidereDataStore.Statuses.FAVORITE_COUNT, result.favorite_count)
values.put(Statuses.IS_FAVORITE, true)
values.put(Statuses.REPLY_COUNT, result.reply_count)
values.put(Statuses.RETWEET_COUNT, result.retweet_count)
values.put(Statuses.FAVORITE_COUNT, result.favorite_count)
val statusWhere = Expression.and(
Expression.equalsArgs(TwidereDataStore.Statuses.ACCOUNT_KEY),
Expression.equalsArgs(Statuses.ACCOUNT_KEY),
Expression.or(
Expression.equalsArgs(TwidereDataStore.Statuses.STATUS_ID),
Expression.equalsArgs(TwidereDataStore.Statuses.RETWEET_ID)
Expression.equalsArgs(Statuses.STATUS_ID),
Expression.equalsArgs(Statuses.RETWEET_ID)
)
).sql
val statusWhereArgs = arrayOf(account.key.toString(), statusId, statusId)

View File

@ -6,10 +6,12 @@ import android.widget.Toast
import org.apache.commons.collections.primitives.ArrayIntList
import org.mariotaku.microblog.library.MicroBlog
import org.mariotaku.microblog.library.MicroBlogException
import org.mariotaku.microblog.library.mastodon.Mastodon
import org.mariotaku.sqliteqb.library.Expression
import org.mariotaku.twidere.R
import org.mariotaku.twidere.annotation.AccountType
import org.mariotaku.twidere.extension.getErrorMessage
import org.mariotaku.twidere.extension.model.api.mastodon.toParcelable
import org.mariotaku.twidere.extension.model.api.toParcelable
import org.mariotaku.twidere.extension.model.newMicroBlogInstance
import org.mariotaku.twidere.model.AccountDetails
@ -17,7 +19,7 @@ import org.mariotaku.twidere.model.ParcelableStatus
import org.mariotaku.twidere.model.UserKey
import org.mariotaku.twidere.model.event.FavoriteTaskEvent
import org.mariotaku.twidere.model.event.StatusListChangedEvent
import org.mariotaku.twidere.provider.TwidereDataStore
import org.mariotaku.twidere.provider.TwidereDataStore.Statuses
import org.mariotaku.twidere.util.AsyncTwitterWrapper
import org.mariotaku.twidere.util.AsyncTwitterWrapper.Companion.calculateHashCode
import org.mariotaku.twidere.util.DataStoreUtils
@ -33,43 +35,48 @@ class DestroyFavoriteTask(
) : AbsAccountRequestTask<Any?, ParcelableStatus, Any?>(context, accountKey) {
override fun onExecute(account: AccountDetails, params: Any?): ParcelableStatus {
val resolver = context.contentResolver
val microBlog = account.newMicroBlogInstance(context, cls = MicroBlog::class.java)
val result: ParcelableStatus
when (account.type) {
AccountType.FANFOU -> {
result = microBlog.destroyFanfouFavorite(statusId).toParcelable(account)
}
else -> {
result = microBlog.destroyFavorite(statusId).toParcelable(account)
}
val result = when (account.type) {
AccountType.FANFOU -> {
val microBlog = account.newMicroBlogInstance(context, cls = MicroBlog::class.java)
microBlog.destroyFanfouFavorite(statusId).toParcelable(account)
}
val values = ContentValues()
values.put(TwidereDataStore.Statuses.IS_FAVORITE, false)
values.put(TwidereDataStore.Statuses.FAVORITE_COUNT, result.favorite_count - 1)
values.put(TwidereDataStore.Statuses.RETWEET_COUNT, result.retweet_count)
values.put(TwidereDataStore.Statuses.REPLY_COUNT, result.reply_count)
AccountType.MASTODON -> {
val mastodon = account.newMicroBlogInstance(context, cls = Mastodon::class.java)
mastodon.unfavouriteStatus(statusId).toParcelable(account)
}
else -> {
val microBlog = account.newMicroBlogInstance(context, cls = MicroBlog::class.java)
microBlog.destroyFavorite(statusId).toParcelable(account)
}
}
val where = Expression.and(Expression.equalsArgs(TwidereDataStore.Statuses.ACCOUNT_KEY),
Expression.or(Expression.equalsArgs(TwidereDataStore.Statuses.STATUS_ID),
Expression.equalsArgs(TwidereDataStore.Statuses.RETWEET_ID)))
val whereArgs = arrayOf(accountKey.toString(), statusId, statusId)
for (uri in DataStoreUtils.STATUSES_URIS) {
resolver.update(uri, values, where.sql, whereArgs)
}
val values = ContentValues()
values.put(Statuses.IS_FAVORITE, false)
values.put(Statuses.FAVORITE_COUNT, result.favorite_count - 1)
values.put(Statuses.RETWEET_COUNT, result.retweet_count)
values.put(Statuses.REPLY_COUNT, result.reply_count)
val where = Expression.and(Expression.equalsArgs(Statuses.ACCOUNT_KEY),
Expression.or(Expression.equalsArgs(Statuses.STATUS_ID),
Expression.equalsArgs(Statuses.RETWEET_ID)))
val whereArgs = arrayOf(accountKey.toString(), statusId, statusId)
for (uri in DataStoreUtils.STATUSES_URIS) {
resolver.update(uri, values, where.sql, whereArgs)
}
resolver.updateActivityStatus(account.key, statusId) { activity ->
val statusesMatrix = arrayOf(activity.target_statuses, activity.target_object_statuses)
for (statusesArray in statusesMatrix) {
if (statusesArray == null) continue
for (status in statusesArray) {
if (result.id != status.id) continue
status.is_favorite = false
status.reply_count = result.reply_count
status.retweet_count = result.retweet_count
status.favorite_count = result.favorite_count - 1
}
val statusesMatrix = arrayOf(activity.target_statuses, activity.target_object_statuses)
for (statusesArray in statusesMatrix) {
if (statusesArray == null) continue
for (status in statusesArray) {
if (result.id != status.id) continue
status.is_favorite = false
status.reply_count = result.reply_count
status.retweet_count = result.retweet_count
status.favorite_count = result.favorite_count - 1
}
}
}
return result
}

View File

@ -4,9 +4,12 @@ import android.content.Context
import android.widget.Toast
import org.mariotaku.microblog.library.MicroBlog
import org.mariotaku.microblog.library.MicroBlogException
import org.mariotaku.microblog.library.mastodon.Mastodon
import org.mariotaku.microblog.library.twitter.model.ErrorInfo
import org.mariotaku.twidere.R
import org.mariotaku.twidere.annotation.AccountType
import org.mariotaku.twidere.extension.getErrorMessage
import org.mariotaku.twidere.extension.model.api.mastodon.toParcelable
import org.mariotaku.twidere.extension.model.api.toParcelable
import org.mariotaku.twidere.extension.model.newMicroBlogInstance
import org.mariotaku.twidere.model.AccountDetails
@ -28,8 +31,18 @@ class DestroyStatusTask(
) : AbsAccountRequestTask<Any?, ParcelableStatus, Any?>(context, accountKey) {
override fun onExecute(account: AccountDetails, params: Any?): ParcelableStatus {
val microBlog = account.newMicroBlogInstance(context, cls = MicroBlog::class.java)
return microBlog.destroyStatus(statusId).toParcelable(account)
when (account.type) {
AccountType.MASTODON -> {
val mastodon = account.newMicroBlogInstance(context, cls = Mastodon::class.java)
val result = mastodon.favouriteStatus(statusId)
mastodon.deleteStatus(statusId)
return result.toParcelable(account)
}
else -> {
val microBlog = account.newMicroBlogInstance(context, cls = MicroBlog::class.java)
return microBlog.destroyStatus(statusId).toParcelable(account)
}
}
}
override fun onCleanup(account: AccountDetails, params: Any?, result: ParcelableStatus?, exception: MicroBlogException?) {

View File

@ -6,8 +6,11 @@ import android.widget.Toast
import org.apache.commons.collections.primitives.ArrayIntList
import org.mariotaku.microblog.library.MicroBlog
import org.mariotaku.microblog.library.MicroBlogException
import org.mariotaku.microblog.library.mastodon.Mastodon
import org.mariotaku.sqliteqb.library.Expression
import org.mariotaku.twidere.annotation.AccountType
import org.mariotaku.twidere.extension.getErrorMessage
import org.mariotaku.twidere.extension.model.api.mastodon.toParcelable
import org.mariotaku.twidere.extension.model.api.toParcelable
import org.mariotaku.twidere.extension.model.newMicroBlogInstance
import org.mariotaku.twidere.model.AccountDetails
@ -18,7 +21,7 @@ import org.mariotaku.twidere.model.draft.StatusObjectActionExtras
import org.mariotaku.twidere.model.event.StatusListChangedEvent
import org.mariotaku.twidere.model.event.StatusRetweetedEvent
import org.mariotaku.twidere.model.util.ParcelableStatusUtils
import org.mariotaku.twidere.provider.TwidereDataStore
import org.mariotaku.twidere.provider.TwidereDataStore.Statuses
import org.mariotaku.twidere.task.twitter.UpdateStatusTask
import org.mariotaku.twidere.util.AsyncTwitterWrapper
import org.mariotaku.twidere.util.DataStoreUtils
@ -47,19 +50,27 @@ class RetweetStatusTask(
}
microBlogWrapper.addSendingDraftId(draftId)
val resolver = context.contentResolver
val microBlog = account.newMicroBlogInstance(context, MicroBlog::class.java)
try {
val result = microBlog.retweetStatus(statusId).toParcelable(account)
val result = when (account.type) {
AccountType.MASTODON -> {
val mastodon = account.newMicroBlogInstance(context, cls = Mastodon::class.java)
mastodon.reblogStatus(statusId).toParcelable(account)
}
else -> {
val microBlog = account.newMicroBlogInstance(context, cls = MicroBlog::class.java)
microBlog.retweetStatus(statusId).toParcelable(account)
}
}
ParcelableStatusUtils.updateExtraInformation(result, account)
Utils.setLastSeen(context, result.mentions, System.currentTimeMillis())
val values = ContentValues()
values.put(TwidereDataStore.Statuses.MY_RETWEET_ID, result.id)
values.put(TwidereDataStore.Statuses.REPLY_COUNT, result.reply_count)
values.put(TwidereDataStore.Statuses.RETWEET_COUNT, result.retweet_count)
values.put(TwidereDataStore.Statuses.FAVORITE_COUNT, result.favorite_count)
values.put(Statuses.MY_RETWEET_ID, result.id)
values.put(Statuses.REPLY_COUNT, result.reply_count)
values.put(Statuses.RETWEET_COUNT, result.retweet_count)
values.put(Statuses.FAVORITE_COUNT, result.favorite_count)
val where = Expression.or(
Expression.equalsArgs(TwidereDataStore.Statuses.STATUS_ID),
Expression.equalsArgs(TwidereDataStore.Statuses.RETWEET_ID)
Expression.equalsArgs(Statuses.STATUS_ID),
Expression.equalsArgs(Statuses.RETWEET_ID)
)
val whereArgs = arrayOf(statusId, statusId)
for (uri in DataStoreUtils.STATUSES_URIS) {

View File

@ -7,6 +7,7 @@ import android.support.annotation.ColorInt
import android.support.v4.view.ViewCompat
import android.support.v7.widget.AppCompatImageButton
import android.util.AttributeSet
import android.widget.ImageView
import org.mariotaku.chameleon.Chameleon
import org.mariotaku.chameleon.ChameleonView
import org.mariotaku.twidere.R
@ -41,7 +42,7 @@ class IconActionButton(
@ColorInt
get() {
if (field != 0) return field
return defaultColor
return defaultColorStateList?.getColorForState(activatedState, defaultColor) ?: defaultColor
}
set(@ColorInt activatedColor) {
field = activatedColor
@ -52,17 +53,20 @@ class IconActionButton(
@ColorInt
get() {
if (field != 0) return field
return defaultColor
return defaultColorStateList?.getColorForState(disabledState, defaultColor) ?: defaultColor
}
set(@ColorInt disabledColor) {
field = disabledColor
updateColorFilter()
}
private val defaultColorStateList: ColorStateList?
init {
val a = context.obtainStyledAttributes(attrs, R.styleable.IconActionButton,
R.attr.cardActionButtonStyle, R.style.Widget_CardActionButton)
defaultColor = a.getColor(R.styleable.IconActionButton_iabColor, 0)
defaultColorStateList = a.getColorStateList(R.styleable.IconActionButton_iabColor)
defaultColor = defaultColorStateList?.defaultColor ?: 0
activatedColor = a.getColor(R.styleable.IconActionButton_iabActivatedColor, 0)
disabledColor = a.getColor(R.styleable.IconActionButton_iabDisabledColor, 0)
a.recycle()
@ -79,16 +83,6 @@ class IconActionButton(
updateColorFilter()
}
private fun updateColorFilter() {
if (isActivated) {
setColorFilter(activatedColor)
} else if (isEnabled) {
setColorFilter(defaultColor)
} else {
setColorFilter(disabledColor)
}
}
override fun setBackgroundTintList(tint: ColorStateList?) {
super.setBackgroundTintList(tint)
updateColorFilter()
@ -110,4 +104,20 @@ class IconActionButton(
override fun applyAppearance(appearance: ChameleonView.Appearance) {
IIconActionButton.Appearance.apply(this, appearance as IIconActionButton.Appearance)
}
internal companion object {
val activatedState = intArrayOf(android.R.attr.state_activated)
val disabledState = intArrayOf(-android.R.attr.state_enabled)
fun IIconActionButton.updateColorFilter() {
this as ImageView
if (isActivated) {
setColorFilter(activatedColor)
} else if (isEnabled) {
setColorFilter(defaultColor)
} else {
setColorFilter(disabledColor)
}
}
}
}

View File

@ -1,6 +1,7 @@
package org.mariotaku.twidere.view
import android.content.Context
import android.content.res.ColorStateList
import android.graphics.Color
import android.support.annotation.ColorInt
import android.support.v4.view.ViewCompat
@ -10,6 +11,9 @@ import org.mariotaku.chameleon.Chameleon
import org.mariotaku.chameleon.ChameleonView
import org.mariotaku.twidere.R
import org.mariotaku.twidere.util.ThemeUtils
import org.mariotaku.twidere.view.IconActionButton.Companion.activatedState
import org.mariotaku.twidere.view.IconActionButton.Companion.disabledState
import org.mariotaku.twidere.view.IconActionButton.Companion.updateColorFilter
import org.mariotaku.twidere.view.iface.IIconActionButton
/**
@ -19,14 +23,15 @@ open class IconActionView(
context: Context, attrs: AttributeSet? = null
) : AppCompatImageView(context, attrs), IIconActionButton {
override final var defaultColor: Int = 0
override var defaultColor: Int = 0
@ColorInt
get() {
if (field != 0) return field
val color = ViewCompat.getBackgroundTintList(this)
if (color != null) {
val currentColor = color.getColorForState(drawableState, 0)
return ThemeUtils.getContrastColor(currentColor, Color.BLACK, Color.WHITE)
if (field == 0) {
val color = ViewCompat.getBackgroundTintList(this)
if (color != null) {
val currentColor = color.getColorForState(drawableState, 0)
return ThemeUtils.getContrastColor(currentColor, Color.BLACK, Color.WHITE)
}
}
return field
}
@ -35,37 +40,38 @@ open class IconActionView(
updateColorFilter()
}
override final var activatedColor: Int = 0
override var activatedColor: Int = 0
@ColorInt
get() {
if (field != 0) return field
return defaultColor
return defaultColorStateList?.getColorForState(activatedState, defaultColor) ?: defaultColor
}
set(@ColorInt value) {
field = value
set(@ColorInt activatedColor) {
field = activatedColor
updateColorFilter()
}
override final var disabledColor: Int = 0
override var disabledColor: Int = 0
@ColorInt
get() {
if (field != 0) return field
return defaultColor
return defaultColorStateList?.getColorForState(disabledState, defaultColor) ?: defaultColor
}
set(@ColorInt value) {
field = value
set(@ColorInt disabledColor) {
field = disabledColor
updateColorFilter()
}
private val defaultColorStateList: ColorStateList?
init {
if (!isInEditMode) {
val a = context.obtainStyledAttributes(attrs, R.styleable.IconActionButton,
R.attr.cardActionButtonStyle, R.style.Widget_CardActionButton)
defaultColor = a.getColor(R.styleable.IconActionButton_iabColor, 0)
activatedColor = a.getColor(R.styleable.IconActionButton_iabActivatedColor, 0)
disabledColor = a.getColor(R.styleable.IconActionButton_iabDisabledColor, 0)
a.recycle()
}
val a = context.obtainStyledAttributes(attrs, R.styleable.IconActionButton,
R.attr.cardActionButtonStyle, R.style.Widget_CardActionButton)
defaultColorStateList = a.getColorStateList(R.styleable.IconActionButton_iabColor)
defaultColor = a.getColor(R.styleable.IconActionButton_iabColor, 0)
activatedColor = a.getColor(R.styleable.IconActionButton_iabActivatedColor, 0)
disabledColor = a.getColor(R.styleable.IconActionButton_iabDisabledColor, 0)
a.recycle()
updateColorFilter()
}
@ -79,16 +85,6 @@ open class IconActionView(
updateColorFilter()
}
private fun updateColorFilter() {
if (isActivated) {
setColorFilter(activatedColor)
} else if (isEnabled) {
setColorFilter(defaultColor)
} else {
setColorFilter(disabledColor)
}
}
override fun isPostApplyTheme(): Boolean {
return false
}

View File

@ -21,6 +21,7 @@ import org.mariotaku.ktextension.applyFontFamily
import org.mariotaku.ktextension.empty
import org.mariotaku.ktextension.hideIfEmpty
import org.mariotaku.ktextension.isNotNullOrEmpty
import org.mariotaku.microblog.library.mastodon.annotation.StatusVisibility
import org.mariotaku.twidere.Constants.*
import org.mariotaku.twidere.R
import org.mariotaku.twidere.TwidereConstants.USER_TYPE_FANFOU_COM
@ -395,6 +396,24 @@ class StatusViewHolder(private val adapter: IStatusesAdapter<*>, itemView: View)
replyCountView.visibility = View.GONE
}
when (status.extras?.visibility) {
StatusVisibility.PRIVATE -> {
retweetButton.isEnabled = false
retweetIcon.setImageResource(R.drawable.ic_action_lock)
retweetIcon.isEnabled = false
}
StatusVisibility.DIRECT -> {
retweetButton.isEnabled = false
retweetIcon.setImageResource(R.drawable.ic_action_message)
retweetIcon.isEnabled = false
}
else -> {
retweetButton.isEnabled = true
retweetIcon.setImageResource(R.drawable.ic_action_retweet)
retweetIcon.isEnabled = true
}
}
if (twitter.isDestroyingStatus(status.account_key, status.my_retweet_id)) {
retweetIcon.isActivated = false
retweetCount = Math.max(0, status.retweet_count - 1)

View File

@ -348,7 +348,7 @@
android:scaleType="centerInside"
android:src="@drawable/ic_action_reply"
app:iabActivatedColor="@color/highlight_reply"
app:iabColor="?android:textColorTertiary"
app:iabColor="?android:textColorSecondary"
tools:tint="?android:textColorSecondary"/>
<org.mariotaku.twidere.view.ActionIconThemedTextView
@ -387,7 +387,7 @@
android:scaleType="centerInside"
android:src="@drawable/ic_action_retweet"
app:iabActivatedColor="@color/highlight_retweet"
app:iabColor="?android:textColorTertiary"
app:iabColor="?android:textColorSecondary"
tools:tint="?android:textColorSecondary"/>
<org.mariotaku.twidere.view.ActionIconThemedTextView
@ -427,7 +427,7 @@
android:scaleType="centerInside"
android:src="@drawable/ic_action_heart"
app:iabActivatedColor="@color/highlight_like"
app:iabColor="?android:textColorTertiary"
app:iabColor="?android:textColorSecondary"
tools:tint="?android:textColorSecondary"/>
<org.mariotaku.twidere.view.ActionIconThemedTextView