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

DROID-2538 fixes

This commit is contained in:
Evgenii Kozlov 2024-06-13 23:48:15 +02:00
parent 468b09272c
commit b2eeb5e5d5
11 changed files with 57 additions and 18 deletions

View file

@ -117,6 +117,7 @@ import com.anytypeio.anytype.presentation.editor.render.DefaultBlockViewRenderer
import com.anytypeio.anytype.presentation.editor.selection.SelectionStateHolder
import com.anytypeio.anytype.presentation.editor.toggle.ToggleStateHolder
import com.anytypeio.anytype.presentation.objects.LockedStateProvider
import com.anytypeio.anytype.presentation.objects.ObjectRestrictionProvider
import com.anytypeio.anytype.presentation.relations.providers.DefaultObjectRelationProvider
import com.anytypeio.anytype.presentation.relations.providers.DefaultObjectValueProvider
import com.anytypeio.anytype.presentation.relations.providers.ObjectDetailProvider
@ -218,6 +219,11 @@ object EditorSessionModule {
@PerScreen
fun provideStorage(): Editor.Storage = Editor.Storage()
@JvmStatic
@Provides
@PerScreen
fun provideRestriction(storage: Editor.Storage): ObjectRestrictionProvider = storage
@JvmStatic
@Provides
@PerScreen

View file

@ -12,6 +12,7 @@ import com.anytypeio.anytype.domain.relations.AddToFeaturedRelations
import com.anytypeio.anytype.domain.relations.DeleteRelationFromObject
import com.anytypeio.anytype.domain.relations.RemoveFromFeaturedRelations
import com.anytypeio.anytype.presentation.objects.LockedStateProvider
import com.anytypeio.anytype.presentation.objects.ObjectRestrictionProvider
import com.anytypeio.anytype.presentation.relations.ObjectRelationListViewModelFactory
import com.anytypeio.anytype.presentation.relations.providers.RelationListProvider
import com.anytypeio.anytype.presentation.util.Dispatcher
@ -49,7 +50,8 @@ object ObjectRelationListModule {
deleteRelationFromObject: DeleteRelationFromObject,
analytics: Analytics,
storeOfRelations: StoreOfRelations,
addRelationToObject: AddRelationToObject
addRelationToObject: AddRelationToObject,
restrictions: ObjectRestrictionProvider
): ObjectRelationListViewModelFactory {
return ObjectRelationListViewModelFactory(
lockedStateProvider = lockedStateProvider,
@ -62,7 +64,8 @@ object ObjectRelationListModule {
deleteRelationFromObject = deleteRelationFromObject,
analytics = analytics,
storeOfRelations = storeOfRelations,
addRelationToObject = addRelationToObject
addRelationToObject = addRelationToObject,
restrictions = restrictions
)
}

View file

@ -70,8 +70,10 @@ import com.anytypeio.anytype.domain.workspace.SpaceManager
import com.anytypeio.anytype.presentation.analytics.AnalyticSpaceHelperDelegate
import com.anytypeio.anytype.presentation.common.Action
import com.anytypeio.anytype.presentation.common.Delegator
import com.anytypeio.anytype.presentation.editor.Editor
import com.anytypeio.anytype.presentation.editor.cover.CoverImageHashProvider
import com.anytypeio.anytype.presentation.objects.LockedStateProvider
import com.anytypeio.anytype.presentation.objects.ObjectRestrictionProvider
import com.anytypeio.anytype.presentation.relations.providers.DataViewObjectRelationProvider
import com.anytypeio.anytype.presentation.relations.providers.DataViewObjectValueProvider
import com.anytypeio.anytype.presentation.relations.providers.ObjectDetailProvider
@ -406,6 +408,11 @@ object ObjectSetModule {
@PerScreen
fun provideObjectStateReducer(): ObjectStateReducer = DefaultObjectStateReducer()
@JvmStatic
@Provides
@PerScreen
fun provideRestriction(reducer: ObjectStateReducer): ObjectRestrictionProvider = reducer
@JvmStatic
@Provides
@PerScreen

View file

@ -3,6 +3,7 @@ package com.anytypeio.anytype.presentation.editor
import com.anytypeio.anytype.core_models.Block
import com.anytypeio.anytype.core_models.Document
import com.anytypeio.anytype.core_models.Id
import com.anytypeio.anytype.core_models.restrictions.ObjectRestriction
import com.anytypeio.anytype.domain.editor.Editor
import com.anytypeio.anytype.domain.editor.Editor.Focus
import com.anytypeio.anytype.presentation.editor.editor.Proxy
@ -10,6 +11,7 @@ import com.anytypeio.anytype.presentation.editor.editor.Store
import com.anytypeio.anytype.presentation.editor.editor.actions.ActionItemType
import com.anytypeio.anytype.presentation.editor.editor.model.BlockView
import com.anytypeio.anytype.presentation.editor.selection.SelectionStateHolder
import com.anytypeio.anytype.presentation.objects.ObjectRestrictionProvider
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
@ -95,7 +97,7 @@ interface Editor {
) : Mode()
}
class Storage {
class Storage : ObjectRestrictionProvider {
val document: DocumentProvider = DocumentProvider.Default()
val views: Store<List<BlockView>> = Store.Screen()
val focus: Store<Focus> = Store.Focus()
@ -106,6 +108,10 @@ interface Editor {
val textSelection: Store<Editor.TextSelection> = Store.TextSelection()
val objectRestrictions: Store.ObjectRestrictions = Store.ObjectRestrictions()
val relationLinks: Store.RelationLinks = Store.RelationLinks()
override fun provide(): List<ObjectRestriction> {
return objectRestrictions.current()
}
}
class Proxer(

View file

@ -1562,8 +1562,7 @@ class EditorViewModel(
isArchived = false,
isFavorite = false,
isLocked = false,
isTemplate = true,
restrictions = wrapper.restrictions
isTemplate = true
)
)
}
@ -1575,8 +1574,7 @@ class EditorViewModel(
isArchived = details[context]?.isArchived ?: false,
isFavorite = details[context]?.isFavorite ?: false,
isLocked = mode == EditorMode.Locked,
isTemplate = isObjectTemplate(),
restrictions = wrapper.restrictions
isTemplate = isObjectTemplate()
)
)
}

View file

@ -64,8 +64,7 @@ sealed class Command {
val isArchived: Boolean,
val isFavorite: Boolean,
val isLocked: Boolean,
val isTemplate: Boolean,
val restrictions: List<ObjectRestriction>
val isTemplate: Boolean
) : Command()
data class OpenCoverGallery(val ctx: Id) : Command()

View file

@ -0,0 +1,7 @@
package com.anytypeio.anytype.presentation.objects
import com.anytypeio.anytype.core_models.restrictions.ObjectRestriction
interface ObjectRestrictionProvider {
fun provide() : List<ObjectRestriction>
}

View file

@ -12,6 +12,7 @@ import com.anytypeio.anytype.domain.relations.AddToFeaturedRelations
import com.anytypeio.anytype.domain.relations.DeleteRelationFromObject
import com.anytypeio.anytype.domain.relations.RemoveFromFeaturedRelations
import com.anytypeio.anytype.presentation.objects.LockedStateProvider
import com.anytypeio.anytype.presentation.objects.ObjectRestrictionProvider
import com.anytypeio.anytype.presentation.relations.providers.RelationListProvider
import com.anytypeio.anytype.presentation.util.Dispatcher
@ -26,7 +27,8 @@ class ObjectRelationListViewModelFactory(
private val deleteRelationFromObject: DeleteRelationFromObject,
private val analytics: Analytics,
private val storeOfRelations: StoreOfRelations,
private val addRelationToObject: AddRelationToObject
private val addRelationToObject: AddRelationToObject,
private val restrictions: ObjectRestrictionProvider
) : ViewModelProvider.Factory {
@Suppress("UNCHECKED_CAST")
@ -42,7 +44,8 @@ class ObjectRelationListViewModelFactory(
deleteRelationFromObject = deleteRelationFromObject,
analytics = analytics,
storeOfRelations = storeOfRelations,
addRelationToObject = addRelationToObject
addRelationToObject = addRelationToObject,
restrictions = restrictions
) as T
}
}

