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.Dao
import androidx.room.Query import androidx.room.Query
import io.objectbox.Box import io.objectbox.Box
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import kotlinx.coroutines.launch
import org.kiwix.kiwixmobile.core.dao.entities.RecentSearchEntity import org.kiwix.kiwixmobile.core.dao.entities.RecentSearchEntity
import org.kiwix.kiwixmobile.core.dao.entities.RecentSearchRoomEntity import org.kiwix.kiwixmobile.core.dao.entities.RecentSearchRoomEntity
import org.kiwix.kiwixmobile.core.search.adapter.SearchListItem import org.kiwix.kiwixmobile.core.search.adapter.SearchListItem
@ -31,20 +34,37 @@ import org.kiwix.kiwixmobile.core.search.adapter.SearchListItem
abstract class NewRecentSearchRoomDao { abstract class NewRecentSearchRoomDao {
@Query( @Query(
"SELECT * FROM RecentSearchRoomEntity WHERE id LIKE :zimId ORDER BY" + "SELECT * FROM RecentSearchRoomEntity WHERE zimId LIKE :zimId ORDER BY" +
" RecentSearchRoomEntity.id DESC" " RecentSearchRoomEntity.id DESC"
) )
abstract fun search(zimId: String?): Flow<List<RecentSearchRoomEntity>> abstract fun search(zimId: String?): Flow<List<RecentSearchRoomEntity>>
fun recentSearches(zimId: String?): Flow<List<SearchListItem.RecentSearchListItem>> { @Query(
return search(zimId = zimId).map { searchEntities -> "SELECT * FROM RecentSearchRoomEntity"
searchEntities.distinctBy(RecentSearchRoomEntity::searchTerm).take(NUM_RECENT_RESULTS) )
.map { searchEntity -> SearchListItem.RecentSearchListItem(searchEntity.searchTerm) } 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)") @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") @Query("DELETE FROM RecentSearchRoomEntity WHERE searchTerm=:searchTerm")
abstract fun deleteSearchString(searchTerm: String) abstract fun deleteSearchString(searchTerm: String)
@ -57,7 +77,9 @@ abstract class NewRecentSearchRoomDao {
) { ) {
val searchRoomEntityList = box.all val searchRoomEntityList = box.all
searchRoomEntityList.forEach { 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.NewBookmarksDao
import org.kiwix.kiwixmobile.core.dao.NewLanguagesDao import org.kiwix.kiwixmobile.core.dao.NewLanguagesDao
import org.kiwix.kiwixmobile.core.dao.NewNoteDao 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.dao.NewRecentSearchRoomDao
import org.kiwix.kiwixmobile.core.di.qualifiers.IO import org.kiwix.kiwixmobile.core.di.qualifiers.IO
import org.kiwix.kiwixmobile.core.di.qualifiers.MainThread import org.kiwix.kiwixmobile.core.di.qualifiers.MainThread

View File

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

View File

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

View File

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

View File

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