@@ -21,7 +21,6 @@ import org.wikipedia.dataclient.WikiSite
2121import org.wikipedia.dataclient.growthtasks.GrowthUserImpact
2222import org.wikipedia.dataclient.restbase.UserEdits
2323import org.wikipedia.json.JsonUtil
24- import org.wikipedia.page.PageTitle
2524import org.wikipedia.settings.Prefs
2625import org.wikipedia.settings.RemoteConfig
2726import org.wikipedia.util.DateUtil
@@ -110,40 +109,28 @@ class YearInReviewViewModel() : ViewModel() {
110109 val wikiSite = WikipediaApp .instance.wikiSite
111110 val userInfoResponse = ServiceFactory .get(wikiSite).getLocalAndGlobalUserInfo()
112111
113- val impactDataJob = async {
114- val now = Instant .now().epochSecond
115- val impact: GrowthUserImpact
116- val impactLastResponseBodyMap = Prefs .impactLastResponseBody.toMutableMap()
117- val impactResponse = impactLastResponseBodyMap[wikiSite.languageCode]
118- if (impactResponse.isNullOrEmpty() || abs(now - Prefs .impactLastQueryTime) > TimeUnit .HOURS .toSeconds(12 )) {
119- val userId = userInfoResponse.query?.userInfo?.id ? : 0
120- impact = ServiceFactory .getCoreRest(wikiSite).getUserImpact(userId)
121- impactLastResponseBodyMap[wikiSite.languageCode] =
122- JsonUtil .encodeToString(impact).orEmpty()
123- Prefs .impactLastResponseBody = impactLastResponseBodyMap
124- Prefs .impactLastQueryTime = now
125- } else {
126- impact = JsonUtil .decodeFromString(impactResponse)!!
112+ val totalPageViewsJob = async {
113+ var pageViewsFromImpactApi = 0L
114+ try {
115+ val now = Instant .now().epochSecond
116+ val impact: GrowthUserImpact
117+ val impactLastResponseBodyMap = Prefs .impactLastResponseBody.toMutableMap()
118+ val impactResponse = impactLastResponseBodyMap[wikiSite.languageCode]
119+ if (impactResponse.isNullOrEmpty() || abs(now - Prefs .impactLastQueryTime) > TimeUnit .HOURS .toSeconds(12 )) {
120+ val userId = userInfoResponse.query?.userInfo?.id ? : 0
121+ impact = ServiceFactory .getCoreRest(wikiSite).getUserImpact(userId)
122+ impactLastResponseBodyMap[wikiSite.languageCode] =
123+ JsonUtil .encodeToString(impact).orEmpty()
124+ Prefs .impactLastResponseBody = impactLastResponseBodyMap
125+ Prefs .impactLastQueryTime = now
126+ } else {
127+ impact = JsonUtil .decodeFromString(impactResponse)!!
128+ }
129+ pageViewsFromImpactApi = impact.totalPageviewsCount
130+ } catch (e: IOException ) {
131+ L .e(e)
127132 }
128-
129- val pagesResponse = ServiceFactory .get(wikiSite).getInfoByPageIdsOrTitles(
130- titles = impact.topViewedArticles.keys.joinToString(separator = " |" )
131- )
132-
133- // Transform the response to a map of PageTitle to ArticleViews
134- val pageMap = pagesResponse.query?.pages?.associate { page ->
135- val pageTitle = PageTitle (
136- text = page.title,
137- wiki = wikiSite,
138- thumbUrl = page.thumbUrl(),
139- description = page.description,
140- displayText = page.displayTitle(wikiSite.languageCode)
141- )
142- pageTitle to impact.topViewedArticles[pageTitle.text]!!
143- } ? : emptyMap()
144-
145- impact.topViewedArticlesWithPageTitle = pageMap
146- impact
133+ pageViewsFromImpactApi
147134 }
148135
149136 val editCountCall = async {
@@ -162,7 +149,7 @@ class YearInReviewViewModel() : ViewModel() {
162149 }
163150 response
164151 }
165- totalPageViews = impactDataJob .await().totalPageviewsCount
152+ totalPageViews = totalPageViewsJob .await()
166153 editCount = editCountCall.await().items.sumOf { it.editCount }
167154 }
168155
0 commit comments