View file

@ -27,6 +27,7 @@ import com.anytypeio.anytype.presentation.common.BaseViewModel
import com.anytypeio.anytype.presentation.extension.sendAnalyticsRelationDeleteEvent
import com.anytypeio.anytype.presentation.extension.sendAnalyticsRelationValueEvent
import com.anytypeio.anytype.presentation.objects.LockedStateProvider
import com.anytypeio.anytype.presentation.objects.ObjectRestrictionProvider
import com.anytypeio.anytype.presentation.objects.getProperType
import com.anytypeio.anytype.presentation.relations.model.RelationOperationError
import com.anytypeio.anytype.presentation.relations.providers.RelationListProvider
@ -41,6 +42,7 @@ import timber.log.Timber
class RelationListViewModel(
private val relationListProvider: RelationListProvider,
private val restrictions: ObjectRestrictionProvider,
private val lockedStateProvider: LockedStateProvider,
private val urlBuilder: UrlBuilder,
private val dispatcher: Dispatcher<Payload>,

View file

@ -1,10 +1,12 @@
package com.anytypeio.anytype.presentation.sets.state
import com.anytypeio.anytype.core_models.Event
import com.anytypeio.anytype.core_models.restrictions.ObjectRestriction
import com.anytypeio.anytype.presentation.objects.ObjectRestrictionProvider
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharedFlow
interface ObjectStateReducer {
interface ObjectStateReducer : ObjectRestrictionProvider {
val state: MutableStateFlow<ObjectState>
val effects: SharedFlow<List<StateSideEffect>>
@ -13,4 +15,13 @@ interface ObjectStateReducer {
suspend fun dispatch(events: List<Event>)
fun reduce(state: ObjectState, events: List<Event>): DefaultObjectStateReducer.Transformation
fun clear()
override fun provide(): List<ObjectRestriction> {
return when(val value = state.value) {
is ObjectState.DataView.Collection -> value.objectRestrictions
is ObjectState.DataView.Set -> value.objectRestrictions
ObjectState.ErrorLayout -> emptyList()
ObjectState.Init -> emptyList()
}
}
}

View file

@ -101,8 +101,7 @@ class EditorMenuTest : EditorPresentationTestSetup() {
isLocked = false,
isTemplate = false,
space = defaultSpace,
ctx = root,
restrictions = emptyList()
ctx = root
)
}
}
@ -159,8 +158,7 @@ class EditorMenuTest : EditorPresentationTestSetup() {
isLocked = false,
isTemplate = false,
space = space,
ctx = root,
restrictions = emptyList()
ctx = root
)
}
}
@ -241,8 +239,7 @@ class EditorMenuTest : EditorPresentationTestSetup() {
isArchived = false,
isTemplate = false,
space = space,
ctx = root,
restrictions = emptyList()
ctx = root
)
}
}