@@ -4,7 +4,6 @@ import android.content.Intent
44import android.content.res.ColorStateList
55import android.graphics.Color
66import android.net.Uri
7- import android.os.Build
87import android.os.Bundle
98import android.text.InputType
109import android.view.ContextThemeWrapper
@@ -48,7 +47,6 @@ import androidx.navigation.fragment.findNavController
4847import androidx.recyclerview.widget.DividerItemDecoration
4948import androidx.recyclerview.widget.RecyclerView
5049import coil3.load
51- import com.anytypeio.anytype.BuildConfig
5250import com.anytypeio.anytype.R
5351import com.anytypeio.anytype.core_models.Id
5452import com.anytypeio.anytype.core_models.Key
@@ -57,7 +55,6 @@ import com.anytypeio.anytype.core_models.TimeInMillis
5755import com.anytypeio.anytype.core_models.multiplayer.SpaceSyncAndP2PStatusState
5856import com.anytypeio.anytype.core_models.primitives.SpaceId
5957import com.anytypeio.anytype.core_ui.extensions.setEmojiOrNull
60- import com.anytypeio.anytype.core_utils.clipboard.copyPlainTextToClipboard
6158import com.anytypeio.anytype.core_ui.features.dataview.ViewerGridAdapter
6259import com.anytypeio.anytype.core_ui.features.dataview.ViewerGridHeaderAdapter
6360import com.anytypeio.anytype.core_ui.menu.ObjectHeaderContextMenu
@@ -80,6 +77,7 @@ import com.anytypeio.anytype.core_ui.widgets.dv.ViewersWidget
8077import com.anytypeio.anytype.core_ui.widgets.text.TextInputWidget
8178import com.anytypeio.anytype.core_ui.widgets.toolbar.DataViewInfo
8279import com.anytypeio.anytype.core_utils.OnSwipeListener
80+ import com.anytypeio.anytype.core_utils.clipboard.copyPlainTextToClipboard
8381import com.anytypeio.anytype.core_utils.ext.arg
8482import com.anytypeio.anytype.core_utils.ext.argOrNull
8583import com.anytypeio.anytype.core_utils.ext.argString
@@ -90,6 +88,7 @@ import com.anytypeio.anytype.core_utils.ext.hideKeyboard
9088import com.anytypeio.anytype.core_utils.ext.hideSoftInput
9189import com.anytypeio.anytype.core_utils.ext.invisible
9290import com.anytypeio.anytype.core_utils.ext.safeNavigate
91+ import com.anytypeio.anytype.core_utils.ext.smoothScrollToFirst
9392import com.anytypeio.anytype.core_utils.ext.startMarketPageOrWeb
9493import com.anytypeio.anytype.core_utils.ext.subscribe
9594import com.anytypeio.anytype.core_utils.ext.syncFocusWithImeVisibility
@@ -103,7 +102,7 @@ import com.anytypeio.anytype.di.common.componentManager
103102import com.anytypeio.anytype.di.feature.DefaultComponentParam
104103import com.anytypeio.anytype.presentation.editor.cover.CoverColor
105104import com.anytypeio.anytype.presentation.editor.cover.CoverGradient
106- import com.anytypeio.anytype.presentation.editor.editor.listener.ListenerType.Relation.*
105+ import com.anytypeio.anytype.presentation.editor.editor.listener.ListenerType.Relation.SetQuery
107106import com.anytypeio.anytype.presentation.relations.value.tagstatus.RelationContext
108107import com.anytypeio.anytype.presentation.sets.DataViewViewState
109108import com.anytypeio.anytype.presentation.sets.ObjectSetCommand
@@ -124,8 +123,8 @@ import com.anytypeio.anytype.ui.objects.creation.ObjectTypeSelectionFragment
124123import com.anytypeio.anytype.ui.objects.types.pickers.DataViewSelectSourceFragment
125124import com.anytypeio.anytype.ui.objects.types.pickers.EmptyDataViewSelectSourceFragment
126125import com.anytypeio.anytype.ui.objects.types.pickers.ObjectSelectTypeFragment
127- import com.anytypeio.anytype.ui.objects.types.pickers.OnDataViewSelectSourceAction
128126import com.anytypeio.anytype.ui.objects.types.pickers.ObjectTypeSelectionListener
127+ import com.anytypeio.anytype.ui.objects.types.pickers.OnDataViewSelectSourceAction
129128import com.anytypeio.anytype.ui.relations.RelationDateValueFragment
130129import com.anytypeio.anytype.ui.relations.RelationDateValueFragment.DateValueEditReceiver
131130import com.anytypeio.anytype.ui.relations.RelationTextValueFragment
@@ -140,7 +139,6 @@ import com.anytypeio.anytype.ui.templates.EditorTemplateFragment.Companion.ARG_T
140139import com.anytypeio.anytype.ui.templates.EditorTemplateFragment.Companion.ARG_TARGET_TYPE_KEY
141140import com.anytypeio.anytype.ui.templates.EditorTemplateFragment.Companion.ARG_TEMPLATE_ID
142141import javax.inject.Inject
143- import kotlinx.coroutines.flow.filterNotNull
144142import kotlinx.coroutines.flow.launchIn
145143import kotlinx.coroutines.flow.onEach
146144import timber.log.Timber
@@ -895,6 +893,31 @@ open class ObjectSetFragment :
895893 }
896894 }
897895
896+ private fun scrollToObject (objectId : Id ) {
897+ val viewer = when (val state = vm.currentViewer.value) {
898+ is DataViewViewState .Collection .Default -> state.viewer
899+ is DataViewViewState .Set .Default -> state.viewer
900+ is DataViewViewState .TypeSet .Default -> state.viewer
901+ else -> null
902+ }
903+ when (viewer) {
904+ is Viewer .GridView -> {
905+ rvRows.smoothScrollToFirst(viewer.rows) { it.id == objectId }
906+ }
907+
908+ is Viewer .GalleryView -> {
909+ binding.galleryView.smoothScrollToFirst(viewer.items) { it.objectId == objectId }
910+ }
911+
912+ is Viewer .ListView -> {
913+ binding.listView.smoothScrollToFirst(viewer.items) { it.objectId == objectId }
914+ }
915+
916+ else -> { /* no scroll for unsupported views */
917+ }
918+ }
919+ }
920+
898921 private fun bindHeader (header : SetOrCollectionHeaderState .Default ) {
899922 setupHeaderMargins(header)
900923
@@ -1342,6 +1365,9 @@ open class ObjectSetFragment :
13421365 successToast = getString(R .string.link_copied)
13431366 )
13441367 }
1368+ is ObjectSetCommand .ScrollToObject -> {
1369+ scrollToObject(command.objectId)
1370+ }
13451371 }
13461372 }
13471373
0 commit comments