Skip to content

Commit 28ebbd9

Browse files
Add serializable extensions
1 parent 279c224 commit 28ebbd9

29 files changed

+81
-55
lines changed

app/src/main/java/org/wikipedia/analytics/eventplatform/BreadCrumbLogEvent.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import kotlinx.serialization.SerialName
1111
import kotlinx.serialization.Serializable
1212
import org.wikipedia.Constants
1313
import org.wikipedia.WikipediaApp
14+
import org.wikipedia.extensions.serializableExtra
1415
import org.wikipedia.settings.SettingsActivity
1516
import org.wikipedia.util.log.L
1617

@@ -56,7 +57,8 @@ class BreadCrumbLogEvent(
5657
}
5758

5859
fun logScreenShown(context: Context, fragment: Fragment? = null) {
59-
val invokeSource = (fragment?.activity?.intent ?: (context as? Activity)?.intent)?.getSerializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) as? Constants.InvokeSource
60+
val intent = (fragment?.activity?.intent ?: (context as? Activity)?.intent)
61+
val invokeSource = intent?.serializableExtra<Constants.InvokeSource>(Constants.INTENT_EXTRA_INVOKE_SOURCE)
6062
EventPlatformClient.submit(BreadCrumbLogEvent(BreadCrumbViewUtil.getReadableScreenName(context, fragment),
6163
"show" + invokeSource?.let { ".from." + it.value }.orEmpty()))
6264
}

app/src/main/java/org/wikipedia/commons/ImagePreviewViewModel.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import org.wikipedia.Constants
1313
import org.wikipedia.dataclient.ServiceFactory
1414
import org.wikipedia.descriptions.DescriptionEditActivity
1515
import org.wikipedia.extensions.parcelable
16+
import org.wikipedia.extensions.serializable
1617
import org.wikipedia.suggestededits.PageSummaryForEdit
1718
import org.wikipedia.util.Resource
1819

@@ -22,7 +23,7 @@ class ImagePreviewViewModel(bundle: Bundle) : ViewModel() {
2223
_uiState.value = Resource.Error(throwable)
2324
}
2425
var pageSummaryForEdit = bundle.parcelable<PageSummaryForEdit>(ImagePreviewDialog.ARG_SUMMARY)!!
25-
var action = bundle.getSerializable(ImagePreviewDialog.ARG_ACTION) as DescriptionEditActivity.Action?
26+
var action = bundle.serializable<DescriptionEditActivity.Action>(ImagePreviewDialog.ARG_ACTION)
2627

2728
private val _uiState = MutableStateFlow(Resource<FilePage>())
2829
val uiState = _uiState.asStateFlow()

