mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-23 04:33:54 -04:00
Conflict fix
This commit is contained in:
parent
c56af0ca85
commit
a48c185d2c
@ -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())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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))
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user