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

DROID-2987 Protocol | Update legacy methods for archiving and add to favorites (#1738)

This commit is contained in:
Konstantin Ivanov 2024-10-24 22:52:50 +02:00 committed by Evgenii Kozlov
parent d4ee1100c7
commit b3e96476fd
19 changed files with 104 additions and 327 deletions

View file

@ -63,7 +63,6 @@ import com.anytypeio.anytype.domain.`object`.ConvertObjectToCollection
import com.anytypeio.anytype.domain.`object`.ConvertObjectToSet
import com.anytypeio.anytype.domain.`object`.DuplicateObject
import com.anytypeio.anytype.domain.`object`.UpdateDetail
import com.anytypeio.anytype.domain.objects.SetObjectIsArchived
import com.anytypeio.anytype.domain.objects.StoreOfObjectTypes
import com.anytypeio.anytype.domain.objects.StoreOfRelations
import com.anytypeio.anytype.domain.objects.options.GetOptions
@ -749,15 +748,6 @@ object EditorUseCaseModule {
repo = repo
)
@JvmStatic
@Provides
@PerScreen
fun provideArchiveDocumentUseCase(
repo: BlockRepository
): SetObjectIsArchived = SetObjectIsArchived(
repo = repo
)
@JvmStatic
@Provides
@PerScreen

View file

@ -11,13 +11,12 @@ import com.anytypeio.anytype.domain.block.interactor.UpdateFields
import com.anytypeio.anytype.domain.block.repo.BlockRepository
import com.anytypeio.anytype.domain.collections.AddObjectToCollection
import com.anytypeio.anytype.domain.config.UserSettingsRepository
import com.anytypeio.anytype.domain.dashboard.interactor.AddToFavorite
import com.anytypeio.anytype.domain.dashboard.interactor.RemoveFromFavorite
import com.anytypeio.anytype.domain.dashboard.interactor.SetObjectListIsFavorite
import com.anytypeio.anytype.domain.misc.DeepLinkResolver
import com.anytypeio.anytype.domain.misc.UrlBuilder
import com.anytypeio.anytype.domain.`object`.DuplicateObject
import com.anytypeio.anytype.domain.`object`.SetObjectDetails
import com.anytypeio.anytype.domain.objects.SetObjectIsArchived
import com.anytypeio.anytype.domain.objects.SetObjectListIsArchived
import com.anytypeio.anytype.domain.page.AddBackLinkToObject
import com.anytypeio.anytype.domain.page.CloseBlock
import com.anytypeio.anytype.domain.page.OpenPage
@ -79,19 +78,6 @@ interface ObjectSetMenuComponent {
@Module
object ObjectMenuModuleBase {
@JvmStatic
@Provides
@PerDialog
fun provideAddToFavoriteUseCase(
repo: BlockRepository
): AddToFavorite = AddToFavorite(repo = repo)
@JvmStatic
@Provides
@PerDialog
fun provideRemoveFromFavoriteUseCase(
repo: BlockRepository
): RemoveFromFavorite = RemoveFromFavorite(repo = repo)
@JvmStatic
@Provides
@ -110,11 +96,8 @@ object ObjectMenuModule {
@Provides
@PerDialog
fun provideViewModelFactory(
setObjectIsArchived: SetObjectIsArchived,
duplicateObject: DuplicateObject,
debugTreeShareDownloader: DebugTreeShareDownloader,
addToFavorite: AddToFavorite,
removeFromFavorite: RemoveFromFavorite,
addBackLinkToObject: AddBackLinkToObject,
urlBuilder: UrlBuilder,
storage: Editor.Storage,
@ -131,13 +114,13 @@ object ObjectMenuModule {
spaceManager: SpaceManager,
deepLinkResolver: DeepLinkResolver,
analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
payloadDelegator: PayloadDelegator
payloadDelegator: PayloadDelegator,
setObjectListIsFavorite: SetObjectListIsFavorite,
setObjectIsArchived: SetObjectListIsArchived
): ObjectMenuViewModel.Factory = ObjectMenuViewModel.Factory(
setObjectIsArchived = setObjectIsArchived,
duplicateObject = duplicateObject,
debugTreeShareDownloader = debugTreeShareDownloader,
addToFavorite = addToFavorite,
removeFromFavorite = removeFromFavorite,
addBackLinkToObject = addBackLinkToObject,
urlBuilder = urlBuilder,
storage = storage,
@ -154,7 +137,8 @@ object ObjectMenuModule {
spaceManager = spaceManager,
deepLinkResolver = deepLinkResolver,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
payloadDelegator = payloadDelegator
payloadDelegator = payloadDelegator,
setObjectListIsFavorite = setObjectListIsFavorite
)
@JvmStatic
@ -206,6 +190,22 @@ object ObjectMenuModule {
@Provides
@PerDialog
fun provideDeeplinkResolver() : DeepLinkResolver = DefaultDeepLinkResolver
@JvmStatic
@Provides
@PerDialog
fun provideFavoriteUseCase(
repo: BlockRepository,
dispatchers: AppCoroutineDispatchers
): SetObjectListIsFavorite = SetObjectListIsFavorite(repo = repo, dispatchers = dispatchers)
@JvmStatic
@Provides
@PerDialog
fun provideArchiveUseCase(
repo: BlockRepository,
dispatchers: AppCoroutineDispatchers
): SetObjectListIsArchived = SetObjectListIsArchived(repo = repo, dispatchers = dispatchers)
}
@Module
@ -215,9 +215,6 @@ object ObjectSetMenuModule {
@Provides
@PerDialog
fun provideViewModelFactory(
setObjectIsArchived: SetObjectIsArchived,
addToFavorite: AddToFavorite,
removeFromFavorite: RemoveFromFavorite,
addBackLinkToObject: AddBackLinkToObject,
duplicateObject: DuplicateObject,
delegator: Delegator<Action>,
@ -232,11 +229,11 @@ object ObjectSetMenuModule {
spaceManager: SpaceManager,
deepLinkResolver: DeepLinkResolver,
analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
payloadDelegator: PayloadDelegator
payloadDelegator: PayloadDelegator,
setObjectListIsFavorite: SetObjectListIsFavorite,
setObjectIsArchived: SetObjectListIsArchived
): ObjectSetMenuViewModel.Factory = ObjectSetMenuViewModel.Factory(
setObjectIsArchived = setObjectIsArchived,
addToFavorite = addToFavorite,
removeFromFavorite = removeFromFavorite,
setObjectListIsArchived = setObjectIsArchived,
addBackLinkToObject = addBackLinkToObject,
duplicateObject = duplicateObject,
urlBuilder = urlBuilder,
@ -251,7 +248,8 @@ object ObjectSetMenuModule {
spaceManager = spaceManager,
deepLinkResolver = deepLinkResolver,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
payloadDelegator = payloadDelegator
payloadDelegator = payloadDelegator,
setObjectListIsFavorite = setObjectListIsFavorite
)
@JvmStatic
@ -298,6 +296,14 @@ object ObjectSetMenuModule {
@PerDialog
fun provideDeeplinkResolver() : DeepLinkResolver = DefaultDeepLinkResolver
@JvmStatic
@Provides
@PerDialog
fun provideFavoriteUseCase(
repo: BlockRepository,
dispatchers: AppCoroutineDispatchers
): SetObjectListIsFavorite = SetObjectListIsFavorite(repo = repo, dispatchers = dispatchers)
@JvmStatic
private fun createMenuOptionsProvider(
state: StateFlow<ObjectState>,

View file

@ -21,7 +21,6 @@ import com.anytypeio.anytype.domain.block.interactor.UpdateText
import com.anytypeio.anytype.domain.block.interactor.sets.GetObjectTypes
import com.anytypeio.anytype.domain.block.repo.BlockRepository
import com.anytypeio.anytype.domain.collections.AddObjectToCollection
import com.anytypeio.anytype.domain.config.ConfigStorage
import com.anytypeio.anytype.domain.config.UserSettingsRepository
import com.anytypeio.anytype.domain.cover.SetDocCoverImage
import com.anytypeio.anytype.domain.dataview.interactor.AddDataViewViewer
@ -45,7 +44,6 @@ import com.anytypeio.anytype.domain.`object`.DuplicateObjects
import com.anytypeio.anytype.domain.`object`.UpdateDetail
import com.anytypeio.anytype.domain.objects.DefaultObjectStore
import com.anytypeio.anytype.domain.objects.ObjectStore
import com.anytypeio.anytype.domain.objects.SetObjectIsArchived
import com.anytypeio.anytype.domain.objects.SetObjectListIsArchived
import com.anytypeio.anytype.domain.objects.StoreOfObjectTypes
import com.anytypeio.anytype.domain.objects.StoreOfRelations
@ -465,15 +463,6 @@ object ObjectSetModule {
repository: BlockRepository
): UpdateDetail = UpdateDetail(repository)
@JvmStatic
@Provides
@PerScreen
fun provideArchiveDocumentUseCase(
repo: BlockRepository
): SetObjectIsArchived = SetObjectIsArchived(
repo = repo
)
@JvmStatic
@Provides
@PerScreen

View file

@ -56,11 +56,6 @@ class BlockDataRepository(
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,
id: String
) = remote.openDashboard(id = id, contextId = contextId)
override suspend fun openObjectPreview(id: Id): Result<Payload> = try {
Result.Success(remote.openObjectPreview(id))
} catch (e: AnytypeNeedsUpgradeException) {
@ -511,21 +506,11 @@ class BlockDataRepository(
relations: List<Id>
): Payload = remote.removeFromFeaturedRelations(ctx, relations)
override suspend fun setObjectIsFavorite(
ctx: Id,
isFavorite: Boolean
): Payload = remote.setObjectIsFavorite(ctx = ctx, isFavorite = isFavorite)
override suspend fun setObjectListIsFavorite(
objectIds: List<Id>,
isFavorite: Boolean
) = remote.setObjectListIsFavorite(objectIds, isFavorite)
override suspend fun setObjectIsArchived(
ctx: Id,
isArchived: Boolean
) = remote.setObjectIsArchived(ctx = ctx, isArchived = isArchived)
override suspend fun setObjectListIsArchived(
targets: List<Id>,
isArchived: Boolean

View file

@ -70,7 +70,6 @@ interface BlockRemote {
suspend fun openObjectSet(id: String): Payload
suspend fun openObjectPreview(id: Id): Payload
suspend fun closePage(id: String)
suspend fun openDashboard(contextId: String, id: String): Payload
suspend fun closeDashboard(id: String)
suspend fun setDocumentEmojiIcon(command: Command.SetDocumentEmojiIcon): Payload
suspend fun setDocumentImageIcon(command: Command.SetDocumentImageIcon): Payload
@ -217,11 +216,7 @@ interface BlockRemote {
suspend fun addToFeaturedRelations(ctx: Id, relations: List<Id>): Payload
suspend fun removeFromFeaturedRelations(ctx: Id, relations: List<Id>): Payload
suspend fun setObjectIsFavorite(ctx: Id, isFavorite: Boolean): Payload
suspend fun setObjectListIsFavorite(objectIds: List<Id>, isFavorite: Boolean)
suspend fun setObjectIsArchived(ctx: Id, isArchived: Boolean)
suspend fun setObjectListIsArchived(targets: List<Id>, isArchived: Boolean)
suspend fun deleteObjects(targets: List<Id>)

View file

@ -115,7 +115,6 @@ interface BlockRepository {
suspend fun openObjectSet(id: String): Result<Payload>
suspend fun closePage(id: String)
suspend fun openDashboard(contextId: String, id: String): Payload
suspend fun closeDashboard(id: String)
/**
@ -265,9 +264,7 @@ interface BlockRepository {
suspend fun addToFeaturedRelations(ctx: Id, relations: List<Id>): Payload
suspend fun removeFromFeaturedRelations(ctx: Id, relations: List<Id>): Payload
suspend fun setObjectIsFavorite(ctx: Id, isFavorite: Boolean): Payload
suspend fun setObjectListIsFavorite(objectIds: List<Id>, isFavorite: Boolean)
suspend fun setObjectIsArchived(ctx: Id, isArchived: Boolean)
suspend fun setObjectListIsArchived(targets: List<Id>, isArchived: Boolean)
suspend fun deleteObjects(targets: List<Id>)

View file

@ -1,24 +0,0 @@
package com.anytypeio.anytype.domain.dashboard.interactor
import com.anytypeio.anytype.core_models.Id
import com.anytypeio.anytype.core_models.Payload
import com.anytypeio.anytype.domain.base.BaseUseCase
import com.anytypeio.anytype.domain.block.repo.BlockRepository
/**
* Use-case for adding an object to favorite list.
*/
@Deprecated("Use-case for adding an object to favorite list.")
class AddToFavorite(
private val repo: BlockRepository
) : BaseUseCase<Payload, AddToFavorite.Params>() {
override suspend fun run(params: Params) = safe {
repo.setObjectIsFavorite(ctx = params.target, isFavorite = true)
}
/**
* @property [target] id of the object we need to add to favorites.
*/
class Params(val target: Id)
}

View file

@ -1,18 +0,0 @@
package com.anytypeio.anytype.domain.dashboard.interactor
import com.anytypeio.anytype.core_models.Id
import com.anytypeio.anytype.core_models.Payload
import com.anytypeio.anytype.domain.base.BaseUseCase
import com.anytypeio.anytype.domain.block.repo.BlockRepository
@Deprecated("Use-case for adding an object to favorite list.")
class RemoveFromFavorite(
private val repo: BlockRepository
) : BaseUseCase<Payload, RemoveFromFavorite.Params>() {
override suspend fun run(params: Params) = safe {
repo.setObjectIsFavorite(ctx = params.target, isFavorite = false)
}
class Params(val target: Id)
}

View file

@ -7,7 +7,7 @@ import com.anytypeio.anytype.domain.block.repo.BlockRepository
/**
* Use-case for deleting objects.
* @see SetObjectIsArchived
* @see SetObjectListIsArchived
*/
class DeleteObjects(
private val repo: BlockRepository,

View file

@ -1,35 +0,0 @@
package com.anytypeio.anytype.domain.objects
import com.anytypeio.anytype.core_models.Id
import com.anytypeio.anytype.core_models.Payload
import com.anytypeio.anytype.domain.base.BaseUseCase
import com.anytypeio.anytype.domain.block.repo.BlockRepository
/**
* Use-case for archiving (or restoring from archive) an object.
*/
@Deprecated(
"Use SetObjectListIsArchived instead",
replaceWith = ReplaceWith("SetObjectListIsArchived")
)
class SetObjectIsArchived(
private val repo: BlockRepository
) : BaseUseCase<Unit, SetObjectIsArchived.Params>() {
override suspend fun run(params: Params) = safe {
repo.setObjectIsArchived(
ctx = params.context,
isArchived = params.isArchived
)
}
/**
* Params for archiving a document
* @property context id of the context
*/
data class Params(
val context: Id,
val isArchived: Boolean
)
}

View file

@ -44,11 +44,6 @@ class BlockMiddleware(
private val middleware: Middleware
) : BlockRemote {
override suspend fun openDashboard(
contextId: String,
id: String
): Payload = middleware.dashboardOpen(contextId, id)
override suspend fun closeDashboard(id: String) {
middleware.objectClose(id)
}
@ -477,21 +472,11 @@ class BlockMiddleware(
relations: List<Id>
): Payload = middleware.objectRelationRemoveFeatured(ctx, relations)
override suspend fun setObjectIsFavorite(
ctx: Id,
isFavorite: Boolean
): Payload = middleware.objectSetIsFavorite(ctx = ctx, isFavorite = isFavorite)
override suspend fun setObjectListIsFavorite(
objectIds: List<Id>,
isFavorite: Boolean
) = middleware.objectListSetIsFavorite(objectIds, isFavorite)
override suspend fun setObjectIsArchived(
ctx: Id,
isArchived: Boolean
) = middleware.objectSetIsArchived(ctx = ctx, isArchived = isArchived)
override suspend fun deleteObjects(targets: List<Id>) = middleware.objectListDelete(
targets = targets
)

View file

@ -742,21 +742,6 @@ class Middleware @Inject constructor(
private val coverIdKey = "coverId"
private val coverTypeKey = "coverType"
@Deprecated("Should deleted. Use objectOpen()")
@Throws(Exception::class)
fun dashboardOpen(contextId: String, id: String): Payload {
val request: Rpc.Object.Open.Request = Rpc.Object.Open.Request(
contextId = contextId,
objectId = id
)
logRequestIfDebug(request)
val (response, time) = measureTimedValue { service.objectOpen(request) }
logResponseIfDebug(response, time)
return response.objectView?.toPayload()
?: throw IllegalStateException("Object view was null")
}
@Throws(Exception::class)
fun debugExportLocalStore(path: String): String {
val request = Rpc.Debug.ExportLocalstore.Request(
@ -1488,43 +1473,6 @@ class Middleware @Inject constructor(
return response.event.toPayload()
}
@Deprecated(
"Use objectListSetIsArchived instead",
replaceWith = ReplaceWith("objectListSetIsArchived")
)
@Throws(Exception::class)
fun objectSetIsArchived(
ctx: Id,
isArchived: Boolean
) {
val request = Rpc.Object.SetIsArchived.Request(
contextId = ctx,
isArchived = isArchived
)
logRequestIfDebug(request)
val (response, time) = measureTimedValue { service.objectSetIsArchived(request) }
logResponseIfDebug(response, time)
}
@Deprecated(
"Use objectListSetIsFavorite instead",
replaceWith = ReplaceWith("objectListSetIsFavorite")
)
@Throws(Exception::class)
fun objectSetIsFavorite(
ctx: Id,
isFavorite: Boolean
): Payload {
val request = Rpc.Object.SetIsFavorite.Request(
contextId = ctx,
isFavorite = isFavorite
)
logRequestIfDebug(request)
val (response, time) = measureTimedValue { service.objectSetIsFavorite(request) }
logResponseIfDebug(response, time)
return response.event.toPayload()
}
@Throws(Exception::class)
fun objectListSetIsFavorite(
objectIds: List<Id>,

View file

@ -114,15 +114,9 @@ interface MiddlewareService {
@Throws(Exception::class)
fun objectSetLayout(request: Rpc.Object.SetLayout.Request): Rpc.Object.SetLayout.Response
@Throws(Exception::class)
fun objectSetIsFavorite(request: Rpc.Object.SetIsFavorite.Request): Rpc.Object.SetIsFavorite.Response
@Throws(Exception::class)
fun objectListSetIsFavorite(request: Rpc.Object.ListSetIsFavorite.Request): Rpc.Object.ListSetIsFavorite.Response
@Throws(Exception::class)
fun objectSetIsArchived(request: Rpc.Object.SetIsArchived.Request): Rpc.Object.SetIsArchived.Response
@Throws(Exception::class)
fun objectListSetIsArchived(request: Rpc.Object.ListSetIsArchived.Request): Rpc.Object.ListSetIsArchived.Response

View file

@ -1039,32 +1039,6 @@ class MiddlewareServiceImplementation @Inject constructor(
}
}
override fun objectSetIsArchived(request: Rpc.Object.SetIsArchived.Request): Rpc.Object.SetIsArchived.Response {
val encoded = Service.objectSetIsArchived(
Rpc.Object.SetIsArchived.Request.ADAPTER.encode(request)
)
val response = Rpc.Object.SetIsArchived.Response.ADAPTER.decode(encoded)
val error = response.error
if (error != null && error.code != Rpc.Object.SetIsArchived.Response.Error.Code.NULL) {
throw Exception(error.description)
} else {
return response
}
}
override fun objectSetIsFavorite(request: Rpc.Object.SetIsFavorite.Request): Rpc.Object.SetIsFavorite.Response {
val encoded = Service.objectSetIsFavorite(
Rpc.Object.SetIsFavorite.Request.ADAPTER.encode(request)
)
val response = Rpc.Object.SetIsFavorite.Response.ADAPTER.decode(encoded)
val error = response.error
if (error != null && error.code != Rpc.Object.SetIsFavorite.Response.Error.Code.NULL) {
throw Exception(error.description)
} else {
return response
}
}
override fun objectListSetIsFavorite(request: Rpc.Object.ListSetIsFavorite.Request): Rpc.Object.ListSetIsFavorite.Response {
val encoded = Service.objectListSetIsFavorite(
Rpc.Object.ListSetIsFavorite.Request.ADAPTER.encode(request)

View file

@ -109,11 +109,11 @@ class BillingClientLifecycle(
querySubscriptionPurchases()
}
BillingClient.BillingResponseCode.BILLING_UNAVAILABLE -> {
Timber.e("onBillingSetupFinished: BILLING_UNAVAILABLE")
Timber.w("onBillingSetupFinished: BILLING_UNAVAILABLE")
_builderSubProductWithProductDetails.value = BillingClientState.NotAvailable
}
else -> {
Timber.e("onBillingSetupFinished: BillingResponse $responseCode")
Timber.w("onBillingSetupFinished: BillingResponse $responseCode")
_builderSubProductWithProductDetails.value =
BillingClientState.Error("BillingResponse $responseCode")
}

View file

@ -1584,7 +1584,7 @@ class DefaultBlockViewRenderer @Inject constructor(
background = block.parseThemeBackgroundColor(),
color = block.textColor()
).also {
Timber.e("Unexpected layout for title: $layout")
Timber.w("Unexpected layout for title: $layout")
}
}
}

View file

@ -17,13 +17,12 @@ import com.anytypeio.anytype.core_models.restrictions.ObjectRestriction
import com.anytypeio.anytype.domain.base.fold
import com.anytypeio.anytype.domain.block.interactor.UpdateFields
import com.anytypeio.anytype.domain.collections.AddObjectToCollection
import com.anytypeio.anytype.domain.dashboard.interactor.AddToFavorite
import com.anytypeio.anytype.domain.dashboard.interactor.RemoveFromFavorite
import com.anytypeio.anytype.domain.dashboard.interactor.SetObjectListIsFavorite
import com.anytypeio.anytype.domain.misc.DeepLinkResolver
import com.anytypeio.anytype.domain.misc.UrlBuilder
import com.anytypeio.anytype.domain.`object`.DuplicateObject
import com.anytypeio.anytype.domain.`object`.SetObjectDetails
import com.anytypeio.anytype.domain.objects.SetObjectIsArchived
import com.anytypeio.anytype.domain.objects.SetObjectListIsArchived
import com.anytypeio.anytype.domain.page.AddBackLinkToObject
import com.anytypeio.anytype.domain.templates.CreateTemplateFromObject
import com.anytypeio.anytype.domain.widgets.CreateWidget
@ -48,9 +47,6 @@ import kotlinx.coroutines.launch
import timber.log.Timber
class ObjectMenuViewModel(
setObjectIsArchived: SetObjectIsArchived,
addToFavorite: AddToFavorite,
removeFromFavorite: RemoveFromFavorite,
addBackLinkToObject: AddBackLinkToObject,
delegator: Delegator<Action>,
urlBuilder: UrlBuilder,
@ -69,11 +65,11 @@ class ObjectMenuViewModel(
private val debugGoroutinesShareDownloader: DebugGoroutinesShareDownloader,
private val spaceManager: SpaceManager,
private val deepLinkResolver: DeepLinkResolver,
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
private val setObjectListIsFavorite: SetObjectListIsFavorite,
private val setObjectIsArchived: SetObjectListIsArchived
) : ObjectMenuViewModelBase(
setObjectIsArchived = setObjectIsArchived,
addToFavorite = addToFavorite,
removeFromFavorite = removeFromFavorite,
addBackLinkToObject = addBackLinkToObject,
duplicateObject = duplicateObject,
delegator = delegator,
@ -86,7 +82,8 @@ class ObjectMenuViewModel(
createWidget = createWidget,
spaceManager = spaceManager,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
payloadDelegator = payloadDelegator
payloadDelegator = payloadDelegator,
setObjectListIsFavorite = setObjectListIsFavorite
) {
init {
@ -458,11 +455,8 @@ class ObjectMenuViewModel(
@Suppress("UNCHECKED_CAST")
class Factory @Inject constructor(
private val setObjectIsArchived: SetObjectIsArchived,
private val duplicateObject: DuplicateObject,
private val debugTreeShareDownloader: DebugTreeShareDownloader,
private val addToFavorite: AddToFavorite,
private val removeFromFavorite: RemoveFromFavorite,
private val addBackLinkToObject: AddBackLinkToObject,
private val urlBuilder: UrlBuilder,
private val storage: Editor.Storage,
@ -479,15 +473,15 @@ class ObjectMenuViewModel(
private val spaceManager: SpaceManager,
private val deepLinkResolver: DeepLinkResolver,
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
private val payloadDelegator: PayloadDelegator
private val payloadDelegator: PayloadDelegator,
private val setObjectListIsFavorite: SetObjectListIsFavorite,
private val setObjectIsArchived: SetObjectListIsArchived
) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
return ObjectMenuViewModel(
setObjectIsArchived = setObjectIsArchived,
duplicateObject = duplicateObject,
debugTreeShareDownloader = debugTreeShareDownloader,
addToFavorite = addToFavorite,
removeFromFavorite = removeFromFavorite,
addBackLinkToObject = addBackLinkToObject,
urlBuilder = urlBuilder,
storage = storage,
@ -504,7 +498,8 @@ class ObjectMenuViewModel(
spaceManager = spaceManager,
deepLinkResolver = deepLinkResolver,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
payloadDelegator = payloadDelegator
payloadDelegator = payloadDelegator,
setObjectListIsFavorite = setObjectListIsFavorite
) as T
}
}

View file

@ -14,11 +14,10 @@ import com.anytypeio.anytype.core_models.isDataView
import com.anytypeio.anytype.core_models.primitives.SpaceId
import com.anytypeio.anytype.domain.base.fold
import com.anytypeio.anytype.domain.collections.AddObjectToCollection
import com.anytypeio.anytype.domain.dashboard.interactor.AddToFavorite
import com.anytypeio.anytype.domain.dashboard.interactor.RemoveFromFavorite
import com.anytypeio.anytype.domain.dashboard.interactor.SetObjectListIsFavorite
import com.anytypeio.anytype.domain.misc.UrlBuilder
import com.anytypeio.anytype.domain.`object`.DuplicateObject
import com.anytypeio.anytype.domain.objects.SetObjectIsArchived
import com.anytypeio.anytype.domain.objects.SetObjectListIsArchived
import com.anytypeio.anytype.domain.page.AddBackLinkToObject
import com.anytypeio.anytype.domain.widgets.CreateWidget
import com.anytypeio.anytype.domain.workspace.SpaceManager
@ -48,9 +47,6 @@ import kotlinx.coroutines.launch
import timber.log.Timber
abstract class ObjectMenuViewModelBase(
private val setObjectIsArchived: SetObjectIsArchived,
private val addToFavorite: AddToFavorite,
private val removeFromFavorite: RemoveFromFavorite,
private val addBackLinkToObject: AddBackLinkToObject,
protected val delegator: Delegator<Action>,
protected val urlBuilder: UrlBuilder,
@ -63,7 +59,9 @@ abstract class ObjectMenuViewModelBase(
private val createWidget: CreateWidget,
private val spaceManager: SpaceManager,
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
private val payloadDelegator: PayloadDelegator
private val payloadDelegator: PayloadDelegator,
private val setObjectListIsFavorite: SetObjectListIsFavorite,
private val setObjectIsArchived: SetObjectListIsArchived
) : BaseViewModel(), AnalyticSpaceHelperDelegate by analyticSpaceHelperDelegate {
protected val jobs = mutableListOf<Job>()
@ -130,19 +128,21 @@ abstract class ObjectMenuViewModelBase(
protected fun proceedWithRemovingFromFavorites(ctx: Id) {
Timber.d("proceedWithRemovingFromFavorites, cts:[$ctx]")
jobs += viewModelScope.launch {
removeFromFavorite(
RemoveFromFavorite.Params(
target = ctx
)
).process(
failure = { Timber.e(it, "Error while removing from favorite.") },
success = {
viewModelScope.launch {
val params = SetObjectListIsFavorite.Params(
objectIds = listOf(ctx),
isFavorite = false
)
setObjectListIsFavorite.async(params).fold(
onSuccess = {
sendAnalyticsRemoveFromFavoritesEvent(analytics)
dispatcher.send(it)
_toasts.emit(REMOVE_FROM_FAVORITE_SUCCESS_MSG).also {
isDismissed.value = true
}
},
onFailure = {
Timber.e(it, "Error while removing from favorite.")
_toasts.emit(SOMETHING_WENT_WRONG_MSG)
}
)
}
@ -150,19 +150,21 @@ abstract class ObjectMenuViewModelBase(
protected fun proceedWithAddingToFavorites(ctx: Id) {
Timber.d("proceedWithAddingToFavorites, ctx:[$ctx]")
jobs += viewModelScope.launch {
addToFavorite(
AddToFavorite.Params(
target = ctx
)
).process(
failure = { Timber.e(it, "Error while adding to favorites.") },
success = {
viewModelScope.launch {
val params = SetObjectListIsFavorite.Params(
objectIds = listOf(ctx),
isFavorite = true
)
setObjectListIsFavorite.async(params).fold(
onSuccess = {
sendAnalyticsAddToFavoritesEvent(analytics)
dispatcher.send(it)
_toasts.emit(ADD_TO_FAVORITE_SUCCESS_MSG).also {
isDismissed.value = true
}
},
onFailure = {
Timber.e(it, "Error while removing from favorite.")
_toasts.emit(SOMETHING_WENT_WRONG_MSG)
}
)
}
@ -170,18 +172,13 @@ abstract class ObjectMenuViewModelBase(
fun proceedWithUpdatingArchivedStatus(ctx: Id, isArchived: Boolean) {
Timber.d("proceedWithUpdatingArchivedStatus, cts:[$ctx], isArchived:[$isArchived]")
jobs += viewModelScope.launch {
setObjectIsArchived(
SetObjectIsArchived.Params(
context = ctx,
isArchived = isArchived
)
).process(
failure = {
Timber.e(it, MOVE_OBJECT_TO_BIN_ERR_MSG)
_toasts.emit(MOVE_OBJECT_TO_BIN_ERR_MSG)
},
success = {
viewModelScope.launch {
val params = SetObjectListIsArchived.Params(
targets = listOf(ctx),
isArchived = isArchived
)
setObjectIsArchived.async(params).fold(
onSuccess = {
if (isArchived) {
sendAnalyticsMoveToBinEvent(analytics)
_toasts.emit(MOVE_OBJECT_TO_BIN_SUCCESS_MSG)
@ -189,6 +186,10 @@ abstract class ObjectMenuViewModelBase(
_toasts.emit(RESTORE_OBJECT_SUCCESS_MSG)
}
isObjectArchived.value = true
},
onFailure = {
Timber.e(it, MOVE_OBJECT_TO_BIN_ERR_MSG)
_toasts.emit(MOVE_OBJECT_TO_BIN_ERR_MSG)
}
)
}

View file

@ -10,12 +10,11 @@ import com.anytypeio.anytype.core_models.Payload
import com.anytypeio.anytype.core_models.primitives.SpaceId
import com.anytypeio.anytype.core_models.restrictions.ObjectRestriction
import com.anytypeio.anytype.domain.collections.AddObjectToCollection
import com.anytypeio.anytype.domain.dashboard.interactor.AddToFavorite
import com.anytypeio.anytype.domain.dashboard.interactor.RemoveFromFavorite
import com.anytypeio.anytype.domain.dashboard.interactor.SetObjectListIsFavorite
import com.anytypeio.anytype.domain.misc.DeepLinkResolver
import com.anytypeio.anytype.domain.misc.UrlBuilder
import com.anytypeio.anytype.domain.`object`.DuplicateObject
import com.anytypeio.anytype.domain.objects.SetObjectIsArchived
import com.anytypeio.anytype.domain.objects.SetObjectListIsArchived
import com.anytypeio.anytype.domain.page.AddBackLinkToObject
import com.anytypeio.anytype.domain.widgets.CreateWidget
import com.anytypeio.anytype.domain.workspace.SpaceManager
@ -34,9 +33,7 @@ import kotlinx.coroutines.launch
import timber.log.Timber
class ObjectSetMenuViewModel(
setObjectIsArchived: SetObjectIsArchived,
addToFavorite: AddToFavorite,
removeFromFavorite: RemoveFromFavorite,
setObjectIsArchived: SetObjectListIsArchived,
addBackLinkToObject: AddBackLinkToObject,
duplicateObject: DuplicateObject,
delegator: Delegator<Action>,
@ -51,11 +48,10 @@ class ObjectSetMenuViewModel(
private val addObjectToCollection: AddObjectToCollection,
private val debugGoroutinesShareDownloader: DebugGoroutinesShareDownloader,
private val deepLinkResolver: DeepLinkResolver,
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
setObjectListIsFavorite: SetObjectListIsFavorite
) : ObjectMenuViewModelBase(
setObjectIsArchived = setObjectIsArchived,
addToFavorite = addToFavorite,
removeFromFavorite = removeFromFavorite,
addBackLinkToObject = addBackLinkToObject,
duplicateObject = duplicateObject,
delegator = delegator,
@ -68,7 +64,8 @@ class ObjectSetMenuViewModel(
createWidget = createWidget,
spaceManager = spaceManager,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
payloadDelegator = payloadDelegator
payloadDelegator = payloadDelegator,
setObjectListIsFavorite = setObjectListIsFavorite
) {
init {
@ -77,9 +74,6 @@ class ObjectSetMenuViewModel(
@Suppress("UNCHECKED_CAST")
class Factory @Inject constructor(
private val setObjectIsArchived: SetObjectIsArchived,
private val addToFavorite: AddToFavorite,
private val removeFromFavorite: RemoveFromFavorite,
private val addBackLinkToObject: AddBackLinkToObject,
private val duplicateObject: DuplicateObject,
private val delegator: Delegator<Action>,
@ -94,13 +88,13 @@ class ObjectSetMenuViewModel(
private val spaceManager: SpaceManager,
private val deepLinkResolver: DeepLinkResolver,
private val analyticSpaceHelperDelegate: AnalyticSpaceHelperDelegate,
private val payloadDelegator: PayloadDelegator
private val payloadDelegator: PayloadDelegator,
private val setObjectListIsFavorite: SetObjectListIsFavorite,
private val setObjectListIsArchived: SetObjectListIsArchived
) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
return ObjectSetMenuViewModel(
setObjectIsArchived = setObjectIsArchived,
addToFavorite = addToFavorite,
removeFromFavorite = removeFromFavorite,
setObjectIsArchived = setObjectListIsArchived,
addBackLinkToObject = addBackLinkToObject,
duplicateObject = duplicateObject,
delegator = delegator,
@ -115,7 +109,8 @@ class ObjectSetMenuViewModel(
spaceManager = spaceManager,
deepLinkResolver = deepLinkResolver,
analyticSpaceHelperDelegate = analyticSpaceHelperDelegate,
payloadDelegator = payloadDelegator
payloadDelegator = payloadDelegator,
setObjectListIsFavorite = setObjectListIsFavorite
) as T
}
}