From b33b9e0b29be620391169396055bf4904251b449 Mon Sep 17 00:00:00 2001 From: shibafu Date: Wed, 17 Jul 2019 01:04:43 +0900 Subject: [PATCH] =?UTF-8?q?[Twitter]=20=E3=81=B5=E3=81=81=E3=81=BC/?= =?UTF-8?q?=E3=81=82=E3=82=93=E3=81=B5=E3=81=81=E3=81=BC=E3=82=92TL?= =?UTF-8?q?=E3=81=AB=E5=8F=8D=E6=98=A0=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit refs #257 --- .../java/shibafu/yukari/entity/ShadowUser.kt | 19 +++++++++++++++++++ .../java/shibafu/yukari/twitter/TwitterApi.kt | 12 +++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 Yukari/src/main/java/shibafu/yukari/entity/ShadowUser.kt 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()