From 49eebdf5548ddbf9de8c4918b70fd556141d2d44 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Tue, 27 Apr 2021 19:52:20 +0300 Subject: [PATCH] Specify LazyThreadSafetyMode for inject and viewModel delegates --- .../koitharu/kotatsu/base/ui/BasePreferenceFragment.kt | 2 +- .../java/org/koitharu/kotatsu/browser/BrowserClient.kt | 2 +- .../org/koitharu/kotatsu/details/ui/DetailsActivity.kt | 2 +- .../org/koitharu/kotatsu/details/ui/DetailsFragment.kt | 2 +- .../kotatsu/favourites/ui/FavouritesContainerFragment.kt | 4 +++- .../favourites/ui/categories/CategoriesActivity.kt | 4 +++- .../ui/categories/select/FavouriteCategoriesDialog.kt | 2 +- .../kotatsu/favourites/ui/list/FavouritesListFragment.kt | 2 +- .../koitharu/kotatsu/history/domain/HistoryRepository.kt | 9 ++++----- .../koitharu/kotatsu/history/ui/HistoryListFragment.kt | 2 +- .../org/koitharu/kotatsu/list/ui/ListModeSelectDialog.kt | 2 +- .../org/koitharu/kotatsu/local/ui/LocalListFragment.kt | 2 +- .../java/org/koitharu/kotatsu/main/ui/MainActivity.kt | 2 +- .../koitharu/kotatsu/main/ui/protect/ProtectActivity.kt | 2 +- .../org/koitharu/kotatsu/reader/ui/ReaderActivity.kt | 2 +- .../koitharu/kotatsu/remotelist/ui/RemoteListFragment.kt | 2 +- .../org/koitharu/kotatsu/search/ui/SearchFragment.kt | 2 +- .../kotatsu/search/ui/global/GlobalSearchFragment.kt | 2 +- .../koitharu/kotatsu/settings/HistorySettingsFragment.kt | 2 +- .../kotatsu/settings/backup/BackupDialogFragment.kt | 2 +- .../kotatsu/settings/backup/RestoreDialogFragment.kt | 2 +- .../kotatsu/settings/protect/ProtectSetupActivity.kt | 2 +- .../java/org/koitharu/kotatsu/tracker/TrackerModule.kt | 2 +- .../kotatsu/tracker/domain/TrackingRepository.kt | 2 -- .../java/org/koitharu/kotatsu/tracker/ui/FeedFragment.kt | 2 +- .../koitharu/kotatsu/widget/shelf/ShelfConfigActivity.kt | 2 +- 26 files changed, 32 insertions(+), 31 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/base/ui/BasePreferenceFragment.kt b/app/src/main/java/org/koitharu/kotatsu/base/ui/BasePreferenceFragment.kt index 06bce88f4..3be795aed 100644 --- a/app/src/main/java/org/koitharu/kotatsu/base/ui/BasePreferenceFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/base/ui/BasePreferenceFragment.kt @@ -14,7 +14,7 @@ import org.koitharu.kotatsu.core.prefs.AppSettings abstract class BasePreferenceFragment(@StringRes private val titleId: Int) : PreferenceFragmentCompat(), OnApplyWindowInsetsListener { - protected val settings by inject() + protected val settings by inject(mode = LazyThreadSafetyMode.NONE) override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) diff --git a/app/src/main/java/org/koitharu/kotatsu/browser/BrowserClient.kt b/app/src/main/java/org/koitharu/kotatsu/browser/BrowserClient.kt index d6d5f2de6..4a666d1c7 100644 --- a/app/src/main/java/org/koitharu/kotatsu/browser/BrowserClient.kt +++ b/app/src/main/java/org/koitharu/kotatsu/browser/BrowserClient.kt @@ -11,7 +11,7 @@ import org.koitharu.kotatsu.core.network.WebViewClientCompat class BrowserClient(private val callback: BrowserCallback) : WebViewClientCompat(), KoinComponent { - private val okHttp by inject() + private val okHttp by inject(mode = LazyThreadSafetyMode.SYNCHRONIZED) override fun onPageFinished(webView: WebView, url: String) { super.onPageFinished(webView, url) diff --git a/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsActivity.kt b/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsActivity.kt index e8560319a..eacf132f9 100644 --- a/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsActivity.kt @@ -41,7 +41,7 @@ import org.koitharu.kotatsu.utils.ext.getDisplayMessage class DetailsActivity : BaseActivity(), TabLayoutMediator.TabConfigurationStrategy { - private val viewModel by viewModel { + private val viewModel by viewModel(mode = LazyThreadSafetyMode.NONE) { parametersOf(MangaIntent.from(intent)) } diff --git a/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsFragment.kt b/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsFragment.kt index 00d3baa53..50a5d7302 100644 --- a/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/details/ui/DetailsFragment.kt @@ -35,7 +35,7 @@ class DetailsFragment : BaseFragment(), View.OnClickList View.OnLongClickListener { private val viewModel by sharedViewModel() - private val coil by inject() + private val coil by inject(mode = LazyThreadSafetyMode.NONE) private var tagsJob: Job? = null override fun onInflateView( diff --git a/app/src/main/java/org/koitharu/kotatsu/favourites/ui/FavouritesContainerFragment.kt b/app/src/main/java/org/koitharu/kotatsu/favourites/ui/FavouritesContainerFragment.kt index 22c0a957c..c20c2c6f3 100644 --- a/app/src/main/java/org/koitharu/kotatsu/favourites/ui/FavouritesContainerFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/favourites/ui/FavouritesContainerFragment.kt @@ -27,7 +27,9 @@ class FavouritesContainerFragment : BaseFragment(), override val recycledViewPool = RecyclerView.RecycledViewPool() - private val viewModel by viewModel() + private val viewModel by viewModel( + mode = LazyThreadSafetyMode.NONE + ) private val editDelegate by lazy(LazyThreadSafetyMode.NONE) { CategoriesEditDelegate(requireContext(), this) } diff --git a/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/CategoriesActivity.kt b/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/CategoriesActivity.kt index f28231c98..e2ad1153e 100644 --- a/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/CategoriesActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/CategoriesActivity.kt @@ -28,7 +28,9 @@ class CategoriesActivity : BaseActivity(), OnListItemClickListener, View.OnClickListener, CategoriesEditDelegate.CategoriesEditCallback { - private val viewModel by viewModel() + private val viewModel by viewModel( + mode = LazyThreadSafetyMode.NONE + ) private lateinit var adapter: CategoriesAdapter private lateinit var reorderHelper: ItemTouchHelper diff --git a/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/select/FavouriteCategoriesDialog.kt b/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/select/FavouriteCategoriesDialog.kt index 435944f9f..3736b959a 100644 --- a/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/select/FavouriteCategoriesDialog.kt +++ b/app/src/main/java/org/koitharu/kotatsu/favourites/ui/categories/select/FavouriteCategoriesDialog.kt @@ -25,7 +25,7 @@ class FavouriteCategoriesDialog : BaseBottomSheet, CategoriesEditDelegate.CategoriesEditCallback, View.OnClickListener { - private val viewModel by viewModel { + private val viewModel by viewModel(mode = LazyThreadSafetyMode.NONE) { parametersOf(requireNotNull(arguments?.getParcelable(MangaIntent.KEY_MANGA))) } diff --git a/app/src/main/java/org/koitharu/kotatsu/favourites/ui/list/FavouritesListFragment.kt b/app/src/main/java/org/koitharu/kotatsu/favourites/ui/list/FavouritesListFragment.kt index a78674817..dbfe5080a 100644 --- a/app/src/main/java/org/koitharu/kotatsu/favourites/ui/list/FavouritesListFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/favourites/ui/list/FavouritesListFragment.kt @@ -12,7 +12,7 @@ import org.koitharu.kotatsu.utils.ext.withArgs class FavouritesListFragment : MangaListFragment() { - override val viewModel by viewModel { + override val viewModel by viewModel(mode = LazyThreadSafetyMode.NONE) { parametersOf(categoryId) } diff --git a/app/src/main/java/org/koitharu/kotatsu/history/domain/HistoryRepository.kt b/app/src/main/java/org/koitharu/kotatsu/history/domain/HistoryRepository.kt index f123765fe..f582f9f6c 100644 --- a/app/src/main/java/org/koitharu/kotatsu/history/domain/HistoryRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/history/domain/HistoryRepository.kt @@ -6,8 +6,6 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.map import kotlinx.coroutines.withContext -import org.koin.core.component.KoinComponent -import org.koin.core.component.inject import org.koitharu.kotatsu.core.db.MangaDatabase import org.koitharu.kotatsu.core.db.entity.MangaEntity import org.koitharu.kotatsu.core.db.entity.TagEntity @@ -18,9 +16,10 @@ import org.koitharu.kotatsu.tracker.domain.TrackingRepository import org.koitharu.kotatsu.utils.ext.mapItems import org.koitharu.kotatsu.utils.ext.mapToSet -class HistoryRepository(private val db: MangaDatabase) : KoinComponent { - - private val trackingRepository by inject() +class HistoryRepository( + private val db: MangaDatabase, + private val trackingRepository: TrackingRepository, +) { suspend fun getList(offset: Int, limit: Int = 20): List { val entities = db.historyDao.findAll(offset, limit) diff --git a/app/src/main/java/org/koitharu/kotatsu/history/ui/HistoryListFragment.kt b/app/src/main/java/org/koitharu/kotatsu/history/ui/HistoryListFragment.kt index 76dc36ee8..311adb720 100644 --- a/app/src/main/java/org/koitharu/kotatsu/history/ui/HistoryListFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/history/ui/HistoryListFragment.kt @@ -15,7 +15,7 @@ import org.koitharu.kotatsu.utils.ext.ellipsize class HistoryListFragment : MangaListFragment() { - override val viewModel by viewModel() + override val viewModel by viewModel(mode = LazyThreadSafetyMode.NONE) override val isSwipeRefreshEnabled = false override fun onViewCreated(view: View, savedInstanceState: Bundle?) { diff --git a/app/src/main/java/org/koitharu/kotatsu/list/ui/ListModeSelectDialog.kt b/app/src/main/java/org/koitharu/kotatsu/list/ui/ListModeSelectDialog.kt index c8b94d176..56dc55d19 100644 --- a/app/src/main/java/org/koitharu/kotatsu/list/ui/ListModeSelectDialog.kt +++ b/app/src/main/java/org/koitharu/kotatsu/list/ui/ListModeSelectDialog.kt @@ -18,7 +18,7 @@ import org.koitharu.kotatsu.databinding.DialogListModeBinding class ListModeSelectDialog : AlertDialogFragment(), View.OnClickListener, SeekBar.OnSeekBarChangeListener { - private val settings by inject() + private val settings by inject(mode = LazyThreadSafetyMode.NONE) private var mode: ListMode = ListMode.GRID private var pendingGridSize: Int = 100 diff --git a/app/src/main/java/org/koitharu/kotatsu/local/ui/LocalListFragment.kt b/app/src/main/java/org/koitharu/kotatsu/local/ui/LocalListFragment.kt index bc30d30d4..ba700ecff 100644 --- a/app/src/main/java/org/koitharu/kotatsu/local/ui/LocalListFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/local/ui/LocalListFragment.kt @@ -20,7 +20,7 @@ import org.koitharu.kotatsu.utils.ext.ellipsize class LocalListFragment : MangaListFragment(), ActivityResultCallback { - override val viewModel by viewModel() + override val viewModel by viewModel(mode = LazyThreadSafetyMode.NONE) private val importCall = registerForActivityResult( ActivityResultContracts.OpenDocument(), this diff --git a/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt b/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt index 4bb59dd74..443ab118f 100644 --- a/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActivity.kt @@ -42,7 +42,7 @@ class MainActivity : BaseActivity(), NavigationView.OnNavigationItemSelectedListener, View.OnClickListener { - private val viewModel by viewModel() + private val viewModel by viewModel(mode = LazyThreadSafetyMode.NONE) private lateinit var drawerToggle: ActionBarDrawerToggle private var closeable: Closeable? = null diff --git a/app/src/main/java/org/koitharu/kotatsu/main/ui/protect/ProtectActivity.kt b/app/src/main/java/org/koitharu/kotatsu/main/ui/protect/ProtectActivity.kt index 97ca1df3a..19ad00c4b 100644 --- a/app/src/main/java/org/koitharu/kotatsu/main/ui/protect/ProtectActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/main/ui/protect/ProtectActivity.kt @@ -19,7 +19,7 @@ import org.koitharu.kotatsu.utils.ext.getDisplayMessage class ProtectActivity : BaseActivity(), TextView.OnEditorActionListener, TextWatcher, View.OnClickListener { - private val viewModel by viewModel() + private val viewModel by viewModel(mode = LazyThreadSafetyMode.NONE) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt index ec6655951..5b53b41ff 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/ReaderActivity.kt @@ -52,7 +52,7 @@ class ReaderActivity : BaseFullscreenActivity(), GridTouchHelper.OnGridTouchListener, OnPageSelectListener, ReaderConfigDialog.Callback, ActivityResultCallback, ReaderControlDelegate.OnInteractionListener { - private val viewModel by viewModel { + private val viewModel by viewModel(mode = LazyThreadSafetyMode.NONE) { parametersOf(MangaIntent.from(intent), intent?.getParcelableExtra(EXTRA_STATE)) } diff --git a/app/src/main/java/org/koitharu/kotatsu/remotelist/ui/RemoteListFragment.kt b/app/src/main/java/org/koitharu/kotatsu/remotelist/ui/RemoteListFragment.kt index 05f804366..b16d446d6 100644 --- a/app/src/main/java/org/koitharu/kotatsu/remotelist/ui/RemoteListFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/remotelist/ui/RemoteListFragment.kt @@ -15,7 +15,7 @@ import org.koitharu.kotatsu.utils.ext.withArgs class RemoteListFragment : MangaListFragment() { - override val viewModel by viewModel { + override val viewModel by viewModel(mode = LazyThreadSafetyMode.NONE) { parametersOf(source) } diff --git a/app/src/main/java/org/koitharu/kotatsu/search/ui/SearchFragment.kt b/app/src/main/java/org/koitharu/kotatsu/search/ui/SearchFragment.kt index 6f2621475..3ebafa633 100644 --- a/app/src/main/java/org/koitharu/kotatsu/search/ui/SearchFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/search/ui/SearchFragment.kt @@ -10,7 +10,7 @@ import org.koitharu.kotatsu.utils.ext.withArgs class SearchFragment : MangaListFragment() { - override val viewModel by viewModel { + override val viewModel by viewModel(mode = LazyThreadSafetyMode.NONE) { parametersOf(source, query) } diff --git a/app/src/main/java/org/koitharu/kotatsu/search/ui/global/GlobalSearchFragment.kt b/app/src/main/java/org/koitharu/kotatsu/search/ui/global/GlobalSearchFragment.kt index 2f6ca1ae3..4680fa8b1 100644 --- a/app/src/main/java/org/koitharu/kotatsu/search/ui/global/GlobalSearchFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/search/ui/global/GlobalSearchFragment.kt @@ -9,7 +9,7 @@ import org.koitharu.kotatsu.utils.ext.withArgs class GlobalSearchFragment : MangaListFragment() { - override val viewModel by viewModel { + override val viewModel by viewModel(mode = LazyThreadSafetyMode.NONE) { parametersOf(query) } diff --git a/app/src/main/java/org/koitharu/kotatsu/settings/HistorySettingsFragment.kt b/app/src/main/java/org/koitharu/kotatsu/settings/HistorySettingsFragment.kt index 13d142fc1..cf380cffe 100644 --- a/app/src/main/java/org/koitharu/kotatsu/settings/HistorySettingsFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/settings/HistorySettingsFragment.kt @@ -23,7 +23,7 @@ import org.koitharu.kotatsu.utils.ext.viewLifecycleScope class HistorySettingsFragment : BasePreferenceFragment(R.string.history_and_cache) { - private val trackerRepo by inject() + private val trackerRepo by inject(mode = LazyThreadSafetyMode.NONE) override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { addPreferencesFromResource(R.xml.pref_history) diff --git a/app/src/main/java/org/koitharu/kotatsu/settings/backup/BackupDialogFragment.kt b/app/src/main/java/org/koitharu/kotatsu/settings/backup/BackupDialogFragment.kt index f97d04d11..5cd21c629 100644 --- a/app/src/main/java/org/koitharu/kotatsu/settings/backup/BackupDialogFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/settings/backup/BackupDialogFragment.kt @@ -17,7 +17,7 @@ import java.io.File class BackupDialogFragment : AlertDialogFragment() { - private val viewModel by viewModel() + private val viewModel by viewModel(mode = LazyThreadSafetyMode.NONE) override fun onInflateView( inflater: LayoutInflater, diff --git a/app/src/main/java/org/koitharu/kotatsu/settings/backup/RestoreDialogFragment.kt b/app/src/main/java/org/koitharu/kotatsu/settings/backup/RestoreDialogFragment.kt index bd880aa06..5353cdefc 100644 --- a/app/src/main/java/org/koitharu/kotatsu/settings/backup/RestoreDialogFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/settings/backup/RestoreDialogFragment.kt @@ -25,7 +25,7 @@ class RestoreDialogFragment : AlertDialogFragment() { container: ViewGroup? ) = DialogProgressBinding.inflate(inflater, container, false) - private val viewModel by viewModel { + private val viewModel by viewModel(mode = LazyThreadSafetyMode.NONE) { parametersOf(arguments?.getString(ARG_FILE)?.toUriOrNull()) } diff --git a/app/src/main/java/org/koitharu/kotatsu/settings/protect/ProtectSetupActivity.kt b/app/src/main/java/org/koitharu/kotatsu/settings/protect/ProtectSetupActivity.kt index 5ab950d69..f57e5990a 100644 --- a/app/src/main/java/org/koitharu/kotatsu/settings/protect/ProtectSetupActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/settings/protect/ProtectSetupActivity.kt @@ -17,7 +17,7 @@ import org.koitharu.kotatsu.databinding.ActivitySetupProtectBinding class ProtectSetupActivity : BaseActivity(), TextWatcher, View.OnClickListener, TextView.OnEditorActionListener { - private val viewModel by viewModel() + private val viewModel by viewModel(mode = LazyThreadSafetyMode.NONE) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) diff --git a/app/src/main/java/org/koitharu/kotatsu/tracker/TrackerModule.kt b/app/src/main/java/org/koitharu/kotatsu/tracker/TrackerModule.kt index 0230444f9..a4bdd5230 100644 --- a/app/src/main/java/org/koitharu/kotatsu/tracker/TrackerModule.kt +++ b/app/src/main/java/org/koitharu/kotatsu/tracker/TrackerModule.kt @@ -9,7 +9,7 @@ import org.koitharu.kotatsu.tracker.ui.FeedViewModel val trackerModule get() = module { - single { TrackingRepository(get(), get()) } + single { TrackingRepository(get()) } viewModel { FeedViewModel(androidContext(), get()) } } \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/tracker/domain/TrackingRepository.kt b/app/src/main/java/org/koitharu/kotatsu/tracker/domain/TrackingRepository.kt index de24c70bd..8e00198de 100644 --- a/app/src/main/java/org/koitharu/kotatsu/tracker/domain/TrackingRepository.kt +++ b/app/src/main/java/org/koitharu/kotatsu/tracker/domain/TrackingRepository.kt @@ -5,12 +5,10 @@ import org.koitharu.kotatsu.core.db.MangaDatabase import org.koitharu.kotatsu.core.db.entity.TrackEntity import org.koitharu.kotatsu.core.db.entity.TrackLogEntity import org.koitharu.kotatsu.core.model.* -import org.koitharu.kotatsu.local.domain.LocalMangaRepository import java.util.* class TrackingRepository( private val db: MangaDatabase, - private val localMangaRepository: LocalMangaRepository ) { suspend fun getNewChaptersCount(mangaId: Long): Int { diff --git a/app/src/main/java/org/koitharu/kotatsu/tracker/ui/FeedFragment.kt b/app/src/main/java/org/koitharu/kotatsu/tracker/ui/FeedFragment.kt index c6e970ab9..4abb468a9 100644 --- a/app/src/main/java/org/koitharu/kotatsu/tracker/ui/FeedFragment.kt +++ b/app/src/main/java/org/koitharu/kotatsu/tracker/ui/FeedFragment.kt @@ -25,7 +25,7 @@ import org.koitharu.kotatsu.utils.progress.Progress class FeedFragment : BaseFragment(), PaginationScrollListener.Callback, OnListItemClickListener { - private val viewModel by viewModel() + private val viewModel by viewModel(mode = LazyThreadSafetyMode.NONE) private var feedAdapter: FeedAdapter? = null private var updateStatusSnackbar: Snackbar? = null diff --git a/app/src/main/java/org/koitharu/kotatsu/widget/shelf/ShelfConfigActivity.kt b/app/src/main/java/org/koitharu/kotatsu/widget/shelf/ShelfConfigActivity.kt index e8c506f5b..fabf1fbba 100644 --- a/app/src/main/java/org/koitharu/kotatsu/widget/shelf/ShelfConfigActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/widget/shelf/ShelfConfigActivity.kt @@ -29,7 +29,7 @@ import org.koitharu.kotatsu.widget.shelf.model.CategoryItem class ShelfConfigActivity : BaseActivity(), OnListItemClickListener { - private val viewModel by viewModel() + private val viewModel by viewModel(mode = LazyThreadSafetyMode.NONE) private lateinit var adapter: CategorySelectAdapter private lateinit var config: AppWidgetConfig