1+
12package org.wikipedia.readinglist
23
34import android.content.Context
45import android.util.Base64
6+ import kotlinx.serialization.json.int
57import org.wikipedia.R
68import org.wikipedia.dataclient.Service
79import org.wikipedia.dataclient.ServiceFactory
810import org.wikipedia.dataclient.WikiSite
11+ import org.wikipedia.dataclient.mwapi.MwQueryPage
912import org.wikipedia.json.JsonUtil
1013import org.wikipedia.readinglist.database.ReadingList
1114import org.wikipedia.readinglist.database.ReadingListPage
@@ -23,18 +26,29 @@ object ReadingListsReceiveHelper {
2326 val listPages = mutableListOf<ReadingListPage >()
2427
2528 // Request API by languages
26- readingListData?.list?.forEach {
27- val wikiSite = WikiSite .forLanguageCode(it.key)
28- it.value.chunked(ReadingListsShareHelper .API_MAX_SIZE ).forEach { list ->
29- val response = ServiceFactory .get(wikiSite).getPageTitlesByPageId(list.joinToString(separator = " |" ))
30- response.query?.pages?.forEach { page ->
29+ readingListData?.list?.forEach { map ->
30+ val wikiSite = WikiSite .forLanguageCode(map.key)
31+ map.value.chunked(ReadingListsShareHelper .API_MAX_SIZE ).forEach { list ->
32+ val listOfTitles = list.filter { it.isString }.map { it.content }
33+ val listOfIds = list.filter { ! it.isString }.map { it.int }
34+
35+ val pages = mutableListOf<MwQueryPage >()
36+ if (listOfIds.isNotEmpty()) {
37+ pages.addAll(ServiceFactory .get(wikiSite).getPageTitlesByPageIdsOrTitles(pageIds = listOfIds.joinToString(separator = " |" ))
38+ .query?.pages.orEmpty())
39+ }
40+ if (listOfTitles.isNotEmpty()) {
41+ pages.addAll(ServiceFactory .get(wikiSite).getPageTitlesByPageIdsOrTitles(titles = listOfTitles.joinToString(separator = " |" ))
42+ .query?.pages.orEmpty())
43+ }
44+ pages.forEach {
3145 val readingListPage = ReadingListPage (
3246 wikiSite,
33- page .namespace(),
34- page .displayTitle(wikiSite.languageCode),
35- StringUtil .addUnderscores(page .title),
36- page .description,
37- ImageUrlUtil .getUrlForPreferredSize(page .thumbUrl().orEmpty(), Service .PREFERRED_THUMB_SIZE ),
47+ it .namespace(),
48+ it .displayTitle(wikiSite.languageCode),
49+ StringUtil .addUnderscores(it .title),
50+ it .description,
51+ ImageUrlUtil .getUrlForPreferredSize(it .thumbUrl().orEmpty(), Service .PREFERRED_THUMB_SIZE ),
3852 lang = wikiSite.languageCode
3953 )
4054 listPages.add(readingListPage)
0 commit comments