Skip to content

Commit 5ca0e83

Browse files
authored
Fix parsing/serializing of UserInfo options. (#6089)
* Fix parsing/serializing of UserInfo options. * Clean up.
1 parent 070d38f commit 5ca0e83

File tree

3 files changed

+9
-8
lines changed

3 files changed

+9
-8
lines changed

app/src/main/java/org/wikipedia/dataclient/mwapi/UserInfo.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,12 @@ class UserInfo : BlockInfo() {
5252

5353
@Serializable
5454
class Options {
55-
@SerialName("watchdefault") val watchDefault: Int = 0
56-
@SerialName("centralnotice-display-campaign-type-fundraising") val fundraisingOptIn: JsonElement? = null
55+
@SerialName("watchdefault") private val watchDefault: JsonElement? = null
56+
@SerialName("centralnotice-display-campaign-type-fundraising") private val fundraisingOptIn: JsonElement? = null
57+
58+
val watchEditedPagesByDefault get() = isExplicitOne(watchDefault)
59+
val optedInToFundraising get() = isExplicitOne(fundraisingOptIn)
60+
61+
private fun isExplicitOne(element: JsonElement?) = element?.toString().orEmpty().replace("\"", "") == "1"
5762
}
5863
}

app/src/main/java/org/wikipedia/edit/summaries/EditSummaryFragment.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,8 +160,7 @@ class EditSummaryFragment : Fragment() {
160160
}) {
161161
val query = ServiceFactory.get(title.wikiSite)
162162
.getWatchedStatusWithUserOptions(title.prefixedText).query!!
163-
binding.watchPageCheckBox.isChecked = query.firstPage()!!.watched ||
164-
query.userInfo?.options?.watchDefault == 1
163+
binding.watchPageCheckBox.isChecked = query.firstPage()!!.watched || query.userInfo?.options?.watchEditedPagesByDefault == true
165164
}
166165
} else {
167166
binding.watchPageCheckBox.isEnabled = false

app/src/main/java/org/wikipedia/settings/RemoteConfigRefreshTask.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,7 @@ class RemoteConfigRefreshTask() : RecurringTask() {
2020

2121
if (AccountUtil.isLoggedIn) {
2222
val userInfo = ServiceFactory.get(WikipediaApp.instance.wikiSite).getUserInfo()
23-
// This clumsy comparison is necessary because the field is an integer value when enabled, but an empty string when disabled.
24-
// Since we want the default to lean towards opt-in, we check very specifically for an empty string, to make sure the user has opted out.
25-
val fundraisingOptOut = userInfo.query?.userInfo?.options?.fundraisingOptIn?.toString()?.replace("\"", "")?.isEmpty()
26-
Prefs.donationBannerOptIn = fundraisingOptOut != true
23+
Prefs.donationBannerOptIn = userInfo.query?.userInfo?.options?.optedInToFundraising == true
2724
}
2825
}
2926
}

0 commit comments

Comments
 (0)