Conflict fix

This commit is contained in:
Gouri Panda 2023-01-04 01:35:00 +05:30 committed by Kelson
parent c56af0ca85
commit a48c185d2c
7 changed files with 42 additions and 19 deletions

View File

@ -21,8 +21,11 @@ package org.kiwix.kiwixmobile.core.dao
import androidx.room.Dao
import androidx.room.Query
import io.objectbox.Box
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.launch
import org.kiwix.kiwixmobile.core.dao.entities.RecentSearchEntity
import org.kiwix.kiwixmobile.core.dao.entities.RecentSearchRoomEntity
import org.kiwix.kiwixmobile.core.search.adapter.SearchListItem
@ -31,20 +34,37 @@ import org.kiwix.kiwixmobile.core.search.adapter.SearchListItem
abstract class NewRecentSearchRoomDao {
@Query(
"SELECT * FROM RecentSearchRoomEntity WHERE id LIKE :zimId ORDER BY" +
"SELECT * FROM RecentSearchRoomEntity WHERE zimId LIKE :zimId ORDER BY" +
" RecentSearchRoomEntity.id DESC"
)
abstract fun search(zimId: String?): Flow<List<RecentSearchRoomEntity>>
fun recentSearches(zimId: String?): Flow<List<SearchListItem.RecentSearchListItem>> {
return search(zimId = zimId).map { searchEntities ->
searchEntities.distinctBy(RecentSearchRoomEntity::searchTerm).take(NUM_RECENT_RESULTS)
.map { searchEntity -> SearchListItem.RecentSearchListItem(searchEntity.searchTerm) }
@Query(
"SELECT * FROM RecentSearchRoomEntity"
)
abstract fun fullSearch(): Flow<List<RecentSearchRoomEntity>>
fun recentSearches(zimId: String? = ""): Flow<List<SearchListItem.RecentSearchListItem>> {
return if (zimId != "") {
search(zimId).map { searchEntities ->
searchEntities.distinctBy(RecentSearchRoomEntity::searchTerm).take(NUM_RECENT_RESULTS)
.map { searchEntity -> SearchListItem.RecentSearchListItem(searchEntity.searchTerm) }
}
} else {
return fullSearch().map { searchEntities ->
searchEntities.distinctBy(RecentSearchRoomEntity::searchTerm)
.take(NUM_RECENT_RESULTS)
.map { searchEntity ->
org.kiwix.kiwixmobile.core.search.adapter.SearchListItem.RecentSearchListItem(
searchEntity.searchTerm
)
}
}
}
}
@Query("INSERT INTO RecentSearchRoomEntity(searchTerm, zimId) VALUES (:title , :id)")
abstract fun saveSearch(title: String, id: Long)
abstract fun saveSearch(title: String, id: String)
@Query("DELETE FROM RecentSearchRoomEntity WHERE searchTerm=:searchTerm")
abstract fun deleteSearchString(searchTerm: String)
@ -57,7 +77,9 @@ abstract class NewRecentSearchRoomDao {
) {
val searchRoomEntityList = box.all
searchRoomEntityList.forEach {
saveSearch(it.searchTerm, it.id)
CoroutineScope(Dispatchers.IO).launch {
saveSearch(it.searchTerm, it.id.toString())
}
}
}

View File

@ -27,7 +27,6 @@ import org.kiwix.kiwixmobile.core.dao.NewBookDao
import org.kiwix.kiwixmobile.core.dao.NewBookmarksDao
import org.kiwix.kiwixmobile.core.dao.NewLanguagesDao
import org.kiwix.kiwixmobile.core.dao.NewNoteDao
import org.kiwix.kiwixmobile.core.dao.NewRecentSearchDao
import org.kiwix.kiwixmobile.core.dao.NewRecentSearchRoomDao
import org.kiwix.kiwixmobile.core.di.qualifiers.IO
import org.kiwix.kiwixmobile.core.di.qualifiers.MainThread

View File

@ -23,14 +23,12 @@ import android.app.NotificationManager
import android.content.Context
import android.net.ConnectivityManager
import android.os.storage.StorageManager
import androidx.room.Room
import dagger.Module
import dagger.Provides
import io.reactivex.Scheduler
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import org.kiwix.kiwixmobile.core.NightModeConfig
import org.kiwix.kiwixmobile.core.data.local.KiwixRoomDatabase
import org.kiwix.kiwixmobile.core.di.qualifiers.Computation
import org.kiwix.kiwixmobile.core.di.qualifiers.IO
import org.kiwix.kiwixmobile.core.di.qualifiers.MainThread
@ -99,6 +97,4 @@ class ApplicationModule {
@Singleton
fun provideConnectivityManager(context: Context): ConnectivityManager =
context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
}

View File

@ -83,7 +83,7 @@ open class DatabaseModule {
KiwixRoomDatabase.getInstance(
context = context,
boxStore
)// The reason we can construct a database for the repo
) // The reason we can construct a database for the repo
@Singleton
@Provides

View File

@ -33,7 +33,6 @@ import kotlinx.coroutines.flow.receiveAsFlow
import kotlinx.coroutines.launch
import org.kiwix.kiwixmobile.core.R
import org.kiwix.kiwixmobile.core.base.SideEffect
import org.kiwix.kiwixmobile.core.dao.NewRecentSearchDao
import org.kiwix.kiwixmobile.core.dao.NewRecentSearchRoomDao
import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer
import org.kiwix.kiwixmobile.core.search.adapter.SearchListItem
@ -155,7 +154,8 @@ class SearchViewModel @Inject constructor(
SaveSearchToRecents(
recentSearchDao,
searchListItem,
zimReaderContainer.id
zimReaderContainer.id,
viewModelScope
)
).isSuccess
_effects.trySendBlocking(OpenSearchItem(searchListItem, openInNewTab))

View File

@ -20,7 +20,6 @@ package org.kiwix.kiwixmobile.core.search.viewmodel.effects
import androidx.appcompat.app.AppCompatActivity
import org.kiwix.kiwixmobile.core.base.SideEffect
import org.kiwix.kiwixmobile.core.dao.NewRecentSearchDao
import org.kiwix.kiwixmobile.core.dao.NewRecentSearchRoomDao
import org.kiwix.kiwixmobile.core.search.adapter.SearchListItem

View File

@ -19,17 +19,24 @@
package org.kiwix.kiwixmobile.core.search.viewmodel.effects
import androidx.appcompat.app.AppCompatActivity
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import org.kiwix.kiwixmobile.core.base.SideEffect
import org.kiwix.kiwixmobile.core.dao.NewRecentSearchDao
import org.kiwix.kiwixmobile.core.dao.NewRecentSearchRoomDao
import org.kiwix.kiwixmobile.core.search.adapter.SearchListItem
data class SaveSearchToRecents(
private val recentSearchDao: NewRecentSearchRoomDao,
private val searchListItem: SearchListItem,
private val id: String?
private val id: String?,
private val viewModelScope: CoroutineScope
) : SideEffect<Unit> {
override fun invokeWith(activity: AppCompatActivity) {
id?.let { recentSearchDao.saveSearch(searchListItem.value, it.toLong()) }
id?.let {
viewModelScope.launch(Dispatchers.IO) {
recentSearchDao.saveSearch(searchListItem.value, it)
}
}
}
}