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:
parent
468b09272c
commit
b2eeb5e5d5
11 changed files with 57 additions and 18 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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()
|
||||
)
|
||||
)
|
||||
}
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
package com.anytypeio.anytype.presentation.objects
|
||||
|
||||
import com.anytypeio.anytype.core_models.restrictions.ObjectRestriction
|
||||
|
||||
interface ObjectRestrictionProvider {
|
||||
fun provide() : List<ObjectRestriction>
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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>,
|
||||
|
|
|
@ -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()
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue