diff --git a/app/src/main/java/com/anytypeio/anytype/ui/editor/EditorFragment.kt b/app/src/main/java/com/anytypeio/anytype/ui/editor/EditorFragment.kt index e6885203ce..9d5f80c491 100644 --- a/app/src/main/java/com/anytypeio/anytype/ui/editor/EditorFragment.kt +++ b/app/src/main/java/com/anytypeio/anytype/ui/editor/EditorFragment.kt @@ -1108,7 +1108,8 @@ open class EditorFragment : NavigationFragment(R.layout.f delay(DEFAULT_ANIM_DURATION) val fr = LinkToObjectFragment.new( target = command.target, - position = command.position + position = command.position, + ignore = vm.context ) fr.show(childFragmentManager, null) } diff --git a/app/src/main/java/com/anytypeio/anytype/ui/linking/LinkToObjectFragment.kt b/app/src/main/java/com/anytypeio/anytype/ui/linking/LinkToObjectFragment.kt index 640432b6d1..032ad16ccb 100644 --- a/app/src/main/java/com/anytypeio/anytype/ui/linking/LinkToObjectFragment.kt +++ b/app/src/main/java/com/anytypeio/anytype/ui/linking/LinkToObjectFragment.kt @@ -56,6 +56,7 @@ class LinkToObjectFragment : BaseBottomSheetTextInputFragment(ARG_TARGET) private val position get() = argOrNull(ARG_POSITION) + private val ignore get() = arg(ARG_IGNORE) private val moveToAdapter by lazy { DefaultObjectViewAdapter( @@ -101,7 +102,7 @@ class LinkToObjectFragment : BaseBottomSheetTextInputFragment(replay = 0) - override fun getSearchObjectsParams() = SearchObjects.Params( + override fun getSearchObjectsParams(ignore: Id?) = SearchObjects.Params( limit = SEARCH_LIMIT, - filters = ObjectSearchConstants.filterLinkTo, + filters = ObjectSearchConstants.getFilterLinkTo(ignore), sorts = ObjectSearchConstants.sortLinkTo, fulltext = EMPTY_QUERY, keys = ObjectSearchConstants.defaultKeys diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/search/ObjectSearchConstants.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/search/ObjectSearchConstants.kt index 017839ea98..6622517f71 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/search/ObjectSearchConstants.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/search/ObjectSearchConstants.kt @@ -53,7 +53,7 @@ object ObjectSearchConstants { //endregion //region LINK TO - val filterLinkTo = listOf( + fun getFilterLinkTo(ignore: Id?) = listOf( DVFilter( relationKey = Relations.IS_ARCHIVED, condition = DVFilterCondition.EQUAL, @@ -76,6 +76,11 @@ object ObjectSearchConstants { VIDEO_URL, AUDIO_URL ) + ), + DVFilter( + relationKey = Relations.ID, + condition = DVFilterCondition.NOT_EQUAL, + value = ignore ) ) diff --git a/presentation/src/main/java/com/anytypeio/anytype/presentation/search/ObjectSearchViewModel.kt b/presentation/src/main/java/com/anytypeio/anytype/presentation/search/ObjectSearchViewModel.kt index 07d36b1149..47c5e23ce7 100644 --- a/presentation/src/main/java/com/anytypeio/anytype/presentation/search/ObjectSearchViewModel.kt +++ b/presentation/src/main/java/com/anytypeio/anytype/presentation/search/ObjectSearchViewModel.kt @@ -10,8 +10,8 @@ import com.anytypeio.anytype.core_utils.common.EventWrapper import com.anytypeio.anytype.core_utils.ext.cancel import com.anytypeio.anytype.core_utils.ui.ViewStateViewModel import com.anytypeio.anytype.domain.block.interactor.sets.GetObjectTypes -import com.anytypeio.anytype.domain.search.SearchObjects import com.anytypeio.anytype.domain.misc.UrlBuilder +import com.anytypeio.anytype.domain.search.SearchObjects import com.anytypeio.anytype.presentation.extension.sendAnalyticsSearchQueryEvent import com.anytypeio.anytype.presentation.extension.sendAnalyticsSearchResultEvent import com.anytypeio.anytype.presentation.navigation.AppNavigation @@ -72,10 +72,10 @@ open class ObjectSearchViewModel( } } - fun onStart(route: String) { + fun onStart(route: String, ignore: Id? = null) { eventRoute = route getObjectTypes() - startProcessingSearchQuery() + startProcessingSearchQuery(ignore) } fun onStop() { @@ -92,11 +92,11 @@ open class ObjectSearchViewModel( } } - private fun startProcessingSearchQuery() { + private fun startProcessingSearchQuery(ignore: Id?) { jobs += viewModelScope.launch { searchQuery.collectLatest { query -> sendSearchQueryEvent(query) - val params = getSearchObjectsParams().copy(fulltext = query) + val params = getSearchObjectsParams(ignore).copy(fulltext = query) searchObjects(params = params).process( success = { objects -> setObjects(objects) }, failure = { Timber.e(it, "Error while searching for objects") } @@ -157,7 +157,7 @@ open class ObjectSearchViewModel( } } - open fun getSearchObjectsParams() = SearchObjects.Params( + open fun getSearchObjectsParams(ignore: Id?) = SearchObjects.Params( limit = SEARCH_LIMIT, filters = ObjectSearchConstants.filterSearchObjects, sorts = ObjectSearchConstants.sortsSearchObjects,