@@ -491,10 +491,12 @@ class ResourcesFragment : BaseRecyclerFragment<RealmMyLibrary?>(), OnLibraryItem
491491 mediums.clear()
492492 subjects.clear()
493493 languages.clear()
494- adapterLibrary.setLibraryList(applyFilter(filterLocalLibraryByTag(" " , searchTags)).map { it.toResourceItem() }) {
495- recyclerView.scrollToPosition(0 )
494+ viewLifecycleOwner.lifecycleScope.launch {
495+ adapterLibrary.setLibraryList(applyFilter(filterLocalLibraryByTag(" " , searchTags)).map { it.toResourceItem() }) {
496+ recyclerView.scrollToPosition(0 )
497+ }
498+ showNoData(tvMessage, adapterLibrary.itemCount, " resources" )
496499 }
497- showNoData(tvMessage, adapterLibrary.itemCount, " resources" )
498500 }
499501 }
500502
@@ -529,11 +531,13 @@ class ResourcesFragment : BaseRecyclerFragment<RealmMyLibrary?>(), OnLibraryItem
529531 chipCloud.setDeleteListener(this )
530532 if (! searchTags.any { it.name == tag.name }) searchTags.add(tag)
531533 chipCloud.addChips(searchTags)
532- adapterLibrary.setLibraryList(applyFilter(filterLocalLibraryByTag(etSearch.text.toString(), searchTags)).map { it.toResourceItem() }) {
533- recyclerView.scrollToPosition(0 )
534+ viewLifecycleOwner.lifecycleScope.launch {
535+ adapterLibrary.setLibraryList(applyFilter(filterLocalLibraryByTag(etSearch.text.toString(), searchTags)).map { it.toResourceItem() }) {
536+ recyclerView.scrollToPosition(0 )
537+ }
538+ showTagText(searchTags, tvSelected)
539+ showNoData(tvMessage, adapterLibrary.itemCount, " resources" )
534540 }
535- showTagText(searchTags, tvSelected)
536- showNoData(tvMessage, adapterLibrary.itemCount, " resources" )
537541 }
538542
539543 override fun onTagSelected (tag : RealmTag ) {
@@ -542,19 +546,23 @@ class ResourcesFragment : BaseRecyclerFragment<RealmMyLibrary?>(), OnLibraryItem
542546 li.add(tag)
543547 searchTags = li
544548 tvSelected.text = getString(R .string.tag_selected, tag.name)
545- adapterLibrary.setLibraryList(applyFilter(filterLocalLibraryByTag(etSearch.text.toString(), li)).map { it.toResourceItem() }) {
546- recyclerView.scrollToPosition(0 )
549+ viewLifecycleOwner.lifecycleScope.launch {
550+ adapterLibrary.setLibraryList(applyFilter(filterLocalLibraryByTag(etSearch.text.toString(), li)).map { it.toResourceItem() }) {
551+ recyclerView.scrollToPosition(0 )
552+ }
553+ showNoData(tvMessage, adapterLibrary.itemCount, " resources" )
547554 }
548- showNoData(tvMessage, adapterLibrary.itemCount, " resources" )
549555 }
550556
551557 override fun onOkClicked (list : List <RealmTag >? ) {
552558 if (list?.isEmpty() == true ) {
553559 searchTags.clear()
554- adapterLibrary.setLibraryList(applyFilter(filterLocalLibraryByTag(etSearch.text.toString(), searchTags)).map { it.toResourceItem() }) {
555- recyclerView.scrollToPosition(0 )
560+ viewLifecycleOwner.lifecycleScope.launch {
561+ adapterLibrary.setLibraryList(applyFilter(filterLocalLibraryByTag(etSearch.text.toString(), searchTags)).map { it.toResourceItem() }) {
562+ recyclerView.scrollToPosition(0 )
563+ }
564+ showNoData(tvMessage, adapterLibrary.itemCount, " resources" )
556565 }
557- showNoData(tvMessage, adapterLibrary.itemCount, " resources" )
558566 } else {
559567 for (tag in list ? : emptyList()) {
560568 onTagClicked(tag)
@@ -575,21 +583,25 @@ class ResourcesFragment : BaseRecyclerFragment<RealmMyLibrary?>(), OnLibraryItem
575583
576584 override fun chipDeleted (i : Int , s : String ) {
577585 searchTags.removeAt(i)
578- adapterLibrary.setLibraryList(applyFilter(filterLocalLibraryByTag(etSearch.text.toString(), searchTags)).map { it.toResourceItem() }) {
579- recyclerView.scrollToPosition(0 )
586+ viewLifecycleOwner.lifecycleScope.launch {
587+ adapterLibrary.setLibraryList(applyFilter(filterLocalLibraryByTag(etSearch.text.toString(), searchTags)).map { it.toResourceItem() }) {
588+ recyclerView.scrollToPosition(0 )
589+ }
590+ showNoData(tvMessage, adapterLibrary.itemCount, " resources" )
580591 }
581- showNoData(tvMessage, adapterLibrary.itemCount, " resources" )
582592 }
583593
584594 override fun filter (subjects : MutableSet <String >, languages : MutableSet <String >, mediums : MutableSet <String >, levels : MutableSet <String >) {
585595 this .subjects = subjects
586596 this .languages = languages
587597 this .mediums = mediums
588598 this .levels = levels
589- adapterLibrary.setLibraryList(applyFilter(filterLocalLibraryByTag(etSearch.text.toString().trim { it <= ' ' }, searchTags)).map { it.toResourceItem() }) {
590- recyclerView.scrollToPosition(0 )
599+ viewLifecycleOwner.lifecycleScope.launch {
600+ adapterLibrary.setLibraryList(applyFilter(filterLocalLibraryByTag(etSearch.text.toString().trim { it <= ' ' }, searchTags)).map { it.toResourceItem() }) {
601+ recyclerView.scrollToPosition(0 )
602+ }
603+ showNoData(tvMessage, adapterLibrary.itemCount, " resources" )
591604 }
592- showNoData(tvMessage, adapterLibrary.itemCount, " resources" )
593605 }
594606
595607 override suspend fun getData (): Map <String , Set <String >> {
@@ -714,27 +726,8 @@ class ResourcesFragment : BaseRecyclerFragment<RealmMyLibrary?>(), OnLibraryItem
714726 return if (::recyclerView.isInitialized) recyclerView else null
715727 }
716728
717- private fun filterLocalLibraryByTag (s : String , tags : List <RealmTag >): List <RealmMyLibrary > {
718- val normalizedSearchTerm = org.ole.planet.myplanet.utils.Utilities .normalizeText(s)
719-
720- var filteredList = if (s.isEmpty()) {
721- allLibraryItems
722- } else {
723- val queryParts = s.split(" " ).filterNot { it.isEmpty() }
724- val normalizedQueryParts = queryParts.map { org.ole.planet.myplanet.utils.Utilities .normalizeText(it) }
725- val startsWithQuery = mutableListOf<RealmMyLibrary >()
726- val containsQuery = mutableListOf<RealmMyLibrary >()
727-
728- for (item in allLibraryItems) {
729- val title = item.title?.let { org.ole.planet.myplanet.utils.Utilities .normalizeText(it) } ? : continue
730- if (title.startsWith(normalizedSearchTerm, ignoreCase = true )) {
731- startsWithQuery.add(item)
732- } else if (normalizedQueryParts.all { title.contains(it, ignoreCase = true ) }) {
733- containsQuery.add(item)
734- }
735- }
736- startsWithQuery + containsQuery
737- }
729+ private suspend fun filterLocalLibraryByTag (s : String , tags : List <RealmTag >): List <RealmMyLibrary > {
730+ var filteredList = resourcesRepository.search(s, isMyCourseLib, model?.id)
738731
739732 if (tags.isNotEmpty()) {
740733 filteredList = filteredList.filter { library ->
0 commit comments