app/src/main/java/org/wikipedia/descriptions/DescriptionEditActivity.kt

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import org.wikipedia.Constants.InvokeSource
99
import org.wikipedia.activity.SingleFragmentActivity
1010
import org.wikipedia.commons.ImagePreviewDialog
1111
import org.wikipedia.extensions.parcelableExtra
12+
import org.wikipedia.extensions.serializableExtra
1213
import org.wikipedia.history.HistoryEntry
1314
import org.wikipedia.page.ExclusiveBottomSheetPresenter
1415
import org.wikipedia.page.PageTitle
@@ -24,7 +25,7 @@ class DescriptionEditActivity : SingleFragmentActivity<DescriptionEditFragment>(
2425

2526
override fun onCreate(savedInstanceState: Bundle?) {
2627
super.onCreate(savedInstanceState)
27-
val action = intent.getSerializableExtra(Constants.INTENT_EXTRA_ACTION) as Action
28+
val action = intent.serializableExtra<Action>(Constants.INTENT_EXTRA_ACTION)
2829

2930
if (action == Action.ADD_DESCRIPTION && Prefs.isDescriptionEditTutorialEnabled) {
3031
Prefs.isDescriptionEditTutorialEnabled = false
@@ -33,15 +34,14 @@ class DescriptionEditActivity : SingleFragmentActivity<DescriptionEditFragment>(
3334
}
3435

3536
public override fun createFragment(): DescriptionEditFragment {
36-
val invokeSource = intent.getSerializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource
37-
val action = intent.getSerializableExtra(Constants.INTENT_EXTRA_ACTION) as Action
38-
val title = intent.parcelableExtra<PageTitle>(Constants.ARG_TITLE)!!
39-
return DescriptionEditFragment.newInstance(title,
40-
intent.getStringExtra(EXTRA_HIGHLIGHT_TEXT),
41-
intent.parcelableExtra(EXTRA_SOURCE_SUMMARY),
42-
intent.parcelableExtra(EXTRA_TARGET_SUMMARY),
43-
action,
44-
invokeSource)
37+
return DescriptionEditFragment.newInstance(
38+
intent.parcelableExtra(Constants.ARG_TITLE)!!,
39+
intent.getStringExtra(EXTRA_HIGHLIGHT_TEXT),
40+
intent.parcelableExtra(EXTRA_SOURCE_SUMMARY),
41+
intent.parcelableExtra(EXTRA_TARGET_SUMMARY),
42+
intent.serializableExtra(Constants.INTENT_EXTRA_ACTION)!!,
43+
intent.serializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE)!!
44+
)
4545
}
4646

4747
override fun onBackPressed() {
@@ -67,8 +67,7 @@ class DescriptionEditActivity : SingleFragmentActivity<DescriptionEditFragment>(
6767
} else {
6868
ExclusiveBottomSheetPresenter.show(supportFragmentManager,
6969
LinkPreviewDialog.newInstance(HistoryEntry(summary.pageTitle,
70-
if (intent.hasExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) && intent.getSerializableExtra
71-
(Constants.INTENT_EXTRA_INVOKE_SOURCE) === InvokeSource.PAGE_ACTIVITY)
70+
if (intent.serializableExtra<InvokeSource>(Constants.INTENT_EXTRA_INVOKE_SOURCE) === InvokeSource.PAGE_ACTIVITY)
7271
HistoryEntry.SOURCE_EDIT_DESCRIPTION else HistoryEntry.SOURCE_SUGGESTED_EDITS)))
7372
}
7473
}

app/src/main/java/org/wikipedia/descriptions/DescriptionEditFragment.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ import org.wikipedia.dataclient.okhttp.OkHttpConnectionFactory
4343
import org.wikipedia.dataclient.wikidata.EntityPostResponse
4444
import org.wikipedia.edit.EditTags
4545
import org.wikipedia.extensions.parcelable
46+
import org.wikipedia.extensions.serializable
4647
import org.wikipedia.language.AppLanguageLookUpTable
4748
import org.wikipedia.login.LoginActivity
4849
import org.wikipedia.notifications.AnonymousNotificationHelper
@@ -132,8 +133,8 @@ class DescriptionEditFragment : Fragment() {
132133
super.onCreate(savedInstanceState)
133134
pageTitle = requireArguments().parcelable(Constants.ARG_TITLE)!!
134135
highlightText = requireArguments().getString(ARG_HIGHLIGHT_TEXT)
135-
action = requireArguments().getSerializable(ARG_ACTION) as DescriptionEditActivity.Action
136-
invokeSource = requireArguments().getSerializable(Constants.INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource
136+
action = requireArguments().serializable(ARG_ACTION)!!
137+
invokeSource = requireArguments().serializable(Constants.INTENT_EXTRA_INVOKE_SOURCE)!!
137138
sourceSummary = requireArguments().parcelable(ARG_SOURCE_SUMMARY)
138139
targetSummary = requireArguments().parcelable(ARG_TARGET_SUMMARY)
139140
EditAttemptStepEvent.logInit(pageTitle, EditAttemptStepEvent.INTERFACE_OTHER)

app/src/main/java/org/wikipedia/diff/ArticleEditDetailsActivity.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import org.wikipedia.Constants.InvokeSource
99
import org.wikipedia.activity.BaseActivity
1010
import org.wikipedia.databinding.ActivityArticleEditDetailsBinding
1111
import org.wikipedia.extensions.parcelableExtra
12+
import org.wikipedia.extensions.serializableExtra
1213
import org.wikipedia.page.PageTitle
1314

1415
class ArticleEditDetailsActivity : BaseActivity() {
@@ -25,7 +26,7 @@ class ArticleEditDetailsActivity : BaseActivity() {
2526
intent.getIntExtra(EXTRA_PAGE_ID, -1),
2627
intent.getLongExtra(EXTRA_EDIT_REVISION_FROM, -1),
2728
intent.getLongExtra(EXTRA_EDIT_REVISION_TO, -1),
28-
intent.getSerializableExtra(INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource)
29+
intent.serializableExtra(INTENT_EXTRA_INVOKE_SOURCE)!!)
2930

3031
if (savedInstanceState == null) {
3132
supportFragmentManager.commit { add(binding.fragmentContainer.id, fragment) }

app/src/main/java/org/wikipedia/diff/ArticleEditDetailsViewModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,15 @@ import org.wikipedia.dataclient.wikidata.EntityPostResponse
2424
import org.wikipedia.edit.Edit
2525
import org.wikipedia.edit.EditTags
2626
import org.wikipedia.extensions.parcelable
27+
import org.wikipedia.extensions.serializable
2728
import org.wikipedia.page.PageTitle
2829
import org.wikipedia.suggestededits.provider.EditingSuggestionsProvider
2930
import org.wikipedia.util.Resource
3031
import org.wikipedia.util.SingleLiveData
3132
import org.wikipedia.watchlist.WatchlistExpiry
3233

3334
class ArticleEditDetailsViewModel(bundle: Bundle) : ViewModel() {
34-
35-
private val invokeSource = bundle.getSerializable(Constants.INTENT_EXTRA_INVOKE_SOURCE) as InvokeSource
35+
private val invokeSource = bundle.serializable<InvokeSource>(Constants.INTENT_EXTRA_INVOKE_SOURCE)
3636

3737
val watchedStatus = MutableLiveData<Resource<MwQueryPage>>()
3838
val rollbackRights = MutableLiveData<Resource<Boolean>>()

app/src/main/java/org/wikipedia/edit/EditSectionActivity.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ import org.wikipedia.edit.preview.EditPreviewFragment
5252
import org.wikipedia.edit.richtext.SyntaxHighlighter
5353
import org.wikipedia.edit.summaries.EditSummaryFragment
5454
import org.wikipedia.extensions.parcelableExtra
55+
import org.wikipedia.extensions.serializableExtra
5556
import org.wikipedia.history.HistoryEntry
5657
import org.wikipedia.login.LoginActivity
5758
import org.wikipedia.notifications.AnonymousNotificationHelper
@@ -182,7 +183,7 @@ class EditSectionActivity : BaseActivity(), ThemeChooserDialog.Callback, EditPre
182183
sectionID = intent.getIntExtra(EXTRA_SECTION_ID, -1)
183184
sectionAnchor = intent.getStringExtra(EXTRA_SECTION_ANCHOR)
184185
textToHighlight = intent.getStringExtra(EXTRA_HIGHLIGHT_TEXT)
185-
invokeSource = intent.getSerializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE) as Constants.InvokeSource
186+
invokeSource = intent.serializableExtra(Constants.INTENT_EXTRA_INVOKE_SOURCE)!!
186187

187188
setSupportActionBar(binding.toolbar)
188189
supportActionBar?.title = ""

app/src/main/java/org/wikipedia/edit/insertmedia/InsertMediaViewModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@ import org.wikipedia.dataclient.Service
1616
import org.wikipedia.dataclient.ServiceFactory
1717
import org.wikipedia.dataclient.WikiSite
1818
import org.wikipedia.extensions.parcelable
19+
import org.wikipedia.extensions.serializable
1920
import org.wikipedia.page.PageTitle
2021
import org.wikipedia.staticdata.FileAliasData
2122
import org.wikipedia.util.L10nUtil
2223
import org.wikipedia.util.StringUtil
2324
import org.wikipedia.util.log.L
2425

2526
class InsertMediaViewModel(bundle: Bundle) : ViewModel() {
26-
27-
val invokeSource = bundle.getSerializable(Constants.INTENT_EXTRA_INVOKE_SOURCE) as Constants.InvokeSource
27+
val invokeSource = bundle.serializable<Constants.InvokeSource>(Constants.INTENT_EXTRA_INVOKE_SOURCE)
2828
val wikiSite = bundle.parcelable<WikiSite>(Constants.ARG_WIKISITE)!!
2929
var searchQuery = StringUtil.removeHTMLTags(StringUtil.removeUnderscores(bundle.getString(InsertMediaActivity.EXTRA_SEARCH_QUERY)!!))
3030
val originalSearchQuery = searchQuery

app/src/main/java/org/wikipedia/edit/templates/TemplatesSearchViewModel.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ import org.wikipedia.dataclient.ServiceFactory
1717
import org.wikipedia.dataclient.WikiSite
1818
import org.wikipedia.dataclient.mwapi.TemplateDataResponse
1919
import org.wikipedia.extensions.parcelable
20+
import org.wikipedia.extensions.serializable
2021
import org.wikipedia.page.Namespace
2122
import org.wikipedia.page.PageTitle
2223
import org.wikipedia.settings.Prefs
2324

2425
class TemplatesSearchViewModel(bundle: Bundle) : ViewModel() {
25-
26-
val invokeSource = bundle.getSerializable(Constants.INTENT_EXTRA_INVOKE_SOURCE) as Constants.InvokeSource
26+
val invokeSource = bundle.serializable<Constants.InvokeSource>(Constants.INTENT_EXTRA_INVOKE_SOURCE)
2727
val wikiSite = bundle.parcelable<WikiSite>(Constants.ARG_WIKISITE)!!
2828
val isFromDiff = bundle.getBoolean(TemplatesSearchActivity.EXTRA_FROM_DIFF, false)
2929
var searchQuery: String? = null

app/src/main/java/org/wikipedia/extensions/Bundle.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package org.wikipedia.extensions
33
import android.os.Bundle
44
import android.os.Parcelable
55
import androidx.core.os.BundleCompat
6+
import java.io.Serializable
67

78
inline fun <reified T : Parcelable> Bundle.parcelable(key: String?): T? {
89
return BundleCompat.getParcelable(this, key, T::class.java)
@@ -11,3 +12,7 @@ inline fun <reified T : Parcelable> Bundle.parcelable(key: String?): T? {
1112
inline fun <reified T : Parcelable> Bundle.parcelableArrayList(key: String?): ArrayList<T>? {
1213
return BundleCompat.getParcelableArrayList(this, key, T::class.java)
1314
}
15+
16+
inline fun <reified T : Serializable> Bundle.serializable(key: String?): T? {
17+
return BundleCompat.getSerializable(this, key, T::class.java)
18+
}

0 commit comments

Comments
 (0)