From f18be13345e3364738f9c1e9afd4060806e7c837 Mon Sep 17 00:00:00 2001 From: HissPirat Date: Thu, 6 Aug 2020 11:22:36 +0200 Subject: [PATCH] #2238 cached component is now used in bookmarks and history --- .../java/org/kiwix/kiwixmobile/ActivityExtensions.kt | 5 +++++ .../kiwix/kiwixmobile/di/modules/KiwixViewModelModule.kt | 9 ++------- .../nav/destination/library/LocalLibraryFragment.kt | 4 ++-- .../nav/destination/library/OnlineLibraryFragment.kt | 4 ++-- .../nav/destination/reader/KiwixReaderFragment.kt | 4 ++-- .../org/kiwix/kiwixmobile/core/ViewModelFactory.java | 2 -- .../core/di/components/CoreActivityComponent.kt | 4 ++-- .../kiwixmobile/core/di/components/CoreComponent.kt | 4 ++++ .../kiwixmobile/core/di/modules/CoreViewModelModule.kt | 2 -- .../kiwixmobile/core/extensions/ActivityExtensions.kt | 3 ++- .../kiwixmobile/core/page/bookmark/BookmarksFragment.kt | 4 ++-- .../viewmodel/effects/ShowDeleteBookmarksDialog.kt | 2 +- .../kiwixmobile/core/page/history/HistoryFragment.kt | 4 ++-- .../history/viewmodel/effects/ShowDeleteHistoryDialog.kt | 2 +- .../kiwix/kiwixmobile/custom/di/CustomViewModelModule.kt | 9 ++------- 15 files changed, 29 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/ActivityExtensions.kt b/app/src/main/java/org/kiwix/kiwixmobile/ActivityExtensions.kt index 86ce79a66..768121b04 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/ActivityExtensions.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/ActivityExtensions.kt @@ -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() diff --git a/app/src/main/java/org/kiwix/kiwixmobile/di/modules/KiwixViewModelModule.kt b/app/src/main/java/org/kiwix/kiwixmobile/di/modules/KiwixViewModelModule.kt index 3f2e17101..c3098ff6a 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/di/modules/KiwixViewModelModule.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/di/modules/KiwixViewModelModule.kt @@ -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 } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/LocalLibraryFragment.kt b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/LocalLibraryFragment.kt index ed8298383..8a29b999a 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/LocalLibraryFragment.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/LocalLibraryFragment.kt @@ -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) { diff --git a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/OnlineLibraryFragment.kt b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/OnlineLibraryFragment.kt index 9cc81edbe..8b582b7f0 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/OnlineLibraryFragment.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/library/OnlineLibraryFragment.kt @@ -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) { diff --git a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/reader/KiwixReaderFragment.kt b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/reader/KiwixReaderFragment.kt index a3d3d2917..5991bcaa5 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/reader/KiwixReaderFragment.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/nav/destination/reader/KiwixReaderFragment.kt @@ -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?) { diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/ViewModelFactory.java b/core/src/main/java/org/kiwix/kiwixmobile/core/ViewModelFactory.java index e2409eb15..b24e7f26a 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/ViewModelFactory.java +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/ViewModelFactory.java @@ -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, Provider> creators; diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/di/components/CoreActivityComponent.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/di/components/CoreActivityComponent.kt index 62657dc65..8d1ec216b 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/di/components/CoreActivityComponent.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/di/components/CoreActivityComponent.kt @@ -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 diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/di/components/CoreComponent.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/di/components/CoreComponent.kt index bcc8d0c7d..6064e06b1 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/di/components/CoreComponent.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/di/components/CoreComponent.kt @@ -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) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/di/modules/CoreViewModelModule.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/di/modules/CoreViewModelModule.kt index 13b4ecbf9..397244ab7 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/di/modules/CoreViewModelModule.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/di/modules/CoreViewModelModule.kt @@ -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 diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ActivityExtensions.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ActivityExtensions.kt index 5c9d2c3c9..66b641eb1 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ActivityExtensions.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/extensions/ActivityExtensions.kt @@ -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) diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/page/bookmark/BookmarksFragment.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/page/bookmark/BookmarksFragment.kt index fb3ba5503..622f2a8ce 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/page/bookmark/BookmarksFragment.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/page/bookmark/BookmarksFragment.kt @@ -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) } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/page/bookmark/viewmodel/effects/ShowDeleteBookmarksDialog.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/page/bookmark/viewmodel/effects/ShowDeleteBookmarksDialog.kt index ea07d6dba..50704f0b7 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/page/bookmark/viewmodel/effects/ShowDeleteBookmarksDialog.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/page/bookmark/viewmodel/effects/ShowDeleteBookmarksDialog.kt @@ -38,7 +38,7 @@ data class ShowDeleteBookmarksDialog( ) : SideEffect { @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)) }) } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/page/history/HistoryFragment.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/page/history/HistoryFragment.kt index 73d09a0f4..efb1ca3ff 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/page/history/HistoryFragment.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/page/history/HistoryFragment.kt @@ -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) } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/page/history/viewmodel/effects/ShowDeleteHistoryDialog.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/page/history/viewmodel/effects/ShowDeleteHistoryDialog.kt index feca3745f..3ce859b47 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/page/history/viewmodel/effects/ShowDeleteHistoryDialog.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/page/history/viewmodel/effects/ShowDeleteHistoryDialog.kt @@ -37,7 +37,7 @@ data class ShowDeleteHistoryDialog( ) : SideEffect { @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)) }) diff --git a/custom/src/main/java/org/kiwix/kiwixmobile/custom/di/CustomViewModelModule.kt b/custom/src/main/java/org/kiwix/kiwixmobile/custom/di/CustomViewModelModule.kt index 20ca6eee8..a004f26dd 100644 --- a/custom/src/main/java/org/kiwix/kiwixmobile/custom/di/CustomViewModelModule.kt +++ b/custom/src/main/java/org/kiwix/kiwixmobile/custom/di/CustomViewModelModule.kt @@ -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 }