mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-24 05:04:50 -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.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 {
|
||||||
|
|
||||||
|
@ -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())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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() {
|
||||||
|
@ -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)
|
||||||
|
@ -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()) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user