diff --git a/Yukari/src/main/java/shibafu/yukari/entity/ShadowUser.kt b/Yukari/src/main/java/shibafu/yukari/entity/ShadowUser.kt new file mode 100644 index 000000000..999176971 --- /dev/null +++ b/Yukari/src/main/java/shibafu/yukari/entity/ShadowUser.kt @@ -0,0 +1,19 @@ +package shibafu.yukari.entity + +import shibafu.yukari.twitter.AuthUserRecord + +/** + * 内部イベント処理用のUserスタブ + */ +class ShadowUser(userRecord: AuthUserRecord) : User { + override val id: Long = userRecord.NumericId + override val name: String = userRecord.Name + override val screenName: String = userRecord.ScreenName + override val isProtected: Boolean = false + override val profileImageUrl: String = userRecord.ProfileImageUrl + override val biggerProfileImageUrl: String = userRecord.ProfileImageUrl + + override fun isMentionedTo(userRecord: AuthUserRecord): Boolean { + return false + } +} \ No newline at end of file diff --git a/Yukari/src/main/java/shibafu/yukari/twitter/TwitterApi.kt b/Yukari/src/main/java/shibafu/yukari/twitter/TwitterApi.kt index 09628961a..4e0b34fa1 100644 --- a/Yukari/src/main/java/shibafu/yukari/twitter/TwitterApi.kt +++ b/Yukari/src/main/java/shibafu/yukari/twitter/TwitterApi.kt @@ -8,6 +8,7 @@ import android.widget.Toast import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import shibafu.yukari.database.Provider +import shibafu.yukari.entity.ShadowUser import shibafu.yukari.entity.Status import shibafu.yukari.entity.StatusDraft import shibafu.yukari.linkage.PostValidator @@ -110,10 +111,13 @@ class TwitterApi : ProviderApi { fun createFavorite(userRecord: AuthUserRecord, id: Long): Boolean { val twitter = service.getTwitter(userRecord) ?: throw IllegalStateException("Twitterとの通信の準備に失敗しました") try { - twitter.createFavorite(id) + val status = twitter.createFavorite(id) Handler(Looper.getMainLooper()).post { Toast.makeText(service.applicationContext, "ふぁぼりました (@" + userRecord.ScreenName + ")", Toast.LENGTH_SHORT).show() } + + service.timelineHub?.onFavorite(ShadowUser(userRecord), TwitterStatus(status, userRecord)) + return true } catch (e: TwitterException) { e.printStackTrace() @@ -131,6 +135,9 @@ class TwitterApi : ProviderApi { Handler(Looper.getMainLooper()).post { Toast.makeText(service.applicationContext, "ふぁぼりました (@" + userRecord.ScreenName + ")", Toast.LENGTH_SHORT).show() } + + service.timelineHub?.onFavorite(ShadowUser(userRecord), status) + return true } catch (e: TwitterException) { e.printStackTrace() @@ -148,6 +155,9 @@ class TwitterApi : ProviderApi { Handler(Looper.getMainLooper()).post { Toast.makeText(service.applicationContext, "あんふぁぼしました (@" + userRecord.ScreenName + ")", Toast.LENGTH_SHORT).show() } + + service.timelineHub?.onUnfavorite(ShadowUser(userRecord), status) + return true } catch (e: TwitterException) { e.printStackTrace()