diff --git a/core/src/main/kotlin/dev/usbharu/multim/api/StatusApi.kt b/core/src/main/kotlin/dev/usbharu/multim/api/StatusApi.kt index ed0e4d3..388e3c8 100644 --- a/core/src/main/kotlin/dev/usbharu/multim/api/StatusApi.kt +++ b/core/src/main/kotlin/dev/usbharu/multim/api/StatusApi.kt @@ -6,6 +6,7 @@ import dev.usbharu.multim.Logger import dev.usbharu.multim.UniqueId import dev.usbharu.multim.error.ErrorType import dev.usbharu.multim.error.MultiMError +import dev.usbharu.multim.error.MultiMResult import dev.usbharu.multim.model.* import kotlinx.datetime.TimeZone import kotlinx.datetime.toLocalDateTime @@ -130,6 +131,12 @@ interface StatusApi { (status.content.text + status.account.accountName + date).encodeToByteArray() ).toInt() } + val AVAILABLE_REACTIONS:String + get() = "status/availableReactions" + suspend fun availableReactions(): MultiMResult> { + Logger.debug("Status Api", "Not impl status api availableReactions") + return Err(MultiMError("availableReactions not implements", null, ErrorType.NOT_IMPL)) + } } diff --git a/core/src/main/kotlin/dev/usbharu/multim/cache/CacheableStatusApi.kt b/core/src/main/kotlin/dev/usbharu/multim/cache/CacheableStatusApi.kt index 25bc6f9..4bffdd5 100644 --- a/core/src/main/kotlin/dev/usbharu/multim/cache/CacheableStatusApi.kt +++ b/core/src/main/kotlin/dev/usbharu/multim/cache/CacheableStatusApi.kt @@ -3,6 +3,7 @@ package dev.usbharu.multim.cache import com.github.michaelbull.result.Result import dev.usbharu.multim.api.StatusApi import dev.usbharu.multim.error.MultiMError +import dev.usbharu.multim.error.MultiMResult import dev.usbharu.multim.model.PreviousAndNextPosts import dev.usbharu.multim.model.Reaction import dev.usbharu.multim.model.Status @@ -24,8 +25,15 @@ class CacheableStatusApi(private val cacheableApi: CacheableApi, private val sta override suspend fun getPreviousAndNext(id: StatusId): Result { return cacheableApi.cacheOrGet( - GET_PREVIOUS_AND_NEXT, - id + GET_PREVIOUS_AND_NEXT, id ) { statusApi.getPreviousAndNext(id) } } + + override suspend fun availableReactions(): MultiMResult> { + return cacheableApi.cacheOrGet( + (AVAILABLE_REACTIONS) + ) { + statusApi.availableReactions() + } + } } diff --git a/core/src/main/kotlin/dev/usbharu/multim/multi/MultiAccountStatusApi.kt b/core/src/main/kotlin/dev/usbharu/multim/multi/MultiAccountStatusApi.kt index fec5d92..194ccad 100644 --- a/core/src/main/kotlin/dev/usbharu/multim/multi/MultiAccountStatusApi.kt +++ b/core/src/main/kotlin/dev/usbharu/multim/multi/MultiAccountStatusApi.kt @@ -6,6 +6,7 @@ import com.github.michaelbull.result.map import dev.usbharu.multim.Logger import dev.usbharu.multim.api.StatusApi import dev.usbharu.multim.error.MultiMError +import dev.usbharu.multim.error.MultiMResult import dev.usbharu.multim.model.* import dev.usbharu.multim.multi.model.MultiAccountReaction import dev.usbharu.multim.multi.model.MultiAccountStatus @@ -210,5 +211,16 @@ class MultiAccountStatusApi(private val multiAccountApiBase: MultiAccountApiBase return MultiAccountStatus(first, second) } + suspend fun availableReactions(hashCode: Int): MultiMResult> { + Logger.debug("Status Api", "Multi account status api availableReactions") + return multiAccountApiBase.getImpl(hashCode).flatMap { it.statusApi.availableReactions() } + } + suspend fun availableReactions(hashCode: MultiAccountData<*>): MultiMResult> { + Logger.debug( + "Status Api", + "Multi account status api availableReactions with multiAccountData" + ) + return getImpl2(hashCode) { availableReactions() }.flatMap { it.first } + } }