Skip to content

Commit 73bdc8a

Browse files
coolteydbrant
andauthored
Simplify the logic of picking up a random event from On This Day (#4938)
* Simplify the way of picking one random On this day event * Fix lint * Update variable name * Add Transient to avoid being serialized --------- Co-authored-by: Dmitry Brant <[email protected]>
1 parent 5d829a7 commit 73bdc8a

File tree

3 files changed

+12
-21
lines changed

3 files changed

+12
-21
lines changed

app/src/main/java/org/wikipedia/feed/aggregated/AggregatedFeedContent.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package org.wikipedia.feed.aggregated
22

33
import kotlinx.serialization.SerialName
44
import kotlinx.serialization.Serializable
5+
import kotlinx.serialization.Transient
56
import org.wikipedia.dataclient.page.PageSummary
67
import org.wikipedia.feed.image.FeaturedImage
78
import org.wikipedia.feed.news.NewsItem
@@ -15,4 +16,6 @@ class AggregatedFeedContent(
1516
@SerialName("mostread") val topRead: TopRead? = null,
1617
@SerialName("image") val potd: FeaturedImage? = null,
1718
val onthisday: List<OnThisDay.Event>? = null
18-
)
19+
) {
20+
@Transient var randomOnThisDayEvent: OnThisDay.Event? = null
21+
}

app/src/main/java/org/wikipedia/feed/aggregated/AggregatedFeedContentClient.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,8 @@ class AggregatedFeedContentClient {
3333
outCards: MutableList<Card>) {
3434
for (appLangCode in WikipediaApp.instance.languageState.appLanguageCodes) {
3535
if (responses.containsKey(appLangCode) && !FeedContentType.ON_THIS_DAY.langCodesDisabled.contains(appLangCode)) {
36-
responses[appLangCode]?.onthisday?.let {
37-
if (it.isNotEmpty()) {
38-
outCards.add(OnThisDayCard(it, WikiSite.forLanguageCode(appLangCode), age))
39-
}
36+
responses[appLangCode]?.randomOnThisDayEvent?.let {
37+
outCards.add(OnThisDayCard(it, WikiSite.forLanguageCode(appLangCode), age))
4038
}
4139
}
4240
}
@@ -175,6 +173,8 @@ class AggregatedFeedContentClient {
175173
}
176174
}
177175

176+
feedContentResponse.randomOnThisDayEvent = feedContentResponse.onthisday?.random()
177+
178178
aggregatedClient.aggregatedResponses[langCode] = feedContentResponse
179179
aggregatedClient.aggregatedResponseAge = age
180180
}

app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCard.kt

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,12 @@ import org.wikipedia.feed.view.FeedAdapter
99
import org.wikipedia.util.DateUtil
1010
import org.wikipedia.util.L10nUtil
1111
import java.util.Calendar
12-
import java.util.Random
1312
import java.util.concurrent.TimeUnit
1413

15-
class OnThisDayCard(events: List<OnThisDay.Event>, wiki: WikiSite, val age: Int) : WikiSiteCard(wiki) {
16-
private val nextYear: Int
14+
class OnThisDayCard(val event: OnThisDay.Event, wiki: WikiSite, val age: Int) : WikiSiteCard(wiki) {
1715
private val date: Calendar = DateUtil.getDefaultDateFor(age)
18-
private val eventShownOnCard: OnThisDay.Event
1916
var callback: FeedAdapter.Callback? = null
2017

21-
init {
22-
var randomIndex = 0
23-
if (events.size > 1) {
24-
randomIndex = Random().nextInt(events.size - 1)
25-
}
26-
eventShownOnCard = events[randomIndex]
27-
nextYear = events.getOrElse(randomIndex + 1) { eventShownOnCard }.year
28-
}
29-
3018
override fun type(): CardType {
3119
return CardType.ON_THIS_DAY
3220
}
@@ -48,18 +36,18 @@ class OnThisDayCard(events: List<OnThisDay.Event>, wiki: WikiSite, val age: Int)
4836
}
4937

5038
fun text(): CharSequence {
51-
return eventShownOnCard.text
39+
return event.text
5240
}
5341

5442
fun year(): Int {
55-
return eventShownOnCard.year
43+
return event.year
5644
}
5745

5846
fun date(): Calendar {
5947
return date
6048
}
6149

6250
fun pages(): List<PageSummary> {
63-
return eventShownOnCard.pages
51+
return event.pages
6452
}
6553
}

0 commit comments

Comments
 (0)