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

DROID-465 Editor | Fix | Exclude object itself from link to object or web (#2666)

This commit is contained in:
Mikhail 2022-10-19 12:32:28 +03:00 committed by GitHub
parent b7000c12de
commit 8fb9e4c967
Signed by: github
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 31 additions and 21 deletions

View file

@ -33,7 +33,7 @@ import kotlinx.coroutines.launch
import timber.log.Timber
import javax.inject.Inject
class LinkToObjectOrWebPagesFragment() :
class LinkToObjectOrWebPagesFragment :
BaseBottomSheetFragment<FragmentLinkToObjectOrWebBinding>() {
private val vm by viewModels<LinkToObjectOrWebViewModel> { factory }
@ -44,7 +44,7 @@ class LinkToObjectOrWebPagesFragment() :
private val clearSearchText: View get() = binding.searchView.root.findViewById(R.id.clearSearchText)
private val filterInputField: EditText get() = binding.searchView.root.findViewById(R.id.filterInputField)
private val ctx get() = arg<String>(CTX_KEY)
private val ctx get() = arg<Id>(CTX_KEY)
private val blockId get() = arg<String>(BLOCK_KEY)
private val rangeStart get() = arg<Int>(RANGE_START_KEY)
private val rangeEnd get() = arg<Int>(RANGE_END_KEY)
@ -114,7 +114,8 @@ class LinkToObjectOrWebPagesFragment() :
blockId = blockId,
rangeStart = rangeStart,
rangeEnd = rangeEnd,
clipboardUrl = context?.parseUrlFromClipboard()
clipboardUrl = context?.parseUrlFromClipboard(),
ignore = ctx
)
expand()
}

View file

@ -53,10 +53,10 @@ class LinkToObjectOrWebViewModel(
private val jobs = mutableListOf<Job>()
fun onStart(blockId: Id, rangeStart: Int, rangeEnd: Int, clipboardUrl: String?) {
fun onStart(blockId: Id, rangeStart: Int, rangeEnd: Int, clipboardUrl: String?, ignore: Id) {
this.clipboardUrl = clipboardUrl
setupBlockInRangeMarkupParam(blockId, rangeStart, rangeEnd)
startObservingViewState()
startObservingViewState(ignore)
}
fun onStop() {
@ -66,11 +66,11 @@ class LinkToObjectOrWebViewModel(
jobs.clear()
}
private fun startObservingViewState() {
private fun startObservingViewState(ignore: Id) {
jobs += viewModelScope.launch {
searchQuery.collectLatest { query ->
sendSearchQueryEvent(query.length)
val params = getSearchObjectsParams().copy(fulltext = query)
val params = getSearchObjectsParams(ignore).copy(fulltext = query)
searchObjects(params).process(
success = { searchResponse ->
val result = proceedWithSearchObjectsResponse(searchResponse)
@ -115,7 +115,9 @@ class LinkToObjectOrWebViewModel(
}
else -> {
val filteredSearchResponse =
searchResponse.filter { SupportedLayouts.layouts.contains(it.layout) }
searchResponse
.filter { SupportedLayouts.layouts.contains(it.layout) }
val objectViews = filteredSearchResponse.toLinkToView(
urlBuilder = urlBuilder,
objectTypes = objectTypes
@ -210,9 +212,9 @@ class LinkToObjectOrWebViewModel(
)
}
fun getSearchObjectsParams() = SearchObjects.Params(
fun getSearchObjectsParams(ignore: Id) = SearchObjects.Params(
limit = ObjectSearchViewModel.SEARCH_LIMIT,
filters = ObjectSearchConstants.getFilterLinkTo(ignore = null),
filters = ObjectSearchConstants.getFilterLinkTo(ignore = ignore),
sorts = ObjectSearchConstants.sortLinkTo,
fulltext = ObjectSearchViewModel.EMPTY_QUERY
)

View file

@ -51,6 +51,7 @@ open class LinkToObjectOrWebViewModelTest {
lateinit var gateway: Gateway
var store: Editor.Storage = Editor.Storage()
var ctx = ""
protected val builder: UrlBuilder get() = UrlBuilder(gateway)
@ -74,13 +75,14 @@ open class LinkToObjectOrWebViewModelTest {
runBlocking { store.document.update(listOf(block)) }
val vm = givenViewModel()
stubSearchObjects(params = vm.getSearchObjectsParams())
stubSearchObjects(params = vm.getSearchObjectsParams(ctx))
vm.onStart(
blockId = target,
rangeStart = 0,
rangeEnd = 10,
clipboardUrl = null
clipboardUrl = null,
ignore = ctx
)
assertEquals(
@ -103,13 +105,14 @@ open class LinkToObjectOrWebViewModelTest {
val vm = givenViewModel()
stubSearchObjects(params = vm.getSearchObjectsParams())
stubSearchObjects(params = vm.getSearchObjectsParams(ctx))
vm.onStart(
blockId = target,
rangeStart = start,
rangeEnd = end,
clipboardUrl = null
clipboardUrl = null,
ignore = ctx
)
val result = vm.viewState.value
@ -138,7 +141,8 @@ open class LinkToObjectOrWebViewModelTest {
blockId = target,
rangeStart = start,
rangeEnd = end,
clipboardUrl = null
clipboardUrl = null,
ignore = ctx
)
val result = vm.viewState.value
@ -169,13 +173,14 @@ open class LinkToObjectOrWebViewModelTest {
val vm = givenViewModel()
stubSearchObjects(params = vm.getSearchObjectsParams())
stubSearchObjects(params = vm.getSearchObjectsParams(ctx))
vm.onStart(
blockId = target,
rangeStart = 0,
rangeEnd = 6,
clipboardUrl = null
clipboardUrl = null,
ignore = ctx
)
val result = vm.markupLinkParam.value
@ -204,13 +209,14 @@ open class LinkToObjectOrWebViewModelTest {
val vm = givenViewModel()
stubSearchObjects(params = vm.getSearchObjectsParams())
stubSearchObjects(params = vm.getSearchObjectsParams(ctx))
vm.onStart(
blockId = target,
rangeStart = 0,
rangeEnd = 6,
clipboardUrl = null
clipboardUrl = null,
ignore = ctx
)
val result = vm.markupObjectParam.value
@ -243,13 +249,14 @@ open class LinkToObjectOrWebViewModelTest {
val vm = givenViewModel()
stubSearchObjects(params = vm.getSearchObjectsParams())
stubSearchObjects(params = vm.getSearchObjectsParams(ctx))
vm.onStart(
blockId = target,
rangeStart = 4,
rangeEnd = 6,
clipboardUrl = null
clipboardUrl = null,
ignore = ctx
)
assertNull(vm.markupObjectParam.value)