#2238 cached component is now used in bookmarks and history

This commit is contained in:
HissPirat 2020-08-06 11:22:36 +02:00
parent df04a614d6
commit f18be13345
15 changed files with 29 additions and 33 deletions

View File

@ -19,7 +19,9 @@
package org.kiwix.kiwixmobile package org.kiwix.kiwixmobile
import org.kiwix.kiwixmobile.core.base.BaseActivity 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.di.components.KiwixComponent
import org.kiwix.kiwixmobile.main.KiwixMainActivity
private val BaseActivity.kiwixComponent: KiwixComponent private val BaseActivity.kiwixComponent: KiwixComponent
get() = kiwixApp()?.kiwixComponent ?: throw RuntimeException( get() = kiwixApp()?.kiwixComponent ?: throw RuntimeException(
@ -31,6 +33,9 @@ private val BaseActivity.kiwixComponent: KiwixComponent
private fun BaseActivity.kiwixApp() = applicationContext as? KiwixApp ?: application as? KiwixApp private fun BaseActivity.kiwixApp() = applicationContext as? KiwixApp ?: application as? KiwixApp
val BaseActivity.cachedComponent: KiwixActivityComponent
get() = (this as KiwixMainActivity).cachedComponent
internal inline val BaseActivity.kiwixActivityComponent internal inline val BaseActivity.kiwixActivityComponent
get() = kiwixComponent get() = kiwixComponent
.activityComponentBuilder() .activityComponentBuilder()

View File

@ -19,16 +19,15 @@
package org.kiwix.kiwixmobile.di.modules package org.kiwix.kiwixmobile.di.modules
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import dagger.Binds import dagger.Binds
import dagger.Module import dagger.Module
import dagger.multibindings.IntoMap import dagger.multibindings.IntoMap
import org.kiwix.kiwixmobile.KiwixViewModelFactory
import org.kiwix.kiwixmobile.core.di.ViewModelKey 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.language.viewmodel.LanguageViewModel
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel
@Module @Module(includes = [CoreViewModelModule::class])
abstract class KiwixViewModelModule { abstract class KiwixViewModelModule {
@Binds @Binds
@IntoMap @IntoMap
@ -39,8 +38,4 @@ abstract class KiwixViewModelModule {
@IntoMap @IntoMap
@ViewModelKey(LanguageViewModel::class) @ViewModelKey(LanguageViewModel::class)
abstract fun bindLanguageViewModel(languageViewModel: LanguageViewModel): ViewModel abstract fun bindLanguageViewModel(languageViewModel: LanguageViewModel): ViewModel
@Binds
abstract fun bindViewModelFactory(factory: KiwixViewModelFactory):
ViewModelProvider.Factory
} }

View File

@ -28,13 +28,13 @@ import android.view.ViewGroup
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
import kotlinx.android.synthetic.main.fragment_destination_library.go_to_downloads_button_no_files import kotlinx.android.synthetic.main.fragment_destination_library.go_to_downloads_button_no_files
import org.kiwix.kiwixmobile.R import org.kiwix.kiwixmobile.R
import org.kiwix.kiwixmobile.cachedComponent
import org.kiwix.kiwixmobile.core.base.BaseActivity import org.kiwix.kiwixmobile.core.base.BaseActivity
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.start import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.start
import org.kiwix.kiwixmobile.core.main.CoreMainActivity import org.kiwix.kiwixmobile.core.main.CoreMainActivity
import org.kiwix.kiwixmobile.core.utils.LanguageUtils import org.kiwix.kiwixmobile.core.utils.LanguageUtils
import org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.adapter.BookOnDiskDelegate import org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.adapter.BookOnDiskDelegate
import org.kiwix.kiwixmobile.local_file_transfer.LocalFileTransferActivity 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
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RequestMultiSelection import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RequestMultiSelection
import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RequestNavigateTo import org.kiwix.kiwixmobile.zim_manager.ZimManageViewModel.FileSelectActions.RequestNavigateTo
@ -56,7 +56,7 @@ class LocalLibraryFragment : ZimFileSelectFragment() {
} }
override fun inject(baseActivity: BaseActivity) { override fun inject(baseActivity: BaseActivity) {
(baseActivity as KiwixMainActivity).cachedComponent.inject(this) baseActivity.cachedComponent.inject(this)
} }
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {

View File

@ -29,19 +29,19 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.SearchView import androidx.appcompat.widget.SearchView
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
import org.kiwix.kiwixmobile.R import org.kiwix.kiwixmobile.R
import org.kiwix.kiwixmobile.cachedComponent
import org.kiwix.kiwixmobile.core.base.BaseActivity import org.kiwix.kiwixmobile.core.base.BaseActivity
import org.kiwix.kiwixmobile.core.base.FragmentActivityExtensions import org.kiwix.kiwixmobile.core.base.FragmentActivityExtensions
import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.start import org.kiwix.kiwixmobile.core.extensions.ActivityExtensions.start
import org.kiwix.kiwixmobile.core.main.CoreMainActivity import org.kiwix.kiwixmobile.core.main.CoreMainActivity
import org.kiwix.kiwixmobile.core.utils.SimpleTextListener import org.kiwix.kiwixmobile.core.utils.SimpleTextListener
import org.kiwix.kiwixmobile.language.LanguageActivity import org.kiwix.kiwixmobile.language.LanguageActivity
import org.kiwix.kiwixmobile.main.KiwixMainActivity
import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment import org.kiwix.kiwixmobile.zim_manager.library_view.LibraryFragment
class OnlineLibraryFragment : LibraryFragment(), FragmentActivityExtensions { class OnlineLibraryFragment : LibraryFragment(), FragmentActivityExtensions {
override fun inject(baseActivity: BaseActivity) { override fun inject(baseActivity: BaseActivity) {
(baseActivity as KiwixMainActivity).cachedComponent.inject(this) baseActivity.cachedComponent.inject(this)
} }
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {

View File

@ -36,6 +36,7 @@ import androidx.drawerlayout.widget.DrawerLayout
import kotlinx.android.synthetic.main.activity_kiwix_main.bottom_nav_view import kotlinx.android.synthetic.main.activity_kiwix_main.bottom_nav_view
import org.json.JSONArray import org.json.JSONArray
import org.kiwix.kiwixmobile.R import org.kiwix.kiwixmobile.R
import org.kiwix.kiwixmobile.cachedComponent
import org.kiwix.kiwixmobile.core.R.anim import org.kiwix.kiwixmobile.core.R.anim
import org.kiwix.kiwixmobile.core.base.BaseActivity import org.kiwix.kiwixmobile.core.base.BaseActivity
import org.kiwix.kiwixmobile.core.base.FragmentActivityExtensions.Super 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_CURRENT_TAB
import org.kiwix.kiwixmobile.core.utils.TAG_KIWIX import org.kiwix.kiwixmobile.core.utils.TAG_KIWIX
import org.kiwix.kiwixmobile.core.utils.UpdateUtils import org.kiwix.kiwixmobile.core.utils.UpdateUtils
import org.kiwix.kiwixmobile.main.KiwixMainActivity
import java.io.File import java.io.File
private const val HIDE_TAB_SWITCHER_DELAY: Long = 300 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() { class KiwixReaderFragment : CoreReaderFragment() {
override fun inject(baseActivity: BaseActivity) { override fun inject(baseActivity: BaseActivity) {
(baseActivity as KiwixMainActivity).cachedComponent.inject(this) baseActivity.cachedComponent.inject(this)
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {

View File

@ -23,9 +23,7 @@ import androidx.lifecycle.ViewModelProvider;
import java.util.Map; import java.util.Map;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Provider; import javax.inject.Provider;
import javax.inject.Singleton;
@Singleton
public class ViewModelFactory implements ViewModelProvider.Factory { public class ViewModelFactory implements ViewModelProvider.Factory {
private final Map<Class<? extends ViewModel>, Provider<ViewModel>> creators; private final Map<Class<? extends ViewModel>, Provider<ViewModel>> creators;

View File

@ -40,8 +40,8 @@ interface CoreActivityComponent {
fun inject(showDeleteBookmarksDialog: ShowDeleteBookmarksDialog) fun inject(showDeleteBookmarksDialog: ShowDeleteBookmarksDialog)
fun inject(showDeleteHistoryDialog: ShowDeleteHistoryDialog) fun inject(showDeleteHistoryDialog: ShowDeleteHistoryDialog)
fun inject(corePrefsFragment: CorePrefsFragment) fun inject(corePrefsFragment: CorePrefsFragment)
fun inject(historyActivity: HistoryFragment) fun inject(historyFragment: HistoryFragment)
fun inject(bookmarksActivity: BookmarksFragment) fun inject(bookmarksFragment: BookmarksFragment)
fun inject(addNoteDialog: AddNoteDialog) fun inject(addNoteDialog: AddNoteDialog)
@Subcomponent.Builder @Subcomponent.Builder

View File

@ -27,6 +27,7 @@ import eu.mhutti1.utils.storage.StorageSelectDialog
import org.kiwix.kiwixmobile.core.CoreApp import org.kiwix.kiwixmobile.core.CoreApp
import org.kiwix.kiwixmobile.core.StorageObserver import org.kiwix.kiwixmobile.core.StorageObserver
import org.kiwix.kiwixmobile.core.dao.FetchDownloadDao 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.NewBookDao
import org.kiwix.kiwixmobile.core.dao.NewBookmarksDao import org.kiwix.kiwixmobile.core.dao.NewBookmarksDao
import org.kiwix.kiwixmobile.core.dao.NewLanguagesDao 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.ZimFileReader
import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer
import org.kiwix.kiwixmobile.core.search.SearchActivity 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.settings.CoreSettingsActivity
import org.kiwix.kiwixmobile.core.utils.BookUtils import org.kiwix.kiwixmobile.core.utils.BookUtils
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
@ -85,6 +87,7 @@ interface CoreComponent {
fun dataSource(): DataSource fun dataSource(): DataSource
fun fetchDownloadDao(): FetchDownloadDao fun fetchDownloadDao(): FetchDownloadDao
fun newBookDao(): NewBookDao fun newBookDao(): NewBookDao
fun historyDao(): HistoryDao
fun newLanguagesDao(): NewLanguagesDao fun newLanguagesDao(): NewLanguagesDao
fun recentSearchDao(): NewRecentSearchDao fun recentSearchDao(): NewRecentSearchDao
fun newBookmarksDao(): NewBookmarksDao fun newBookmarksDao(): NewBookmarksDao
@ -94,6 +97,7 @@ interface CoreComponent {
fun bookDao(): BookDao fun bookDao(): BookDao
fun bookmarksDao(): BookmarksDao fun bookmarksDao(): BookmarksDao
fun notificationManager(): NotificationManager fun notificationManager(): NotificationManager
fun searchResultGenerator(): SearchResultGenerator
fun inject(application: CoreApp) fun inject(application: CoreApp)
fun inject(kiwixWebView: KiwixWebView) fun inject(kiwixWebView: KiwixWebView)

View File

@ -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.bookmark.viewmodel.BookmarkViewModel
import org.kiwix.kiwixmobile.core.page.history.viewmodel.HistoryViewModel import org.kiwix.kiwixmobile.core.page.history.viewmodel.HistoryViewModel
import org.kiwix.kiwixmobile.core.search.viewmodel.SearchViewModel import org.kiwix.kiwixmobile.core.search.viewmodel.SearchViewModel
import javax.inject.Singleton
@Module @Module
abstract class CoreViewModelModule { abstract class CoreViewModelModule {
@ -38,7 +37,6 @@ abstract class CoreViewModelModule {
abstract fun bindSearchViewModel(searchViewModel: SearchViewModel): ViewModel abstract fun bindSearchViewModel(searchViewModel: SearchViewModel): ViewModel
@Binds @Binds
@Singleton
abstract fun bindViewModelFactory(factory: ViewModelFactory): abstract fun bindViewModelFactory(factory: ViewModelFactory):
ViewModelProvider.Factory ViewModelProvider.Factory

View File

@ -84,7 +84,8 @@ object ActivityExtensions {
(this as CoreMainActivity).navigate(action) (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) = fun Activity.setupDrawerToggle(toolbar: Toolbar) =
(this as CoreMainActivity).setupDrawerToggle(toolbar) (this as CoreMainActivity).setupDrawerToggle(toolbar)

View File

@ -2,7 +2,7 @@ package org.kiwix.kiwixmobile.core.page.bookmark
import org.kiwix.kiwixmobile.core.R import org.kiwix.kiwixmobile.core.R
import org.kiwix.kiwixmobile.core.base.BaseActivity 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.extensions.viewModel
import org.kiwix.kiwixmobile.core.page.PageFragment import org.kiwix.kiwixmobile.core.page.PageFragment
import org.kiwix.kiwixmobile.core.page.adapter.PageAdapter import org.kiwix.kiwixmobile.core.page.adapter.PageAdapter
@ -22,7 +22,7 @@ class BookmarksFragment : PageFragment() {
override val switchIsChecked: Boolean by lazy { sharedPreferenceUtil.showBookmarksAllBooks } override val switchIsChecked: Boolean by lazy { sharedPreferenceUtil.showBookmarksAllBooks }
override fun inject(baseActivity: BaseActivity) { override fun inject(baseActivity: BaseActivity) {
baseActivity.coreActivityComponent.inject(this) baseActivity.cachedComponent.inject(this)
} }
override val searchQueryHint: String by lazy { getString(R.string.search_bookmarks) } override val searchQueryHint: String by lazy { getString(R.string.search_bookmarks) }

View File

@ -38,7 +38,7 @@ data class ShowDeleteBookmarksDialog(
) : SideEffect<Unit> { ) : SideEffect<Unit> {
@Inject lateinit var dialogShower: DialogShower @Inject lateinit var dialogShower: DialogShower
override fun invokeWith(activity: AppCompatActivity) { override fun invokeWith(activity: AppCompatActivity) {
activity.cachedComponent().inject(this) activity.cachedComponent.inject(this)
dialogShower.show(if (state.isInSelectionState) DeleteSelectedBookmarks else DeleteAllBookmarks, dialogShower.show(if (state.isInSelectionState) DeleteSelectedBookmarks else DeleteAllBookmarks,
{ effects.offer(DeletePageItems(state, pageDao)) }) { effects.offer(DeletePageItems(state, pageDao)) })
} }

View File

@ -2,7 +2,7 @@ package org.kiwix.kiwixmobile.core.page.history
import org.kiwix.kiwixmobile.core.R import org.kiwix.kiwixmobile.core.R
import org.kiwix.kiwixmobile.core.base.BaseActivity 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.extensions.viewModel
import org.kiwix.kiwixmobile.core.page.PageFragment import org.kiwix.kiwixmobile.core.page.PageFragment
import org.kiwix.kiwixmobile.core.page.adapter.PageAdapter import org.kiwix.kiwixmobile.core.page.adapter.PageAdapter
@ -25,7 +25,7 @@ class HistoryFragment : PageFragment() {
override val switchIsChecked: Boolean by lazy { sharedPreferenceUtil.showHistoryAllBooks } override val switchIsChecked: Boolean by lazy { sharedPreferenceUtil.showHistoryAllBooks }
override fun inject(baseActivity: BaseActivity) { override fun inject(baseActivity: BaseActivity) {
baseActivity.coreActivityComponent.inject(this) baseActivity.cachedComponent.inject(this)
} }
override val searchQueryHint: String by lazy { getString(R.string.search_history) } override val searchQueryHint: String by lazy { getString(R.string.search_history) }

View File

@ -37,7 +37,7 @@ data class ShowDeleteHistoryDialog(
) : SideEffect<Unit> { ) : SideEffect<Unit> {
@Inject lateinit var dialogShower: DialogShower @Inject lateinit var dialogShower: DialogShower
override fun invokeWith(activity: AppCompatActivity) { override fun invokeWith(activity: AppCompatActivity) {
activity.cachedComponent().inject(this) activity.cachedComponent.inject(this)
dialogShower.show(if (state.isInSelectionState) DeleteSelectedHistory else DeleteAllHistory, { dialogShower.show(if (state.isInSelectionState) DeleteSelectedHistory else DeleteAllHistory, {
effects.offer(DeletePageItems(state, pageDao)) effects.offer(DeletePageItems(state, pageDao))
}) })

View File

@ -19,22 +19,17 @@
package org.kiwix.kiwixmobile.custom.di package org.kiwix.kiwixmobile.custom.di
import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import dagger.Binds import dagger.Binds
import dagger.Module import dagger.Module
import dagger.multibindings.IntoMap import dagger.multibindings.IntoMap
import org.kiwix.kiwixmobile.core.di.ViewModelKey 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 import org.kiwix.kiwixmobile.custom.download.CustomDownloadViewModel
@Module @Module(includes = [CoreViewModelModule::class])
abstract class CustomViewModelModule { abstract class CustomViewModelModule {
@Binds @Binds
@IntoMap @IntoMap
@ViewModelKey(CustomDownloadViewModel::class) @ViewModelKey(CustomDownloadViewModel::class)
abstract fun bindCustomDownloadViewModel(zimManageViewModel: CustomDownloadViewModel): ViewModel abstract fun bindCustomDownloadViewModel(zimManageViewModel: CustomDownloadViewModel): ViewModel
@Binds
abstract fun bindViewModelFactory(factory: CustomViewModelFactory):
ViewModelProvider.Factory
} }