@@ -7,8 +7,10 @@ import android.util.SparseArray
77import android.view.View
88import androidx.annotation.StringRes
99import androidx.core.os.ConfigurationCompat
10+ import kotlinx.coroutines.Deferred
1011import kotlinx.coroutines.Dispatchers
1112import kotlinx.coroutines.async
13+ import kotlinx.coroutines.awaitAll
1214import kotlinx.coroutines.withContext
1315import org.wikipedia.Constants
1416import org.wikipedia.WikipediaApp
@@ -137,7 +139,7 @@ object L10nUtil {
137139 }
138140 }
139141
140- suspend fun getPagesForLanguageVariant (list : List <PageSummary >, wikiSite : WikiSite ): List <PageSummary > {
142+ suspend fun getPagesForLanguageVariant (list : List <PageSummary >, wikiSite : WikiSite , shouldUpdateExtracts : Boolean = false ): List <PageSummary > {
141143 return withContext(Dispatchers .IO ) {
142144 val newList = mutableListOf<PageSummary >()
143145 val titles = list.joinToString(separator = " |" ) { it.apiTitle }
@@ -151,6 +153,20 @@ object L10nUtil {
151153 ServiceFactory .get(wikiSite).getVariantTitlesByTitles(titles)
152154 }
153155
156+ // Third, update the extracts from the page/summary endpoint if needed.
157+ val summaryForExtractsDeferred = mutableListOf<Deferred <PageSummary >>()
158+ if (shouldUpdateExtracts) {
159+ summaryForExtractsDeferred.addAll(list.map { pageSummary ->
160+ async {
161+ ServiceFactory .getRest(wikiSite).getPageSummary(null , pageSummary.apiTitle)
162+ }
163+ })
164+ summaryForExtractsDeferred.awaitAll().forEachIndexed { index, pageSummary ->
165+ list[index].extract = pageSummary.extract
166+ list[index].extractHtml = pageSummary.extractHtml
167+ }
168+ }
169+
154170 list.forEach { pageSummary ->
155171 // Find the correct display title from the varianttitles map, and insert the new page summary to the list.
156172 val displayTitle = mwQueryResponse.await().query?.pages?.find { StringUtil .addUnderscores(it.title) == pageSummary.apiTitle }?.varianttitles?.get(wikiSite.languageCode)
0 commit comments