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:
parent
ccff747357
commit
de68de90aa
8 changed files with 42 additions and 3 deletions
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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)
|
||||
}
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue