mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-22 12:03:09 -04:00
Replaced with UI link code and added dagger code
This commit is contained in:
parent
9e7cf37dd6
commit
1ff9ad6981
@ -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 {
|
||||
|
||||
|
@ -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())
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
||||
}
|
||||
|
@ -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()
|
||||
|
||||
}
|
||||
|
@ -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() {
|
||||
|
@ -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)
|
||||
|
@ -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()) }
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user