#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
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()

View File

@ -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
}

View File

@ -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) {

View File

@ -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) {

View File

@ -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?) {

View File

@ -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;

View File

@ -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

View File

@ -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)

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.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

View File

@ -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)

View File

@ -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) }

View File

@ -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)) })
}

View File

@ -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) }

View File

@ -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))
})

View File

@ -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
}