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:
parent
b7000c12de
commit
8fb9e4c967
3 changed files with 31 additions and 21 deletions
|
@ -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()
|
||||
}
|
||||
|
|
|
@ -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
|
||||
)
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue