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

View File

@ -19,11 +19,20 @@
package org.kiwix.kiwixmobile.core.data.local
import android.content.Context
import androidx.room.Database
import androidx.room.Room
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")
@Database(entities = [RecentSearchRoomEntity::class], version = 19)
abstract class KiwixRoomDatabase : RoomDatabase() {
abstract fun newRecentSearchRoomDao(): NewRecentSearchRoomDao
@Inject lateinit var boxStore: BoxStore
companion object {
private var db: KiwixRoomDatabase? = null
@ -33,7 +42,7 @@ abstract class KiwixRoomDatabase : RoomDatabase() {
?: Room.databaseBuilder(context, KiwixRoomDatabase::class.java, "KiwixRoom.db")
// We have already database name called kiwix.db in order to avoid complexity we named as
// kiwixRoom.db
.build()
.build().also(KiwixRoomDatabase::migrateRecentSearch)
}
}
@ -41,4 +50,8 @@ abstract class KiwixRoomDatabase : RoomDatabase() {
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.NewNoteDao
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.DataSource
import org.kiwix.kiwixmobile.core.data.local.dao.BookDao
@ -91,6 +92,7 @@ interface CoreComponent {
fun noteDao(): NewNoteDao
fun newLanguagesDao(): NewLanguagesDao
fun recentSearchDao(): NewRecentSearchDao
fun recentSearchRoomDao(): NewRecentSearchRoomDao
fun newBookmarksDao(): NewBookmarksDao
fun connectivityManager(): ConnectivityManager
fun context(): Context

View File

@ -23,12 +23,14 @@ 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
@ -96,4 +98,6 @@ class ApplicationModule {
@Singleton
fun provideConnectivityManager(context: Context): 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.NewRecentSearchDao
import org.kiwix.kiwixmobile.core.dao.entities.MyObjectBox
import org.kiwix.kiwixmobile.core.data.local.KiwixRoomDatabase
import javax.inject.Singleton
@Module
@ -72,4 +73,16 @@ open class DatabaseModule {
newBookDao: NewBookDao
): FetchDownloadDao =
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.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
import org.kiwix.kiwixmobile.core.search.viewmodel.Action.ActivityResultReceived
@ -63,7 +64,7 @@ import javax.inject.Inject
@OptIn(ExperimentalCoroutinesApi::class)
class SearchViewModel @Inject constructor(
private val recentSearchDao: NewRecentSearchDao,
private val recentSearchDao: NewRecentSearchRoomDao,
private val zimReaderContainer: ZimReaderContainer,
private val searchResultGenerator: SearchResultGenerator
) : ViewModel() {

View File

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

View File

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