mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-13 09:26:52 -04:00
#2238 cached component is now used in bookmarks and history
This commit is contained in:
parent
df04a614d6
commit
f18be13345
@ -19,7 +19,9 @@
|
||||
package org.kiwix.kiwixmobile
|
||||
|
||||
import org.kiwix.kiwixmobile.core.base.BaseActivity
|
||||
import org.kiwix.kiwixmobile.di.components.KiwixActivityComponent
|
||||
import org.kiwix.kiwixmobile.di.components.KiwixComponent
|
||||
import org.kiwix.kiwixmobile.main.KiwixMainActivity
|
||||
|
||||
private val BaseActivity.kiwixComponent: KiwixComponent
|
||||
get() = kiwixApp()?.kiwixComponent ?: throw RuntimeException(
|
||||
@ -31,6 +33,9 @@ private val BaseActivity.kiwixComponent: KiwixComponent
|
||||
|
||||
private fun BaseActivity.kiwixApp() = applicationContext as? KiwixApp ?: application as? KiwixApp
|
||||
|
||||
val BaseActivity.cachedComponent: KiwixActivityComponent
|
||||
get() = (this as KiwixMainActivity).cachedComponent
|
||||
|
||||
internal inline val BaseActivity.kiwixActivityComponent
|
||||
get() = kiwixComponent
|
||||
.activityComponentBuilder()
|
||||
|
@ -19,16 +19,15 @@
|
||||
package org.kiwix.kiwixmobile.di.modules
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import dagger.Binds
|
||||
import dagger.Module
|
||||
import dagger.multibindings.IntoMap
|
||||
import org.kiwix.kiwixmobile.KiwixViewModelFactory
|
||||
import org.kiwix.kiwixmobile.core.di.ViewModelKey
|
||||
import org.kiwix.kiwixmobile.core.di.modules.CoreViewModelModule
|
||||
import org.kiwix.kiwixmobile.language.viewmodel.LanguageViewModel
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel
|
||||
|
||||
@Module
|
||||
@Module(includes = [CoreViewModelModule::class])
|
||||
abstract class KiwixViewModelModule {
|
||||
@Binds
|
||||
@IntoMap
|
||||
@ -39,8 +38,4 @@ abstract class KiwixViewModelModule {
|
||||
@IntoMap
|
||||
@ViewModelKey(LanguageViewModel::class)
|
||||
abstract fun bindLanguageViewModel(languageViewModel: LanguageViewModel): ViewModel
|
||||
|
||||
@Binds
|
||||
abstract fun bindViewModelFactory(factory: KiwixViewModelFactory):
|
||||
ViewModelProvider.Factory
|
||||
}
|
||||
|
@ -28,13 +28,13 @@ import android.view.ViewGroup
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import kotlinx.android.synthetic.main.fragment_destination_library.go_to_downloads_button_no_files
|
||||
import org.kiwix.kiwixmobile.R
|
||||
import org.kiwix.kiwixmobile.cachedComponent
|
||||
import org.kiwix.kiwixmobile.core.base.BaseActivity
|
||||
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.start
|
||||
import org.kiwix.kiwixmobile.core.main.CoreMainActivity
|
||||
import org.kiwix.kiwixmobile.core.utils.LanguageUtils
|
||||
import org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.adapter.BookOnDiskDelegate
|
||||
import org.kiwix.kiwixmobile.local_file_transfer.LocalFileTransferActivity
|
||||
import org.kiwix.kiwixmobile.main.KiwixMainActivity
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RequestMultiSelection
|
||||
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RequestNavigateTo
|
||||
@ -56,7 +56,7 @@ class LocalLibraryFragment : ZimFileSelectFragment() {
|
||||
}
|
||||
|
||||
override fun inject(baseActivity: BaseActivity) {
|
||||
(baseActivity as KiwixMainActivity).cachedComponent.inject(this)
|
||||
baseActivity.cachedComponent.inject(this)
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
|
@ -29,19 +29,19 @@ import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.appcompat.widget.SearchView
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import org.kiwix.kiwixmobile.R
|
||||
import org.kiwix.kiwixmobile.cachedComponent
|
||||
import org.kiwix.kiwixmobile.core.base.BaseActivity
|
||||
import org.kiwix.kiwixmobile.core.base.FragmentActivityExtensions
|
||||
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.start
|
||||
import org.kiwix.kiwixmobile.core.main.CoreMainActivity
|
||||
import org.kiwix.kiwixmobile.core.utils.SimpleTextListener
|
||||
import org.kiwix.kiwixmobile.language.LanguageActivity
|
||||
import org.kiwix.kiwixmobile.main.KiwixMainActivity
|
||||
import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment
|
||||
|
||||
class OnlineLibraryFragment : LibraryFragment(), FragmentActivityExtensions {
|
||||
|
||||
override fun inject(baseActivity: BaseActivity) {
|
||||
(baseActivity as KiwixMainActivity).cachedComponent.inject(this)
|
||||
baseActivity.cachedComponent.inject(this)
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
|
@ -36,6 +36,7 @@ import androidx.drawerlayout.widget.DrawerLayout
|
||||
import kotlinx.android.synthetic.main.activity_kiwix_main.bottom_nav_view
|
||||
import org.json.JSONArray
|
||||
import org.kiwix.kiwixmobile.R
|
||||
import org.kiwix.kiwixmobile.cachedComponent
|
||||
import org.kiwix.kiwixmobile.core.R.anim
|
||||
import org.kiwix.kiwixmobile.core.base.BaseActivity
|
||||
import org.kiwix.kiwixmobile.core.base.FragmentActivityExtensions.Super
|
||||
@ -57,7 +58,6 @@ import org.kiwix.kiwixmobile.core.utils.TAG_CURRENT_POSITIONS
|
||||
import org.kiwix.kiwixmobile.core.utils.TAG_CURRENT_TAB
|
||||
import org.kiwix.kiwixmobile.core.utils.TAG_KIWIX
|
||||
import org.kiwix.kiwixmobile.core.utils.UpdateUtils
|
||||
import org.kiwix.kiwixmobile.main.KiwixMainActivity
|
||||
import java.io.File
|
||||
|
||||
private const val HIDE_TAB_SWITCHER_DELAY: Long = 300
|
||||
@ -65,7 +65,7 @@ private const val HIDE_TAB_SWITCHER_DELAY: Long = 300
|
||||
class KiwixReaderFragment : CoreReaderFragment() {
|
||||
|
||||
override fun inject(baseActivity: BaseActivity) {
|
||||
(baseActivity as KiwixMainActivity).cachedComponent.inject(this)
|
||||
baseActivity.cachedComponent.inject(this)
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
|
@ -23,9 +23,7 @@ import androidx.lifecycle.ViewModelProvider;
|
||||
import java.util.Map;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Provider;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
@Singleton
|
||||
public class ViewModelFactory implements ViewModelProvider.Factory {
|
||||
private final Map<Class<? extends ViewModel>, Provider<ViewModel>> creators;
|
||||
|
||||
|
@ -40,8 +40,8 @@ interface CoreActivityComponent {
|
||||
fun inject(showDeleteBookmarksDialog: ShowDeleteBookmarksDialog)
|
||||
fun inject(showDeleteHistoryDialog: ShowDeleteHistoryDialog)
|
||||
fun inject(corePrefsFragment: CorePrefsFragment)
|
||||
fun inject(historyActivity: HistoryFragment)
|
||||
fun inject(bookmarksActivity: BookmarksFragment)
|
||||
fun inject(historyFragment: HistoryFragment)
|
||||
fun inject(bookmarksFragment: BookmarksFragment)
|
||||
fun inject(addNoteDialog: AddNoteDialog)
|
||||
|
||||
@Subcomponent.Builder
|
||||
|
@ -27,6 +27,7 @@ import eu.mhutti1.utils.storage.StorageSelectDialog
|
||||
import org.kiwix.kiwixmobile.core.CoreApp
|
||||
import org.kiwix.kiwixmobile.core.StorageObserver
|
||||
import org.kiwix.kiwixmobile.core.dao.FetchDownloadDao
|
||||
import org.kiwix.kiwixmobile.core.dao.HistoryDao
|
||||
import org.kiwix.kiwixmobile.core.dao.NewBookDao
|
||||
import org.kiwix.kiwixmobile.core.dao.NewBookmarksDao
|
||||
import org.kiwix.kiwixmobile.core.dao.NewLanguagesDao
|
||||
@ -48,6 +49,7 @@ import org.kiwix.kiwixmobile.core.main.KiwixWebView
|
||||
import org.kiwix.kiwixmobile.core.reader.ZimFileReader
|
||||
import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer
|
||||
import org.kiwix.kiwixmobile.core.search.SearchActivity
|
||||
import org.kiwix.kiwixmobile.core.search.viewmodel.SearchResultGenerator
|
||||
import org.kiwix.kiwixmobile.core.settings.CoreSettingsActivity
|
||||
import org.kiwix.kiwixmobile.core.utils.BookUtils
|
||||
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
|
||||
@ -85,6 +87,7 @@ interface CoreComponent {
|
||||
fun dataSource(): DataSource
|
||||
fun fetchDownloadDao(): FetchDownloadDao
|
||||
fun newBookDao(): NewBookDao
|
||||
fun historyDao(): HistoryDao
|
||||
fun newLanguagesDao(): NewLanguagesDao
|
||||
fun recentSearchDao(): NewRecentSearchDao
|
||||
fun newBookmarksDao(): NewBookmarksDao
|
||||
@ -94,6 +97,7 @@ interface CoreComponent {
|
||||
fun bookDao(): BookDao
|
||||
fun bookmarksDao(): BookmarksDao
|
||||
fun notificationManager(): NotificationManager
|
||||
fun searchResultGenerator(): SearchResultGenerator
|
||||
|
||||
fun inject(application: CoreApp)
|
||||
fun inject(kiwixWebView: KiwixWebView)
|
||||
|
@ -28,7 +28,6 @@ import org.kiwix.kiwixmobile.core.di.ViewModelKey
|
||||
import org.kiwix.kiwixmobile.core.page.bookmark.viewmodel.BookmarkViewModel
|
||||
import org.kiwix.kiwixmobile.core.page.history.viewmodel.HistoryViewModel
|
||||
import org.kiwix.kiwixmobile.core.search.viewmodel.SearchViewModel
|
||||
import javax.inject.Singleton
|
||||
|
||||
@Module
|
||||
abstract class CoreViewModelModule {
|
||||
@ -38,7 +37,6 @@ abstract class CoreViewModelModule {
|
||||
abstract fun bindSearchViewModel(searchViewModel: SearchViewModel): ViewModel
|
||||
|
||||
@Binds
|
||||
@Singleton
|
||||
abstract fun bindViewModelFactory(factory: ViewModelFactory):
|
||||
ViewModelProvider.Factory
|
||||
|
||||
|
@ -84,7 +84,8 @@ object ActivityExtensions {
|
||||
(this as CoreMainActivity).navigate(action)
|
||||
}
|
||||
|
||||
fun Activity.cachedComponent(): CoreActivityComponent = (this as CoreMainActivity).cachedComponent
|
||||
val Activity.cachedComponent: CoreActivityComponent
|
||||
get() = (this as CoreMainActivity).cachedComponent
|
||||
|
||||
fun Activity.setupDrawerToggle(toolbar: Toolbar) =
|
||||
(this as CoreMainActivity).setupDrawerToggle(toolbar)
|
||||
|
@ -2,7 +2,7 @@ package org.kiwix.kiwixmobile.core.page.bookmark
|
||||
|
||||
import org.kiwix.kiwixmobile.core.R
|
||||
import org.kiwix.kiwixmobile.core.base.BaseActivity
|
||||
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.coreActivityComponent
|
||||
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.cachedComponent
|
||||
import org.kiwix.kiwixmobile.core.extensions.viewModel
|
||||
import org.kiwix.kiwixmobile.core.page.PageFragment
|
||||
import org.kiwix.kiwixmobile.core.page.adapter.PageAdapter
|
||||
@ -22,7 +22,7 @@ class BookmarksFragment : PageFragment() {
|
||||
override val switchIsChecked: Boolean by lazy { sharedPreferenceUtil.showBookmarksAllBooks }
|
||||
|
||||
override fun inject(baseActivity: BaseActivity) {
|
||||
baseActivity.coreActivityComponent.inject(this)
|
||||
baseActivity.cachedComponent.inject(this)
|
||||
}
|
||||
|
||||
override val searchQueryHint: String by lazy { getString(R.string.search_bookmarks) }
|
||||
|
@ -38,7 +38,7 @@ data class ShowDeleteBookmarksDialog(
|
||||
) : SideEffect<Unit> {
|
||||
@Inject lateinit var dialogShower: DialogShower
|
||||
override fun invokeWith(activity: AppCompatActivity) {
|
||||
activity.cachedComponent().inject(this)
|
||||
activity.cachedComponent.inject(this)
|
||||
dialogShower.show(if (state.isInSelectionState) DeleteSelectedBookmarks else DeleteAllBookmarks,
|
||||
{ effects.offer(DeletePageItems(state, pageDao)) })
|
||||
}
|
||||
|
@ -2,7 +2,7 @@ package org.kiwix.kiwixmobile.core.page.history
|
||||
|
||||
import org.kiwix.kiwixmobile.core.R
|
||||
import org.kiwix.kiwixmobile.core.base.BaseActivity
|
||||
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.coreActivityComponent
|
||||
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.cachedComponent
|
||||
import org.kiwix.kiwixmobile.core.extensions.viewModel
|
||||
import org.kiwix.kiwixmobile.core.page.PageFragment
|
||||
import org.kiwix.kiwixmobile.core.page.adapter.PageAdapter
|
||||
@ -25,7 +25,7 @@ class HistoryFragment : PageFragment() {
|
||||
override val switchIsChecked: Boolean by lazy { sharedPreferenceUtil.showHistoryAllBooks }
|
||||
|
||||
override fun inject(baseActivity: BaseActivity) {
|
||||
baseActivity.coreActivityComponent.inject(this)
|
||||
baseActivity.cachedComponent.inject(this)
|
||||
}
|
||||
|
||||
override val searchQueryHint: String by lazy { getString(R.string.search_history) }
|
||||
|
@ -37,7 +37,7 @@ data class ShowDeleteHistoryDialog(
|
||||
) : SideEffect<Unit> {
|
||||
@Inject lateinit var dialogShower: DialogShower
|
||||
override fun invokeWith(activity: AppCompatActivity) {
|
||||
activity.cachedComponent().inject(this)
|
||||
activity.cachedComponent.inject(this)
|
||||
dialogShower.show(if (state.isInSelectionState) DeleteSelectedHistory else DeleteAllHistory, {
|
||||
effects.offer(DeletePageItems(state, pageDao))
|
||||
})
|
||||
|
@ -19,22 +19,17 @@
|
||||
package org.kiwix.kiwixmobile.custom.di
|
||||
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import dagger.Binds
|
||||
import dagger.Module
|
||||
import dagger.multibindings.IntoMap
|
||||
import org.kiwix.kiwixmobile.core.di.ViewModelKey
|
||||
import org.kiwix.kiwixmobile.custom.CustomViewModelFactory
|
||||
import org.kiwix.kiwixmobile.core.di.modules.CoreViewModelModule
|
||||
import org.kiwix.kiwixmobile.custom.download.CustomDownloadViewModel
|
||||
|
||||
@Module
|
||||
@Module(includes = [CoreViewModelModule::class])
|
||||
abstract class CustomViewModelModule {
|
||||
@Binds
|
||||
@IntoMap
|
||||
@ViewModelKey(CustomDownloadViewModel::class)
|
||||
abstract fun bindCustomDownloadViewModel(zimManageViewModel: CustomDownloadViewModel): ViewModel
|
||||
|
||||
@Binds
|
||||
abstract fun bindViewModelFactory(factory: CustomViewModelFactory):
|
||||
ViewModelProvider.Factory
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user