Replaced with UI link code and added dagger code

This commit is contained in:
Gouri Panda 2022-12-06 01:16:03 +05:30 committed by Kelson
parent 9e7cf37dd6
commit 1ff9ad6981
8 changed files with 42 additions and 6 deletions

View File

@ -28,6 +28,7 @@ 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.NewRecentSearchDao
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
import org.kiwix.kiwixmobile.core.extensions.HeaderizableList import org.kiwix.kiwixmobile.core.extensions.HeaderizableList
@ -57,7 +58,7 @@ class Repository @Inject internal constructor(
private val historyDao: HistoryDao, private val historyDao: HistoryDao,
private val notesDao: NewNoteDao, private val notesDao: NewNoteDao,
private val languageDao: NewLanguagesDao, private val languageDao: NewLanguagesDao,
private val recentSearchDao: NewRecentSearchDao, private val recentSearchDao: NewRecentSearchRoomDao,
private val zimReaderContainer: ZimReaderContainer private val zimReaderContainer: ZimReaderContainer
) : DataSource { ) : DataSource {

View File

@ -19,11 +19,20 @@
package org.kiwix.kiwixmobile.core.data.local package org.kiwix.kiwixmobile.core.data.local
import android.content.Context import android.content.Context
import androidx.room.Database
import androidx.room.Room import androidx.room.Room
import androidx.room.RoomDatabase import androidx.room.RoomDatabase
import io.objectbox.BoxStore
import io.objectbox.kotlin.boxFor
import org.kiwix.kiwixmobile.core.dao.NewRecentSearchRoomDao
import org.kiwix.kiwixmobile.core.dao.entities.RecentSearchRoomEntity
import javax.inject.Inject
@Suppress("UnnecessaryAbstractClass") @Suppress("UnnecessaryAbstractClass")
@Database(entities = [RecentSearchRoomEntity::class], version = 19)
abstract class KiwixRoomDatabase : RoomDatabase() { abstract class KiwixRoomDatabase : RoomDatabase() {
abstract fun newRecentSearchRoomDao(): NewRecentSearchRoomDao
@Inject lateinit var boxStore: BoxStore
companion object { companion object {
private var db: KiwixRoomDatabase? = null private var db: KiwixRoomDatabase? = null
@ -33,7 +42,7 @@ abstract class KiwixRoomDatabase : RoomDatabase() {
?: Room.databaseBuilder(context, KiwixRoomDatabase::class.java, "KiwixRoom.db") ?: Room.databaseBuilder(context, KiwixRoomDatabase::class.java, "KiwixRoom.db")
// We have already database name called kiwix.db in order to avoid complexity we named as // We have already database name called kiwix.db in order to avoid complexity we named as
// kiwixRoom.db // kiwixRoom.db
.build() .build().also(KiwixRoomDatabase::migrateRecentSearch)
} }
} }
@ -41,4 +50,8 @@ abstract class KiwixRoomDatabase : RoomDatabase() {
db = null db = null
} }
} }
fun migrateRecentSearch() {
newRecentSearchRoomDao().migrationToRoomInsert(boxStore.boxFor())
}
} }

View File

@ -33,6 +33,7 @@ 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.NewRecentSearchDao
import org.kiwix.kiwixmobile.core.dao.NewRecentSearchRoomDao
import org.kiwix.kiwixmobile.core.data.DataModule import org.kiwix.kiwixmobile.core.data.DataModule
import org.kiwix.kiwixmobile.core.data.DataSource import org.kiwix.kiwixmobile.core.data.DataSource
import org.kiwix.kiwixmobile.core.data.local.dao.BookDao import org.kiwix.kiwixmobile.core.data.local.dao.BookDao
@ -91,6 +92,7 @@ interface CoreComponent {
fun noteDao(): NewNoteDao fun noteDao(): NewNoteDao
fun newLanguagesDao(): NewLanguagesDao fun newLanguagesDao(): NewLanguagesDao
fun recentSearchDao(): NewRecentSearchDao fun recentSearchDao(): NewRecentSearchDao
fun recentSearchRoomDao(): NewRecentSearchRoomDao
fun newBookmarksDao(): NewBookmarksDao fun newBookmarksDao(): NewBookmarksDao
fun connectivityManager(): ConnectivityManager fun connectivityManager(): ConnectivityManager
fun context(): Context fun context(): Context

View File

@ -23,12 +23,14 @@ 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
@ -96,4 +98,6 @@ 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

@ -31,6 +31,7 @@ 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.NewRecentSearchDao
import org.kiwix.kiwixmobile.core.dao.entities.MyObjectBox import org.kiwix.kiwixmobile.core.dao.entities.MyObjectBox
import org.kiwix.kiwixmobile.core.data.local.KiwixRoomDatabase
import javax.inject.Singleton import javax.inject.Singleton
@Module @Module
@ -72,4 +73,16 @@ open class DatabaseModule {
newBookDao: NewBookDao newBookDao: NewBookDao
): FetchDownloadDao = ): FetchDownloadDao =
FetchDownloadDao(boxStore.boxFor(), newBookDao) FetchDownloadDao(boxStore.boxFor(), newBookDao)
@Singleton
@Provides
fun provideYourDatabase(
context: Context
) =
KiwixRoomDatabase.getInstance(context = context)// The reason we can construct a database for the repo
@Singleton
@Provides
fun provideYourDao(db: KiwixRoomDatabase) = db.newRecentSearchRoomDao()
} }

View File

@ -34,6 +34,7 @@ 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.NewRecentSearchDao
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
import org.kiwix.kiwixmobile.core.search.viewmodel.Action.ActivityResultReceived import org.kiwix.kiwixmobile.core.search.viewmodel.Action.ActivityResultReceived
@ -63,7 +64,7 @@ import javax.inject.Inject
@OptIn(ExperimentalCoroutinesApi::class) @OptIn(ExperimentalCoroutinesApi::class)
class SearchViewModel @Inject constructor( class SearchViewModel @Inject constructor(
private val recentSearchDao: NewRecentSearchDao, private val recentSearchDao: NewRecentSearchRoomDao,
private val zimReaderContainer: ZimReaderContainer, private val zimReaderContainer: ZimReaderContainer,
private val searchResultGenerator: SearchResultGenerator private val searchResultGenerator: SearchResultGenerator
) : ViewModel() { ) : ViewModel() {

View File

@ -21,11 +21,12 @@ 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.NewRecentSearchDao
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 DeleteRecentSearch( data class DeleteRecentSearch(
private val searchListItem: SearchListItem, private val searchListItem: SearchListItem,
private val recentSearchDao: NewRecentSearchDao private val recentSearchDao: NewRecentSearchRoomDao
) : SideEffect<Unit> { ) : SideEffect<Unit> {
override fun invokeWith(activity: AppCompatActivity) { override fun invokeWith(activity: AppCompatActivity) {
recentSearchDao.deleteSearchString(searchListItem.value) recentSearchDao.deleteSearchString(searchListItem.value)

View File

@ -21,14 +21,15 @@ 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.NewRecentSearchDao
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: NewRecentSearchDao, private val recentSearchDao: NewRecentSearchRoomDao,
private val searchListItem: SearchListItem, private val searchListItem: SearchListItem,
private val id: String? private val id: String?
) : SideEffect<Unit> { ) : SideEffect<Unit> {
override fun invokeWith(activity: AppCompatActivity) { override fun invokeWith(activity: AppCompatActivity) {
id?.let { recentSearchDao.saveSearch(searchListItem.value, it) } id?.let { recentSearchDao.saveSearch(searchListItem.value, it.toLong()) }
} }
} }