1
0
Fork 0
mirror of https://github.com/anyproto/anytype-kotlin.git synced 2025-06-08 05:47:05 +09:00

DROID-971 Protocol | Enhancement | Refact use-case for opening object without subscribing to its subsequent changes (#2922)

This commit is contained in:
Evgenii Kozlov 2023-02-13 18:04:20 +01:00 committed by GitHub
parent ccff747357
commit de68de90aa
Signed by: github
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 42 additions and 3 deletions

View file

@ -38,6 +38,7 @@ class BlockDataRepository(
) : BlockRepository {
override suspend fun openObject(id: Id): ObjectView = remote.openObject(id = id)
override suspend fun getObject(id: Id): ObjectView = remote.getObject(id = id)
override suspend fun openDashboard(
contextId: String,

View file

@ -50,7 +50,11 @@ interface BlockDataStore {
suspend fun unlink(command: Command.Unlink): Payload
suspend fun openObject(id: Id) : ObjectView
suspend fun getObject(id: Id) : ObjectView
@Deprecated("Legacy", replaceWith = ReplaceWith("openObject(id: Id): ObjectView"))
suspend fun openPage(id: String): Payload
suspend fun openObjectSet(id: String): Payload
suspend fun openProfile(id: String): Payload
suspend fun openObjectPreview(id: Id): Payload

View file

@ -50,6 +50,8 @@ interface BlockRemote {
): CreateBlockLinkWithObjectResult
suspend fun openObject(id: Id): ObjectView
suspend fun getObject(id: Id) : ObjectView
suspend fun openPage(id: String): Payload
suspend fun openProfile(id: String): Payload
suspend fun openObjectSet(id: String): Payload

View file

@ -39,6 +39,8 @@ class BlockRemoteDataStore(private val remote: BlockRemote) : BlockDataStore {
): CreateBlockLinkWithObjectResult = remote.createBlockLinkWithObject(command)
override suspend fun openObject(id: Id): ObjectView = remote.openObject(id = id)
override suspend fun getObject(id: Id): ObjectView = remote.getObject(id = id)
override suspend fun openPage(id: String): Payload = remote.openPage(id)
override suspend fun openProfile(id: String): Payload = remote.openProfile(id)
override suspend fun openObjectSet(id: String): Payload = remote.openObjectSet(id)

View file

@ -90,6 +90,8 @@ interface BlockRepository {
suspend fun setRelationKey(command: Command.SetRelationKey): Payload
suspend fun openObject(id: Id) : ObjectView
suspend fun getObject(id: Id) : ObjectView
@Deprecated("To be deleted")
suspend fun openObjectPreview(id: Id): Result<Payload>
@Deprecated("To be deleted")

View file

@ -0,0 +1,18 @@
package com.anytypeio.anytype.domain.`object`
import com.anytypeio.anytype.core_models.Id
import com.anytypeio.anytype.core_models.ObjectView
import com.anytypeio.anytype.domain.base.AppCoroutineDispatchers
import com.anytypeio.anytype.domain.base.ResultInteractor
import com.anytypeio.anytype.domain.block.repo.BlockRepository
/**
* Use-case for opening an object as preview without subscribing to its subsequent changes.
* If you want to receive payload events, you should use [OpenObject] instead.
*/
class GetObject(
private val repo: BlockRepository,
dispatchers: AppCoroutineDispatchers
) : ResultInteractor<Id, ObjectView>(dispatchers.io) {
override suspend fun doWork(params: Id): ObjectView = repo.getObject(params)
}

View file

@ -42,10 +42,12 @@ class BlockMiddleware(
}
override suspend fun openObject(id: Id): ObjectView = middleware.objectOpen(id = id)
override suspend fun getObject(id: Id): ObjectView = middleware.objectShow(id = id)
override suspend fun openPage(id: String): Payload = middleware.objectOpenOld(id)
override suspend fun openProfile(id: String): Payload = middleware.objectOpenOld(id)
override suspend fun openObjectSet(id: String): Payload = middleware.objectOpenOld(id)
override suspend fun openObjectPreview(id: Id): Payload = middleware.objectShow(id)
override suspend fun openObjectPreview(id: Id): Payload = middleware.objectShowOld(id)
override suspend fun closePage(id: String) {
middleware.objectClose(id)

View file

@ -1,6 +1,5 @@
package com.anytypeio.anytype.middleware.interactor
import anytype.Event
import anytype.Rpc
import anytype.model.Block
import anytype.model.ObjectInfo
@ -1477,7 +1476,7 @@ class Middleware(
}
@Throws(Exception::class)
fun objectShow(id: String): Payload {
fun objectShowOld(id: String): Payload {
val request = Rpc.Object.Show.Request(objectId = id)
if (BuildConfig.DEBUG) logRequest(request)
val response = service.objectShow(request)
@ -1486,6 +1485,15 @@ class Middleware(
?: throw IllegalStateException("Object view was null")
}
@Throws(Exception::class)
fun objectShow(id: String): ObjectView {
val request = Rpc.Object.Show.Request(objectId = id)
if (BuildConfig.DEBUG) logRequest(request)
val response = service.objectShow(request)
if (BuildConfig.DEBUG) logResponse(response)
return response.objectView?.toCore() ?: throw IllegalStateException("Object view was null")
}
@Throws(Exception::class)
fun objectUndo(command: Command.Undo): Payload {
val request = Rpc.Object.Undo.Request(contextId = command.context)