From 28ebbd9fcadd7c7295668da40065722a5a1ff83c Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Thu, 22 Aug 2024 03:00:15 +0530 Subject: [PATCH 1/5] Add serializable extensions --- .../eventplatform/BreadCrumbLogEvent.kt | 4 +++- .../commons/ImagePreviewViewModel.kt | 3 ++- .../descriptions/DescriptionEditActivity.kt | 23 +++++++++---------- .../descriptions/DescriptionEditFragment.kt | 5 ++-- .../diff/ArticleEditDetailsActivity.kt | 3 ++- .../diff/ArticleEditDetailsViewModel.kt | 4 ++-- .../org/wikipedia/edit/EditSectionActivity.kt | 3 ++- .../edit/insertmedia/InsertMediaViewModel.kt | 4 ++-- .../templates/TemplatesSearchViewModel.kt | 4 ++-- .../java/org/wikipedia/extensions/Bundle.kt | 5 ++++ .../java/org/wikipedia/extensions/Intent.kt | 5 ++++ .../feed/onthisday/OnThisDayActivity.kt | 3 ++- .../feed/onthisday/OnThisDayViewModel.kt | 3 ++- .../SuggestedEditsCardItemViewModel.kt | 4 ++-- .../org/wikipedia/gallery/GalleryActivity.kt | 3 ++- .../java/org/wikipedia/page/PageActivity.kt | 6 ++--- .../org/wikipedia/random/RandomActivity.kt | 3 ++- .../readinglist/AddToReadingListDialog.kt | 3 ++- .../org/wikipedia/search/SearchActivity.kt | 16 ++++++------- .../org/wikipedia/search/SearchFragment.kt | 3 ++- .../languages/WikipediaLanguagesActivity.kt | 3 ++- .../languages/WikipediaLanguagesFragment.kt | 5 ++-- .../SuggestedEditsCardsFragment.kt | 3 ++- .../SuggestedEditsCardsViewModel.kt | 3 ++- .../SuggestedEditsImageTagEditActivity.kt | 3 ++- .../suggestededits/SuggestionsActivity.kt | 3 ++- .../org/wikipedia/talk/TalkTopicsActivity.kt | 3 ++- .../org/wikipedia/theme/ThemeChooserDialog.kt | 3 ++- .../WatchlistExpiryDialogViewModel.kt | 3 ++- 29 files changed, 81 insertions(+), 55 deletions(-) diff --git a/app/src/main/java/org/wikipedia/analytics/eventplatform/BreadCrumbLogEvent.kt b/app/src/main/java/org/wikipedia/analytics/eventplatform/BreadCrumbLogEvent.kt index 19223e4b763..01bc6989273 100644 --- a/app/src/main/java/org/wikipedia/analytics/eventplatform/BreadCrumbLogEvent.kt +++ b/app/src/main/java/org/wikipedia/analytics/eventplatform/BreadCrumbLogEvent.kt @@ -11,6 +11,7 @@ import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import org.wikipedia.Constants import org.wikipedia.WikipediaApp +import org.wikipedia.extensions.serializableExtra import org.wikipedia.settings.SettingsActivity import org.wikipedia.util.log.L @@ -56,7 +57,8 @@ class BreadCrumbLogEvent( } fun logScreenShown(context: Context, fragment: Fragment? = null) { - val invokeSource = (fragment?.activity?.intent ?: (context as? Activity)?.intent)?.getSerializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) as? Constants.InvokeSource + val intent = (fragment?.activity?.intent ?: (context as? Activity)?.intent) + val invokeSource = intent?.serializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) EventPlatformClient.submit(BreadCrumbLogEvent(BreadCrumbViewUtil.getReadableScreenName(context, fragment), "show" + invokeSource?.let { ".from." + it.value }.orEmpty())) } diff --git a/app/src/main/java/org/wikipedia/commons/ImagePreviewViewModel.kt b/app/src/main/java/org/wikipedia/commons/ImagePreviewViewModel.kt index 9fe4a06e8bc..bb1e331af53 100644 --- a/app/src/main/java/org/wikipedia/commons/ImagePreviewViewModel.kt +++ b/app/src/main/java/org/wikipedia/commons/ImagePreviewViewModel.kt @@ -13,6 +13,7 @@ import org.wikipedia.Constants import org.wikipedia.dataclient.ServiceFactory import org.wikipedia.descriptions.DescriptionEditActivity import org.wikipedia.extensions.parcelable +import org.wikipedia.extensions.serializable import org.wikipedia.suggestededits.PageSummaryForEdit import org.wikipedia.util.Resource @@ -22,7 +23,7 @@ class ImagePreviewViewModel(bundle: Bundle) : ViewModel() { _uiState.value = Resource.Error(throwable) } var pageSummaryForEdit = bundle.parcelable(ImagePreviewDialog.ARG_SUMMARY)!! - var action = bundle.getSerializable(ImagePreviewDialog.ARG_ACTION) as DescriptionEditActivity.Action? + var action = bundle.serializable(ImagePreviewDialog.ARG_ACTION) private val _uiState = MutableStateFlow(Resource()) val uiState = _uiState.asStateFlow() diff --git a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditActivity.kt b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditActivity.kt index 162a25325b7..f4153e4e1cb 100644 --- a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditActivity.kt +++ b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditActivity.kt @@ -9,6 +9,7 @@ import org.wikipedia.Constants.InvokeSource import org.wikipedia.activity.SingleFragmentActivity import org.wikipedia.commons.ImagePreviewDialog import org.wikipedia.extensions.parcelableExtra +import org.wikipedia.extensions.serializableExtra import org.wikipedia.history.HistoryEntry import org.wikipedia.page.ExclusiveBottomSheetPresenter import org.wikipedia.page.PageTitle @@ -24,7 +25,7 @@ class DescriptionEditActivity : SingleFragmentActivity( override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - val action = intent.getSerializableExtra(Constants.INTENT_EXTRA_ACTION) as Action + val action = intent.serializableExtra(Constants.INTENT_EXTRA_ACTION) if (action == Action.ADD_DESCRIPTION && Prefs.isDescriptionEditTutorialEnabled) { Prefs.isDescriptionEditTutorialEnabled = false @@ -33,15 +34,14 @@ class DescriptionEditActivity : SingleFragmentActivity( } public override fun createFragment(): DescriptionEditFragment { - val invokeSource = intent.getSerializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource - val action = intent.getSerializableExtra(Constants.INTENT_EXTRA_ACTION) as Action - val title = intent.parcelableExtra(Constants.ARG_TITLE)!! - return DescriptionEditFragment.newInstance(title, - intent.getStringExtra(EXTRA_HIGHLIGHT_TEXT), - intent.parcelableExtra(EXTRA_SOURCE_SUMMARY), - intent.parcelableExtra(EXTRA_TARGET_SUMMARY), - action, - invokeSource) + return DescriptionEditFragment.newInstance( + intent.parcelableExtra(Constants.ARG_TITLE)!!, + intent.getStringExtra(EXTRA_HIGHLIGHT_TEXT), + intent.parcelableExtra(EXTRA_SOURCE_SUMMARY), + intent.parcelableExtra(EXTRA_TARGET_SUMMARY), + intent.serializableExtra(Constants.INTENT_EXTRA_ACTION)!!, + intent.serializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE)!! + ) } override fun onBackPressed() { @@ -67,8 +67,7 @@ class DescriptionEditActivity : SingleFragmentActivity( } else { ExclusiveBottomSheetPresenter.show(supportFragmentManager, LinkPreviewDialog.newInstance(HistoryEntry(summary.pageTitle, - if (intent.hasExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) && intent.getSerializableExtra - (Constants.INTENT_EXTRA_INVOKE_SOURCE) === InvokeSource.PAGE_ACTIVITY) + if (intent.serializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) === InvokeSource.PAGE_ACTIVITY) HistoryEntry.SOURCE_EDIT_DESCRIPTION else HistoryEntry.SOURCE_SUGGESTED_EDITS))) } } diff --git a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.kt b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.kt index 30e3435c9b0..d36317ef6ff 100644 --- a/app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.kt +++ b/app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.kt @@ -43,6 +43,7 @@ import org.wikipedia.dataclient.okhttp.OkHttpConnectionFactory import org.wikipedia.dataclient.wikidata.EntityPostResponse import org.wikipedia.edit.EditTags import org.wikipedia.extensions.parcelable +import org.wikipedia.extensions.serializable import org.wikipedia.language.AppLanguageLookUpTable import org.wikipedia.login.LoginActivity import org.wikipedia.notifications.AnonymousNotificationHelper @@ -132,8 +133,8 @@ class DescriptionEditFragment : Fragment() { super.onCreate(savedInstanceState) pageTitle = requireArguments().parcelable(Constants.ARG_TITLE)!! highlightText = requireArguments().getString(ARG_HIGHLIGHT_TEXT) - action = requireArguments().getSerializable(ARG_ACTION) as DescriptionEditActivity.Action - invokeSource = requireArguments().getSerializable(Constants.INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource + action = requireArguments().serializable(ARG_ACTION)!! + invokeSource = requireArguments().serializable(Constants.INTENT_EXTRA_INVOKE_SOURCE)!! sourceSummary = requireArguments().parcelable(ARG_SOURCE_SUMMARY) targetSummary = requireArguments().parcelable(ARG_TARGET_SUMMARY) EditAttemptStepEvent.logInit(pageTitle, EditAttemptStepEvent.INTERFACE_OTHER) diff --git a/app/src/main/java/org/wikipedia/diff/ArticleEditDetailsActivity.kt b/app/src/main/java/org/wikipedia/diff/ArticleEditDetailsActivity.kt index 0b656d2577a..b32df0b238b 100644 --- a/app/src/main/java/org/wikipedia/diff/ArticleEditDetailsActivity.kt +++ b/app/src/main/java/org/wikipedia/diff/ArticleEditDetailsActivity.kt @@ -9,6 +9,7 @@ import org.wikipedia.Constants.InvokeSource import org.wikipedia.activity.BaseActivity import org.wikipedia.databinding.ActivityArticleEditDetailsBinding import org.wikipedia.extensions.parcelableExtra +import org.wikipedia.extensions.serializableExtra import org.wikipedia.page.PageTitle class ArticleEditDetailsActivity : BaseActivity() { @@ -25,7 +26,7 @@ class ArticleEditDetailsActivity : BaseActivity() { intent.getIntExtra(EXTRA_PAGE_ID, -1), intent.getLongExtra(EXTRA_EDIT_REVISION_FROM, -1), intent.getLongExtra(EXTRA_EDIT_REVISION_TO, -1), - intent.getSerializableExtra(INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource) + intent.serializableExtra(INTENT_EXTRA_INVOKE_SOURCE)!!) if (savedInstanceState == null) { supportFragmentManager.commit { add(binding.fragmentContainer.id, fragment) } diff --git a/app/src/main/java/org/wikipedia/diff/ArticleEditDetailsViewModel.kt b/app/src/main/java/org/wikipedia/diff/ArticleEditDetailsViewModel.kt index 760b843142e..00b67eef65a 100644 --- a/app/src/main/java/org/wikipedia/diff/ArticleEditDetailsViewModel.kt +++ b/app/src/main/java/org/wikipedia/diff/ArticleEditDetailsViewModel.kt @@ -24,6 +24,7 @@ import org.wikipedia.dataclient.wikidata.EntityPostResponse import org.wikipedia.edit.Edit import org.wikipedia.edit.EditTags import org.wikipedia.extensions.parcelable +import org.wikipedia.extensions.serializable import org.wikipedia.page.PageTitle import org.wikipedia.suggestededits.provider.EditingSuggestionsProvider import org.wikipedia.util.Resource @@ -31,8 +32,7 @@ import org.wikipedia.util.SingleLiveData import org.wikipedia.watchlist.WatchlistExpiry class ArticleEditDetailsViewModel(bundle: Bundle) : ViewModel() { - - private val invokeSource = bundle.getSerializable(Constants.INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource + private val invokeSource = bundle.serializable(Constants.INTENT_EXTRA_INVOKE_SOURCE) val watchedStatus = MutableLiveData>() val rollbackRights = MutableLiveData>() diff --git a/app/src/main/java/org/wikipedia/edit/EditSectionActivity.kt b/app/src/main/java/org/wikipedia/edit/EditSectionActivity.kt index 3d29eab2b0a..158f37db6e7 100644 --- a/app/src/main/java/org/wikipedia/edit/EditSectionActivity.kt +++ b/app/src/main/java/org/wikipedia/edit/EditSectionActivity.kt @@ -52,6 +52,7 @@ import org.wikipedia.edit.preview.EditPreviewFragment import org.wikipedia.edit.richtext.SyntaxHighlighter import org.wikipedia.edit.summaries.EditSummaryFragment import org.wikipedia.extensions.parcelableExtra +import org.wikipedia.extensions.serializableExtra import org.wikipedia.history.HistoryEntry import org.wikipedia.login.LoginActivity import org.wikipedia.notifications.AnonymousNotificationHelper @@ -182,7 +183,7 @@ class EditSectionActivity : BaseActivity(), ThemeChooserDialog.Callback, EditPre sectionID = intent.getIntExtra(EXTRA_SECTION_ID, -1) sectionAnchor = intent.getStringExtra(EXTRA_SECTION_ANCHOR) textToHighlight = intent.getStringExtra(EXTRA_HIGHLIGHT_TEXT) - invokeSource = intent.getSerializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) as Constants.InvokeSource + invokeSource = intent.serializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE)!! setSupportActionBar(binding.toolbar) supportActionBar?.title = "" diff --git a/app/src/main/java/org/wikipedia/edit/insertmedia/InsertMediaViewModel.kt b/app/src/main/java/org/wikipedia/edit/insertmedia/InsertMediaViewModel.kt index 1c136e20920..3e94f9969fa 100644 --- a/app/src/main/java/org/wikipedia/edit/insertmedia/InsertMediaViewModel.kt +++ b/app/src/main/java/org/wikipedia/edit/insertmedia/InsertMediaViewModel.kt @@ -16,6 +16,7 @@ import org.wikipedia.dataclient.Service import org.wikipedia.dataclient.ServiceFactory import org.wikipedia.dataclient.WikiSite import org.wikipedia.extensions.parcelable +import org.wikipedia.extensions.serializable import org.wikipedia.page.PageTitle import org.wikipedia.staticdata.FileAliasData import org.wikipedia.util.L10nUtil @@ -23,8 +24,7 @@ import org.wikipedia.util.StringUtil import org.wikipedia.util.log.L class InsertMediaViewModel(bundle: Bundle) : ViewModel() { - - val invokeSource = bundle.getSerializable(Constants.INTENT_EXTRA_INVOKE_SOURCE) as Constants.InvokeSource + val invokeSource = bundle.serializable(Constants.INTENT_EXTRA_INVOKE_SOURCE) val wikiSite = bundle.parcelable(Constants.ARG_WIKISITE)!! var searchQuery = StringUtil.removeHTMLTags(StringUtil.removeUnderscores(bundle.getString(InsertMediaActivity.EXTRA_SEARCH_QUERY)!!)) val originalSearchQuery = searchQuery diff --git a/app/src/main/java/org/wikipedia/edit/templates/TemplatesSearchViewModel.kt b/app/src/main/java/org/wikipedia/edit/templates/TemplatesSearchViewModel.kt index c977c6fa8e3..8c9fabe00df 100644 --- a/app/src/main/java/org/wikipedia/edit/templates/TemplatesSearchViewModel.kt +++ b/app/src/main/java/org/wikipedia/edit/templates/TemplatesSearchViewModel.kt @@ -17,13 +17,13 @@ import org.wikipedia.dataclient.ServiceFactory import org.wikipedia.dataclient.WikiSite import org.wikipedia.dataclient.mwapi.TemplateDataResponse import org.wikipedia.extensions.parcelable +import org.wikipedia.extensions.serializable import org.wikipedia.page.Namespace import org.wikipedia.page.PageTitle import org.wikipedia.settings.Prefs class TemplatesSearchViewModel(bundle: Bundle) : ViewModel() { - - val invokeSource = bundle.getSerializable(Constants.INTENT_EXTRA_INVOKE_SOURCE) as Constants.InvokeSource + val invokeSource = bundle.serializable(Constants.INTENT_EXTRA_INVOKE_SOURCE) val wikiSite = bundle.parcelable(Constants.ARG_WIKISITE)!! val isFromDiff = bundle.getBoolean(TemplatesSearchActivity.EXTRA_FROM_DIFF, false) var searchQuery: String? = null diff --git a/app/src/main/java/org/wikipedia/extensions/Bundle.kt b/app/src/main/java/org/wikipedia/extensions/Bundle.kt index a9da71edf29..1ac5031f18c 100644 --- a/app/src/main/java/org/wikipedia/extensions/Bundle.kt +++ b/app/src/main/java/org/wikipedia/extensions/Bundle.kt @@ -3,6 +3,7 @@ package org.wikipedia.extensions import android.os.Bundle import android.os.Parcelable import androidx.core.os.BundleCompat +import java.io.Serializable inline fun Bundle.parcelable(key: String?): T? { return BundleCompat.getParcelable(this, key, T::class.java) @@ -11,3 +12,7 @@ inline fun Bundle.parcelable(key: String?): T? { inline fun Bundle.parcelableArrayList(key: String?): ArrayList? { return BundleCompat.getParcelableArrayList(this, key, T::class.java) } + +inline fun Bundle.serializable(key: String?): T? { + return BundleCompat.getSerializable(this, key, T::class.java) +} diff --git a/app/src/main/java/org/wikipedia/extensions/Intent.kt b/app/src/main/java/org/wikipedia/extensions/Intent.kt index 2aef356fb06..55b3b70a427 100644 --- a/app/src/main/java/org/wikipedia/extensions/Intent.kt +++ b/app/src/main/java/org/wikipedia/extensions/Intent.kt @@ -3,7 +3,12 @@ package org.wikipedia.extensions import android.content.Intent import android.os.Parcelable import androidx.core.content.IntentCompat +import java.io.Serializable inline fun Intent.parcelableExtra(key: String?): T? { return IntentCompat.getParcelableExtra(this, key, T::class.java) } + +inline fun Intent.serializableExtra(key: String?): T? { + return IntentCompat.getSerializableExtra(this, key, T::class.java) +} diff --git a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayActivity.kt b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayActivity.kt index f36de6cba94..5b8d16a89f8 100644 --- a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayActivity.kt +++ b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayActivity.kt @@ -7,6 +7,7 @@ import org.wikipedia.Constants.InvokeSource import org.wikipedia.activity.SingleFragmentActivity import org.wikipedia.dataclient.WikiSite import org.wikipedia.extensions.parcelableExtra +import org.wikipedia.extensions.serializableExtra class OnThisDayActivity : SingleFragmentActivity() { @@ -14,7 +15,7 @@ class OnThisDayActivity : SingleFragmentActivity() { return OnThisDayFragment.newInstance(intent.getIntExtra(EXTRA_AGE, 0), intent.parcelableExtra(Constants.ARG_WIKISITE)!!, intent.getIntExtra(EXTRA_YEAR, -1), - intent.getSerializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource) + intent.serializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE)!!) } companion object { diff --git a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayViewModel.kt b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayViewModel.kt index 61d9ba3d317..ed408b46644 100644 --- a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayViewModel.kt +++ b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayViewModel.kt @@ -12,6 +12,7 @@ import org.wikipedia.Constants import org.wikipedia.dataclient.ServiceFactory import org.wikipedia.dataclient.WikiSite import org.wikipedia.extensions.parcelable +import org.wikipedia.extensions.serializable import org.wikipedia.util.DateUtil import org.wikipedia.util.Resource import java.util.Calendar @@ -25,7 +26,7 @@ class OnThisDayViewModel(bundle: Bundle) : ViewModel() { val wikiSite = bundle.parcelable(Constants.ARG_WIKISITE)!! val age = bundle.getInt(OnThisDayActivity.EXTRA_AGE, 0) val year = bundle.getInt(OnThisDayActivity.EXTRA_YEAR, 0) - val invokeSource = bundle.getSerializable(Constants.INTENT_EXTRA_INVOKE_SOURCE) as Constants.InvokeSource + val invokeSource = bundle.serializable(Constants.INTENT_EXTRA_INVOKE_SOURCE) val date = DateUtil.getDefaultDateFor(age) private val _uiState = MutableStateFlow(Resource>()) diff --git a/app/src/main/java/org/wikipedia/feed/suggestededits/SuggestedEditsCardItemViewModel.kt b/app/src/main/java/org/wikipedia/feed/suggestededits/SuggestedEditsCardItemViewModel.kt index 60804345ca8..3bc83cd9eb8 100644 --- a/app/src/main/java/org/wikipedia/feed/suggestededits/SuggestedEditsCardItemViewModel.kt +++ b/app/src/main/java/org/wikipedia/feed/suggestededits/SuggestedEditsCardItemViewModel.kt @@ -14,6 +14,7 @@ import org.wikipedia.dataclient.ServiceFactory import org.wikipedia.dataclient.WikiSite import org.wikipedia.dataclient.mwapi.MwQueryPage import org.wikipedia.descriptions.DescriptionEditActivity +import org.wikipedia.extensions.serializable import org.wikipedia.page.Namespace import org.wikipedia.page.PageTitle import org.wikipedia.suggestededits.PageSummaryForEdit @@ -22,9 +23,8 @@ import org.wikipedia.util.Resource import org.wikipedia.util.StringUtil class SuggestedEditsCardItemViewModel(bundle: Bundle) : ViewModel() { - val age = bundle.getInt(SuggestedEditsCardItemFragment.EXTRA_AGE) - var cardActionType = bundle.getSerializable(SuggestedEditsCardItemFragment.EXTRA_ACTION_TYPE) as DescriptionEditActivity.Action + var cardActionType = bundle.serializable(SuggestedEditsCardItemFragment.EXTRA_ACTION_TYPE) var sourceSummaryForEdit: PageSummaryForEdit? = null var targetSummaryForEdit: PageSummaryForEdit? = null var imageTagPage: MwQueryPage? = null diff --git a/app/src/main/java/org/wikipedia/gallery/GalleryActivity.kt b/app/src/main/java/org/wikipedia/gallery/GalleryActivity.kt index 45e55ea38a3..a14cdcffeb2 100644 --- a/app/src/main/java/org/wikipedia/gallery/GalleryActivity.kt +++ b/app/src/main/java/org/wikipedia/gallery/GalleryActivity.kt @@ -37,6 +37,7 @@ import org.wikipedia.dataclient.Service import org.wikipedia.dataclient.WikiSite import org.wikipedia.dataclient.wikidata.Entities import org.wikipedia.descriptions.DescriptionEditActivity +import org.wikipedia.extensions.serializableExtra import org.wikipedia.history.HistoryEntry import org.wikipedia.page.ExclusiveBottomSheetPresenter import org.wikipedia.page.LinkMovementMethodExt @@ -81,7 +82,7 @@ class GalleryActivity : BaseActivity(), LinkPreviewDialog.LoadPageCallback, Gall private val requestAddCaptionLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { if (it.resultCode == RESULT_OK) { - val action = it.data?.getSerializableExtra(Constants.INTENT_EXTRA_ACTION) as DescriptionEditActivity.Action? + val action = it.data?.serializableExtra(Constants.INTENT_EXTRA_ACTION) SuggestedEditsSnackbars.show(this, action, true, targetLanguageCode, false) fetchGalleryDescription(currentItem) setResult(ACTIVITY_RESULT_IMAGE_CAPTION_ADDED) diff --git a/app/src/main/java/org/wikipedia/page/PageActivity.kt b/app/src/main/java/org/wikipedia/page/PageActivity.kt index 023e620aaa7..75ab9f48138 100644 --- a/app/src/main/java/org/wikipedia/page/PageActivity.kt +++ b/app/src/main/java/org/wikipedia/page/PageActivity.kt @@ -54,6 +54,7 @@ import org.wikipedia.edit.EditSectionActivity import org.wikipedia.events.ArticleSavedOrDeletedEvent import org.wikipedia.events.ChangeTextSizeEvent import org.wikipedia.extensions.parcelableExtra +import org.wikipedia.extensions.serializableExtra import org.wikipedia.gallery.GalleryActivity import org.wikipedia.history.HistoryEntry import org.wikipedia.language.LangLinksActivity @@ -145,11 +146,8 @@ class PageActivity : BaseActivity(), PageFragment.Callback, LinkPreviewDialog.Lo private val requestSuggestedEditsLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { if (it.resultCode == RESULT_OK || it.resultCode == DescriptionEditSuccessActivity.RESULT_OK_FROM_EDIT_SUCCESS) { pageFragment.refreshPage() - val data = it.data val editLanguage = pageFragment.leadImageEditLang.orEmpty().ifEmpty { app.languageState.appLanguageCode } - val action = if (data != null && data.hasExtra(Constants.INTENT_EXTRA_ACTION)) - data.getSerializableExtra(Constants.INTENT_EXTRA_ACTION) as DescriptionEditActivity.Action? - else null + val action = it.data?.serializableExtra(Constants.INTENT_EXTRA_ACTION) SuggestedEditsSnackbars.show(this, action, it.resultCode != DescriptionEditSuccessActivity.RESULT_OK_FROM_EDIT_SUCCESS, editLanguage, action !== DescriptionEditActivity.Action.ADD_DESCRIPTION && action !== DescriptionEditActivity.Action.TRANSLATE_DESCRIPTION) { diff --git a/app/src/main/java/org/wikipedia/random/RandomActivity.kt b/app/src/main/java/org/wikipedia/random/RandomActivity.kt index ee2d821ccaf..d624d582fc8 100644 --- a/app/src/main/java/org/wikipedia/random/RandomActivity.kt +++ b/app/src/main/java/org/wikipedia/random/RandomActivity.kt @@ -8,6 +8,7 @@ import org.wikipedia.Constants.InvokeSource import org.wikipedia.activity.SingleFragmentActivity import org.wikipedia.dataclient.WikiSite import org.wikipedia.extensions.parcelableExtra +import org.wikipedia.extensions.serializableExtra class RandomActivity : SingleFragmentActivity() { @@ -28,6 +29,6 @@ class RandomActivity : SingleFragmentActivity() { public override fun createFragment(): RandomFragment { return RandomFragment.newInstance(intent.parcelableExtra(Constants.ARG_WIKISITE)!!, - intent.getSerializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource) + intent.serializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE)!!) } } diff --git a/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.kt b/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.kt index 6f64027acf6..83e69b6889d 100644 --- a/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.kt +++ b/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.kt @@ -22,6 +22,7 @@ import org.wikipedia.R import org.wikipedia.database.AppDatabase import org.wikipedia.databinding.DialogAddToReadingListBinding import org.wikipedia.extensions.parcelableArrayList +import org.wikipedia.extensions.serializable import org.wikipedia.page.ExtendedBottomSheetDialogFragment import org.wikipedia.page.PageTitle import org.wikipedia.readinglist.ReadingListTitleDialog.readingListTitleDialog @@ -49,7 +50,7 @@ open class AddToReadingListDialog : ExtendedBottomSheetDialogFragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) titles = requireArguments().parcelableArrayList(PAGE_TITLE_LIST)!! - invokeSource = requireArguments().getSerializable(Constants.INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource + invokeSource = requireArguments().serializable(Constants.INTENT_EXTRA_INVOKE_SOURCE)!! showDefaultList = requireArguments().getBoolean(SHOW_DEFAULT_LIST) adapter = ReadingListAdapter() } diff --git a/app/src/main/java/org/wikipedia/search/SearchActivity.kt b/app/src/main/java/org/wikipedia/search/SearchActivity.kt index 6aefb377653..980a1aa2581 100644 --- a/app/src/main/java/org/wikipedia/search/SearchActivity.kt +++ b/app/src/main/java/org/wikipedia/search/SearchActivity.kt @@ -5,19 +5,17 @@ import android.content.Intent import org.wikipedia.Constants import org.wikipedia.Constants.InvokeSource import org.wikipedia.activity.SingleFragmentActivity +import org.wikipedia.extensions.serializableExtra import org.wikipedia.util.log.L class SearchActivity : SingleFragmentActivity() { public override fun createFragment(): SearchFragment { - var source = intent.getSerializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource? - if (source == null) { - when { - Intent.ACTION_SEND == intent.action -> { source = InvokeSource.INTENT_SHARE } - Intent.ACTION_PROCESS_TEXT == intent.action -> { source = InvokeSource.INTENT_PROCESS_TEXT } - else -> { - source = InvokeSource.INTENT_UNKNOWN - L.logRemoteErrorIfProd(RuntimeException("Unknown intent when launching SearchActivity: " + intent.action.orEmpty())) - } + val source = intent.serializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) ?: when { + Intent.ACTION_SEND == intent.action -> InvokeSource.INTENT_SHARE + Intent.ACTION_PROCESS_TEXT == intent.action -> InvokeSource.INTENT_PROCESS_TEXT + else -> { + L.logRemoteErrorIfProd(RuntimeException("Unknown intent when launching SearchActivity: " + intent.action.orEmpty())) + InvokeSource.INTENT_UNKNOWN } } return SearchFragment.newInstance(source, intent.getStringExtra(QUERY_EXTRA), intent.getBooleanExtra(EXTRA_RETURN_LINK, false)) diff --git a/app/src/main/java/org/wikipedia/search/SearchFragment.kt b/app/src/main/java/org/wikipedia/search/SearchFragment.kt index f8395c90f5f..d772248d0bf 100644 --- a/app/src/main/java/org/wikipedia/search/SearchFragment.kt +++ b/app/src/main/java/org/wikipedia/search/SearchFragment.kt @@ -25,6 +25,7 @@ import org.wikipedia.WikipediaApp import org.wikipedia.analytics.eventplatform.PlacesEvent import org.wikipedia.database.AppDatabase import org.wikipedia.databinding.FragmentSearchBinding +import org.wikipedia.extensions.serializable import org.wikipedia.history.HistoryEntry import org.wikipedia.json.JsonUtil import org.wikipedia.page.PageActivity @@ -98,7 +99,7 @@ class SearchFragment : Fragment(), SearchResultsFragment.Callback, RecentSearche if (savedInstanceState == null) { handleIntent(requireActivity().intent) } - invokeSource = requireArguments().getSerializable(Constants.INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource + invokeSource = requireArguments().serializable(Constants.INTENT_EXTRA_INVOKE_SOURCE)!! query = requireArguments().getString(ARG_QUERY) returnLink = requireArguments().getBoolean(SearchActivity.EXTRA_RETURN_LINK, false) } diff --git a/app/src/main/java/org/wikipedia/settings/languages/WikipediaLanguagesActivity.kt b/app/src/main/java/org/wikipedia/settings/languages/WikipediaLanguagesActivity.kt index 2cff5cb4218..ed62393a70d 100644 --- a/app/src/main/java/org/wikipedia/settings/languages/WikipediaLanguagesActivity.kt +++ b/app/src/main/java/org/wikipedia/settings/languages/WikipediaLanguagesActivity.kt @@ -5,12 +5,13 @@ import android.content.Intent import org.wikipedia.Constants import org.wikipedia.Constants.InvokeSource import org.wikipedia.activity.SingleFragmentActivity +import org.wikipedia.extensions.serializableExtra import org.wikipedia.settings.languages.WikipediaLanguagesFragment.Companion.newInstance import org.wikipedia.widgets.WidgetProviderFeaturedPage.Companion.forceUpdateWidget class WikipediaLanguagesActivity : SingleFragmentActivity() { override fun createFragment(): WikipediaLanguagesFragment { - return newInstance(intent.getSerializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource) + return newInstance(intent.serializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE)!!) } override fun onDestroy() { diff --git a/app/src/main/java/org/wikipedia/settings/languages/WikipediaLanguagesFragment.kt b/app/src/main/java/org/wikipedia/settings/languages/WikipediaLanguagesFragment.kt index 97964f2ee8d..0186bd96090 100644 --- a/app/src/main/java/org/wikipedia/settings/languages/WikipediaLanguagesFragment.kt +++ b/app/src/main/java/org/wikipedia/settings/languages/WikipediaLanguagesFragment.kt @@ -20,6 +20,7 @@ import org.wikipedia.Constants.InvokeSource import org.wikipedia.R import org.wikipedia.WikipediaApp import org.wikipedia.databinding.FragmentWikipediaLanguagesBinding +import org.wikipedia.extensions.serializableExtra import org.wikipedia.json.JsonUtil import org.wikipedia.language.LanguagesListActivity import org.wikipedia.push.WikipediaFirebaseMessagingService @@ -47,7 +48,7 @@ class WikipediaLanguagesFragment : Fragment(), MenuProvider, WikipediaLanguagesI override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { _binding = FragmentWikipediaLanguagesBinding.inflate(inflater, container, false) (requireActivity() as AppCompatActivity).setSupportActionBar(binding.toolbar) - invokeSource = requireActivity().intent.getSerializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource + invokeSource = requireActivity().intent.serializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE)!! initialLanguageList = JsonUtil.encodeToString(app.languageState.appLanguageCodes).orEmpty() requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED) prepareWikipediaLanguagesList() @@ -264,7 +265,7 @@ class WikipediaLanguagesFragment : Fragment(), MenuProvider, WikipediaLanguagesI private inner class FooterViewHolder(itemView: View) : DefaultViewHolder(itemView) private fun wantResultFromItemClick(): Boolean { - val source = requireActivity().intent.getSerializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource? + val source = requireActivity().intent.serializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) return source != null && (source == InvokeSource.SEARCH || source == InvokeSource.TALK_TOPICS_ACTIVITY || source == InvokeSource.USER_CONTRIB_ACTIVITY) } diff --git a/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsCardsFragment.kt b/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsCardsFragment.kt index 48aa12d3eb2..941d2120c0c 100644 --- a/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsCardsFragment.kt +++ b/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsCardsFragment.kt @@ -39,6 +39,7 @@ import org.wikipedia.descriptions.DescriptionEditActivity.Action.IMAGE_RECOMMEND import org.wikipedia.descriptions.DescriptionEditActivity.Action.TRANSLATE_CAPTION import org.wikipedia.descriptions.DescriptionEditActivity.Action.TRANSLATE_DESCRIPTION import org.wikipedia.descriptions.DescriptionEditActivity.Action.VANDALISM_PATROL +import org.wikipedia.extensions.serializableExtra import org.wikipedia.page.PageTitle import org.wikipedia.settings.Prefs import org.wikipedia.suggestededits.SuggestionsActivity.Companion.EXTRA_SOURCE_ADDED_CONTRIBUTION @@ -95,7 +96,7 @@ class SuggestedEditsCardsFragment : Fragment(), MenuProvider, SuggestedEditsItem (requireActivity() as AppCompatActivity).apply { setSupportActionBar(binding.toolbar) supportActionBar?.setDisplayHomeAsUpEnabled(true) - supportActionBar?.title = getActionBarTitle(intent.getSerializableExtra(Constants.INTENT_EXTRA_ACTION) as DescriptionEditActivity.Action) + supportActionBar?.title = getActionBarTitle(intent.serializableExtra(Constants.INTENT_EXTRA_ACTION)!!) } return binding.root diff --git a/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsCardsViewModel.kt b/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsCardsViewModel.kt index e92cf3b0d4f..317bdafc91c 100644 --- a/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsCardsViewModel.kt +++ b/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsCardsViewModel.kt @@ -13,13 +13,14 @@ import org.wikipedia.WikipediaApp import org.wikipedia.dataclient.ServiceFactory import org.wikipedia.dataclient.mwapi.SiteMatrix import org.wikipedia.descriptions.DescriptionEditActivity +import org.wikipedia.extensions.serializable import org.wikipedia.util.Resource class SuggestedEditsCardsViewModel(bundle: Bundle) : ViewModel() { var langFromCode = WikipediaApp.instance.languageState.appLanguageCode var langToCode = WikipediaApp.instance.languageState.appLanguageCodes.getOrElse(1) { "" } - var action = bundle.getSerializable(Constants.INTENT_EXTRA_ACTION) as DescriptionEditActivity.Action + val action = bundle.serializable(Constants.INTENT_EXTRA_ACTION)!! private val _uiState = MutableStateFlow(Resource>()) val uiState = _uiState.asStateFlow() diff --git a/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsImageTagEditActivity.kt b/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsImageTagEditActivity.kt index 92407e773a5..837ce7660fd 100644 --- a/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsImageTagEditActivity.kt +++ b/app/src/main/java/org/wikipedia/suggestededits/SuggestedEditsImageTagEditActivity.kt @@ -13,6 +13,7 @@ import org.wikipedia.activity.BaseActivity import org.wikipedia.databinding.ActivitySuggestedEditsFeedCardImageTagsBinding import org.wikipedia.dataclient.mwapi.MwQueryPage import org.wikipedia.descriptions.DescriptionEditActivity +import org.wikipedia.extensions.serializableExtra import org.wikipedia.json.JsonUtil import org.wikipedia.settings.Prefs import org.wikipedia.util.DimenUtil @@ -35,7 +36,7 @@ class SuggestedEditsImageTagEditActivity : BaseActivity(), SuggestedEditsItemFra setImageZoomHelper() suggestedEditsImageTagsFragment = supportFragmentManager.findFragmentById(R.id.imageTagFragment) as SuggestedEditsImageTagsFragment - suggestedEditsImageTagsFragment.invokeSource = intent.getSerializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) as Constants.InvokeSource + suggestedEditsImageTagsFragment.invokeSource = intent.serializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE)!! binding.addContributionButton.setOnClickListener { suggestedEditsImageTagsFragment.publish() } binding.addContributionLandscapeImage.setOnClickListener { suggestedEditsImageTagsFragment.publish() } diff --git a/app/src/main/java/org/wikipedia/suggestededits/SuggestionsActivity.kt b/app/src/main/java/org/wikipedia/suggestededits/SuggestionsActivity.kt index 0cb146e8510..bed8d2d28f0 100644 --- a/app/src/main/java/org/wikipedia/suggestededits/SuggestionsActivity.kt +++ b/app/src/main/java/org/wikipedia/suggestededits/SuggestionsActivity.kt @@ -6,6 +6,7 @@ import android.os.Bundle import org.wikipedia.Constants.INTENT_EXTRA_ACTION import org.wikipedia.activity.SingleFragmentActivity import org.wikipedia.descriptions.DescriptionEditActivity.Action +import org.wikipedia.extensions.serializableExtra import org.wikipedia.suggestededits.SuggestedEditsCardsFragment.Companion.newInstance class SuggestionsActivity : SingleFragmentActivity() { @@ -23,7 +24,7 @@ class SuggestionsActivity : SingleFragmentActivity( } override fun createFragment(): SuggestedEditsCardsFragment { - return newInstance(intent.getSerializableExtra(INTENT_EXTRA_ACTION) as Action) + return newInstance(intent.serializableExtra(INTENT_EXTRA_ACTION)!!) } companion object { diff --git a/app/src/main/java/org/wikipedia/talk/TalkTopicsActivity.kt b/app/src/main/java/org/wikipedia/talk/TalkTopicsActivity.kt index bf7ba4c8882..cb491f7e66b 100644 --- a/app/src/main/java/org/wikipedia/talk/TalkTopicsActivity.kt +++ b/app/src/main/java/org/wikipedia/talk/TalkTopicsActivity.kt @@ -36,6 +36,7 @@ import org.wikipedia.dataclient.okhttp.HttpStatusException import org.wikipedia.edit.EditHandler import org.wikipedia.edit.EditSectionActivity import org.wikipedia.extensions.parcelableExtra +import org.wikipedia.extensions.serializableExtra import org.wikipedia.history.HistoryEntry import org.wikipedia.history.SearchActionModeCallback import org.wikipedia.notifications.NotificationActivity @@ -180,7 +181,7 @@ class TalkTopicsActivity : BaseActivity(), WatchlistExpiryDialog.Callback { } binding.talkRefreshView.setColorSchemeResources(ResourceUtil.getThemedAttributeId(this, R.attr.progressive_color)) - invokeSource = intent.getSerializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) as Constants.InvokeSource + invokeSource = intent.serializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE)!! binding.talkNewTopicButton.isVisible = false diff --git a/app/src/main/java/org/wikipedia/theme/ThemeChooserDialog.kt b/app/src/main/java/org/wikipedia/theme/ThemeChooserDialog.kt index 60a791929bb..014553f3258 100644 --- a/app/src/main/java/org/wikipedia/theme/ThemeChooserDialog.kt +++ b/app/src/main/java/org/wikipedia/theme/ThemeChooserDialog.kt @@ -28,6 +28,7 @@ import org.wikipedia.analytics.eventplatform.AppearanceSettingInteractionEvent import org.wikipedia.concurrency.FlowEventBus import org.wikipedia.databinding.DialogThemeChooserBinding import org.wikipedia.events.WebViewInvalidateEvent +import org.wikipedia.extensions.serializable import org.wikipedia.page.ExtendedBottomSheetDialogFragment import org.wikipedia.settings.Prefs import org.wikipedia.util.DimenUtil @@ -141,7 +142,7 @@ class ThemeChooserDialog : ExtendedBottomSheetDialogFragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - invokeSource = requireArguments().getSerializable(Constants.INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource + invokeSource = requireArguments().serializable(Constants.INTENT_EXTRA_INVOKE_SOURCE)!! appearanceSettingInteractionEvent = AppearanceSettingInteractionEvent(invokeSource) } diff --git a/app/src/main/java/org/wikipedia/watchlist/WatchlistExpiryDialogViewModel.kt b/app/src/main/java/org/wikipedia/watchlist/WatchlistExpiryDialogViewModel.kt index f05b3d15a37..19b8bdf8aba 100644 --- a/app/src/main/java/org/wikipedia/watchlist/WatchlistExpiryDialogViewModel.kt +++ b/app/src/main/java/org/wikipedia/watchlist/WatchlistExpiryDialogViewModel.kt @@ -11,6 +11,7 @@ import kotlinx.coroutines.launch import org.wikipedia.analytics.eventplatform.WatchlistAnalyticsHelper import org.wikipedia.dataclient.ServiceFactory import org.wikipedia.extensions.parcelable +import org.wikipedia.extensions.serializable import org.wikipedia.page.PageTitle import org.wikipedia.util.Resource @@ -20,7 +21,7 @@ class WatchlistExpiryDialogViewModel(bundle: Bundle) : ViewModel() { } var pageTitle = bundle.parcelable(WatchlistExpiryDialog.ARG_PAGE_TITLE)!! - var expiry = bundle.getSerializable(WatchlistExpiryDialog.ARG_EXPIRY) as WatchlistExpiry + var expiry = bundle.serializable(WatchlistExpiryDialog.ARG_EXPIRY)!! private val _uiState = MutableStateFlow(Resource()) val uiState = _uiState.asStateFlow() From e98f396e54a2acf41bca0533dd9999cf8b16e0ba Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Thu, 22 Aug 2024 05:57:18 +0530 Subject: [PATCH 2/5] Fix compilation error --- .../feed/suggestededits/SuggestedEditsCardItemViewModel.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/wikipedia/feed/suggestededits/SuggestedEditsCardItemViewModel.kt b/app/src/main/java/org/wikipedia/feed/suggestededits/SuggestedEditsCardItemViewModel.kt index 3bc83cd9eb8..89404f72163 100644 --- a/app/src/main/java/org/wikipedia/feed/suggestededits/SuggestedEditsCardItemViewModel.kt +++ b/app/src/main/java/org/wikipedia/feed/suggestededits/SuggestedEditsCardItemViewModel.kt @@ -24,7 +24,7 @@ import org.wikipedia.util.StringUtil class SuggestedEditsCardItemViewModel(bundle: Bundle) : ViewModel() { val age = bundle.getInt(SuggestedEditsCardItemFragment.EXTRA_AGE) - var cardActionType = bundle.serializable(SuggestedEditsCardItemFragment.EXTRA_ACTION_TYPE) + var cardActionType = bundle.serializable(SuggestedEditsCardItemFragment.EXTRA_ACTION_TYPE)!! var sourceSummaryForEdit: PageSummaryForEdit? = null var targetSummaryForEdit: PageSummaryForEdit? = null var imageTagPage: MwQueryPage? = null From ddb022959eab0bfd1a9832e9bbe2d9a9a76adc39 Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Sun, 15 Sep 2024 14:08:54 +0530 Subject: [PATCH 3/5] Use SavedStateHandle in SuggestedEditsCardItemViewModel --- .../SuggestedEditsCardItemFragment.kt | 2 +- .../SuggestedEditsCardItemViewModel.kt | 17 ++++------------- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/org/wikipedia/feed/suggestededits/SuggestedEditsCardItemFragment.kt b/app/src/main/java/org/wikipedia/feed/suggestededits/SuggestedEditsCardItemFragment.kt index 9147d44f0a3..9031fe25e43 100644 --- a/app/src/main/java/org/wikipedia/feed/suggestededits/SuggestedEditsCardItemFragment.kt +++ b/app/src/main/java/org/wikipedia/feed/suggestededits/SuggestedEditsCardItemFragment.kt @@ -46,7 +46,7 @@ import org.wikipedia.util.StringUtil class SuggestedEditsCardItemFragment : Fragment() { private var _binding: FragmentSuggestedEditsCardItemBinding? = null private val binding get() = _binding!! - private val viewModel: SuggestedEditsCardItemViewModel by viewModels { SuggestedEditsCardItemViewModel.Factory(requireArguments()) } + private val viewModel: SuggestedEditsCardItemViewModel by viewModels() private var itemClickable = false diff --git a/app/src/main/java/org/wikipedia/feed/suggestededits/SuggestedEditsCardItemViewModel.kt b/app/src/main/java/org/wikipedia/feed/suggestededits/SuggestedEditsCardItemViewModel.kt index 8e336cf8184..2973aabdeb5 100644 --- a/app/src/main/java/org/wikipedia/feed/suggestededits/SuggestedEditsCardItemViewModel.kt +++ b/app/src/main/java/org/wikipedia/feed/suggestededits/SuggestedEditsCardItemViewModel.kt @@ -1,8 +1,7 @@ package org.wikipedia.feed.suggestededits -import android.os.Bundle +import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel -import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import kotlinx.coroutines.CoroutineExceptionHandler import kotlinx.coroutines.flow.MutableStateFlow @@ -14,7 +13,6 @@ import org.wikipedia.dataclient.ServiceFactory import org.wikipedia.dataclient.WikiSite import org.wikipedia.dataclient.mwapi.MwQueryPage import org.wikipedia.descriptions.DescriptionEditActivity -import org.wikipedia.extensions.serializable import org.wikipedia.page.Namespace import org.wikipedia.page.PageTitle import org.wikipedia.suggestededits.PageSummaryForEdit @@ -22,9 +20,9 @@ import org.wikipedia.suggestededits.provider.EditingSuggestionsProvider import org.wikipedia.util.Resource import org.wikipedia.util.StringUtil -class SuggestedEditsCardItemViewModel(bundle: Bundle) : ViewModel() { - val age = bundle.getInt(SuggestedEditsCardItemFragment.EXTRA_AGE) - var cardActionType = bundle.serializable(SuggestedEditsCardItemFragment.EXTRA_ACTION_TYPE)!! +class SuggestedEditsCardItemViewModel(savedStateHandle: SavedStateHandle) : ViewModel() { + val age = savedStateHandle[SuggestedEditsCardItemFragment.EXTRA_AGE] ?: 0 + var cardActionType = savedStateHandle.get(SuggestedEditsCardItemFragment.EXTRA_ACTION_TYPE)!! var sourceSummaryForEdit: PageSummaryForEdit? = null var targetSummaryForEdit: PageSummaryForEdit? = null var imageTagPage: MwQueryPage? = null @@ -198,11 +196,4 @@ class SuggestedEditsCardItemViewModel(bundle: Bundle) : ViewModel() { return EditingSuggestionsProvider .getNextImageWithMissingTags(SuggestedEditsCardItemFragment.MAX_RETRY_LIMIT) } - class Factory(private val bundle: Bundle) : ViewModelProvider.Factory { - - @Suppress("UNCHECKED_CAST") - override fun create(modelClass: Class): T { - return SuggestedEditsCardItemViewModel(bundle) as T - } - } } From 41018f1f0e0fd6d538cee0b1f19dfc5d990a353b Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Sun, 6 Jul 2025 04:55:12 +0530 Subject: [PATCH 4/5] Use parcelable extension in WidgetProviderFeaturedPage --- .../wikipedia/widgets/WidgetProviderFeaturedPage.kt | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.kt b/app/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.kt index 8c3f7e029f5..f26ddd33da4 100644 --- a/app/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.kt +++ b/app/src/main/java/org/wikipedia/widgets/WidgetProviderFeaturedPage.kt @@ -10,7 +10,6 @@ import android.os.Bundle import android.view.View import android.widget.RemoteViews import androidx.core.app.PendingIntentCompat -import androidx.core.os.BundleCompat import androidx.work.BackoffPolicy import androidx.work.OneTimeWorkRequest import androidx.work.WorkManager @@ -18,6 +17,7 @@ import androidx.work.WorkRequest import org.wikipedia.Constants import org.wikipedia.R import org.wikipedia.WikipediaApp +import org.wikipedia.extensions.parcelable import org.wikipedia.history.HistoryEntry import org.wikipedia.page.PageActivity import org.wikipedia.page.PageTitle @@ -37,12 +37,9 @@ class WidgetProviderFeaturedPage : AppWidgetProvider() { L.d("updating widget...") val remoteViews = RemoteViews(context.packageName, R.layout.widget_featured_page) val options = appWidgetManager.getAppWidgetOptions(widgetId) - - var pageTitle: PageTitle? = null - val bundle = BundleCompat.getParcelable(options, Constants.ARG_TITLE, Bundle::class.java) - if (bundle != null) { - bundle.classLoader = WikipediaApp.instance.classLoader - pageTitle = BundleCompat.getParcelable(bundle, Constants.ARG_TITLE, PageTitle::class.java) + val pageTitle = options.getBundle(Constants.ARG_TITLE)?.let { + it.classLoader = WikipediaApp.instance.classLoader + it.parcelable(Constants.ARG_TITLE) } if (pageTitle == null || (System.currentTimeMillis() - lastServerUpdateMillis) > TimeUnit.HOURS.toMillis(1)) { lastServerUpdateMillis = System.currentTimeMillis() From 876d719337b9703f8e84d179fc6b17eee728085f Mon Sep 17 00:00:00 2001 From: Isira Seneviratne Date: Sun, 6 Jul 2025 04:59:59 +0530 Subject: [PATCH 5/5] Add uses of serializable extensions --- .../java/org/wikipedia/readinglist/ReadingListActivity.kt | 5 +++-- .../java/org/wikipedia/readinglist/ReadingListFragment.kt | 8 +++++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/wikipedia/readinglist/ReadingListActivity.kt b/app/src/main/java/org/wikipedia/readinglist/ReadingListActivity.kt index eed06627983..340a34be601 100644 --- a/app/src/main/java/org/wikipedia/readinglist/ReadingListActivity.kt +++ b/app/src/main/java/org/wikipedia/readinglist/ReadingListActivity.kt @@ -11,6 +11,7 @@ import org.wikipedia.WikipediaApp import org.wikipedia.activity.BaseActivity import org.wikipedia.activity.SingleFragmentActivity import org.wikipedia.analytics.eventplatform.ReadingListsAnalyticsHelper +import org.wikipedia.extensions.serializableExtra import org.wikipedia.main.MainActivity import org.wikipedia.navtab.NavTab import org.wikipedia.readinglist.database.ReadingList @@ -30,9 +31,9 @@ class ReadingListActivity : SingleFragmentActivity(), BaseA } public override fun createFragment(): ReadingListFragment { - readingListMode = (intent.getSerializableExtra(EXTRA_READING_LIST_MODE) as ReadingListMode?) ?: ReadingListMode.DEFAULT + readingListMode = intent.serializableExtra(EXTRA_READING_LIST_MODE) ?: ReadingListMode.DEFAULT return if (readingListMode != ReadingListMode.DEFAULT) { - val invokeSource = intent.getSerializableExtra(EXTRA_SOURCE) as InvokeSource? + val invokeSource = intent.serializableExtra(EXTRA_SOURCE) ReadingListFragment.newInstance(readingListMode, invokeSource) } else { ReadingListFragment.newInstance(intent.getLongExtra(EXTRA_READING_LIST_ID, 0)) diff --git a/app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.kt b/app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.kt index 349a3c626e0..1ed9eb81b82 100644 --- a/app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.kt +++ b/app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.kt @@ -48,6 +48,7 @@ import org.wikipedia.database.AppDatabase import org.wikipedia.databinding.FragmentReadingListBinding import org.wikipedia.events.NewRecommendedReadingListEvent import org.wikipedia.events.PageDownloadEvent +import org.wikipedia.extensions.serializable import org.wikipedia.history.HistoryEntry import org.wikipedia.history.SearchActionModeCallback import org.wikipedia.main.MainActivity @@ -117,9 +118,10 @@ class ReadingListFragment : Fragment(), MenuProvider, ReadingListItemActionsDial appCompatActivity.supportActionBar!!.title = "" DeviceUtil.updateStatusBarTheme(requireActivity(), binding.readingListToolbar, true) - readingListMode = (requireArguments().getSerializable(ReadingListActivity.EXTRA_READING_LIST_MODE) as ReadingListMode?) ?: ReadingListMode.DEFAULT - readingListId = requireArguments().getLong(ReadingListActivity.EXTRA_READING_LIST_ID, -1) - invokeSource = requireArguments().getSerializable(ReadingListActivity.EXTRA_SOURCE) as InvokeSource? + val args = requireArguments() + readingListMode = args.serializable(ReadingListActivity.EXTRA_READING_LIST_MODE) ?: ReadingListMode.DEFAULT + readingListId = args.getLong(ReadingListActivity.EXTRA_READING_LIST_ID, -1) + invokeSource = args.serializable(ReadingListActivity.EXTRA_SOURCE) touchCallback = SwipeableItemTouchHelperCallback(requireContext()) ItemTouchHelper(touchCallback).attachToRecyclerView(binding.readingListRecyclerView)