diff --git a/data/wikipedia/src/main/java/de/mm20/launcher2/search/data/Wikipedia.kt b/data/wikipedia/src/main/java/de/mm20/launcher2/search/data/Wikipedia.kt index a47c8d76..f2b847dc 100644 --- a/data/wikipedia/src/main/java/de/mm20/launcher2/search/data/Wikipedia.kt +++ b/data/wikipedia/src/main/java/de/mm20/launcher2/search/data/Wikipedia.kt @@ -19,6 +19,7 @@ data class Wikipedia( val id: Long, val text: String, val image: String?, + val url: String, val wikipediaUrl: String, override val labelOverride: String? = null, ) : SavableSearchable { @@ -45,15 +46,7 @@ data class Wikipedia( } private fun getLaunchIntent(): Intent { - val intent = CustomTabsIntent - .Builder() - .setToolbarColor(Color.BLACK) - .enableUrlBarHiding() - .setShowTitle(true) - .build() - val uri = "${wikipediaUrl.padEnd(1, '/')}wiki?curid=$id" - intent.intent.data = Uri.parse(uri) - return intent.intent + return Intent(Intent.ACTION_VIEW, Uri.parse(url)) } override fun launch(context: Context, options: Bundle?): Boolean { diff --git a/data/wikipedia/src/main/java/de/mm20/launcher2/wikipedia/WikipediaApi.kt b/data/wikipedia/src/main/java/de/mm20/launcher2/wikipedia/WikipediaApi.kt index 646a655c..a1a6864b 100644 --- a/data/wikipedia/src/main/java/de/mm20/launcher2/wikipedia/WikipediaApi.kt +++ b/data/wikipedia/src/main/java/de/mm20/launcher2/wikipedia/WikipediaApi.kt @@ -15,28 +15,16 @@ data class WikipediaSearchResultQueryPage( val pageid: Long, val title: String, val extract: String, + val thumbnail: WikipediaSearchResultQueryPageThumnail?, + val fullurl: String, + val canonicalurl: String, ) -data class WikipediaGetPageImageResult( - val query: WikipediaGetPageImageResultQuery?, -) - -data class WikipediaGetPageImageResultQuery( - val pages: Map -) - -data class WikipediaGetPageImageResultQueryPage( - val thumbnail: WikipediaGetPageImageResultQueryPageThumnail? -) - -data class WikipediaGetPageImageResultQueryPageThumnail( +data class WikipediaSearchResultQueryPageThumnail( val source: String ) interface WikipediaApi { - @GET("w/api.php?action=query&generator=search&redirects=true&gsrlimit=1&exchars=500&prop=extracts&exintro=true&format=json") - suspend fun search(@Query("gsrsearch") query: String): WikipediaSearchResult - - @GET("w/api.php?action=query&prop=pageimages&format=json") - suspend fun getPageImage(@Query("pageids") pageId: Long, @Query("pithumbsize") thumbnailSize: Int): WikipediaGetPageImageResult + @GET("w/api.php?action=query&generator=search&redirects=true&gsrlimit=1&prop=extracts|info|pageimages&exchars=500&exintro=true&inprop=url&format=json") + suspend fun search(@Query("gsrsearch") query: String, @Query("pithumbsize") thumbnailSize: Int): WikipediaSearchResult } \ No newline at end of file diff --git a/data/wikipedia/src/main/java/de/mm20/launcher2/wikipedia/WikipediaRepository.kt b/data/wikipedia/src/main/java/de/mm20/launcher2/wikipedia/WikipediaRepository.kt index d3b28260..3ad030f8 100644 --- a/data/wikipedia/src/main/java/de/mm20/launcher2/wikipedia/WikipediaRepository.kt +++ b/data/wikipedia/src/main/java/de/mm20/launcher2/wikipedia/WikipediaRepository.kt @@ -1,7 +1,6 @@ package de.mm20.launcher2.wikipedia import android.content.Context -import android.util.Log import de.mm20.launcher2.crashreporter.CrashReporter import de.mm20.launcher2.preferences.LauncherDataStore import de.mm20.launcher2.search.data.Wikipedia @@ -9,7 +8,6 @@ import kotlinx.coroutines.* import kotlinx.coroutines.flow.* import okhttp3.OkHttpClient import org.koin.core.component.KoinComponent -import org.koin.core.component.inject import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory import java.util.concurrent.TimeUnit @@ -77,7 +75,8 @@ internal class WikipediaRepositoryImpl( val wikipediaUrl = retrofit.baseUrl().toString() val result = try { - wikipediaService.search(query) + val imageWidth = context.resources.displayMetrics.widthPixels / 2 + wikipediaService.search(query, imageWidth) } catch (e: Exception) { CrashReporter.logException(e) return null @@ -86,14 +85,7 @@ internal class WikipediaRepositoryImpl( val page = result.query?.pages?.values?.toList()?.getOrNull(0) ?: return null val image = if (loadImages) { - val width = context.resources.displayMetrics.widthPixels / 2 - val imageResult = try { - wikipediaService.getPageImage(page.pageid, width) - } catch (e: Exception) { - CrashReporter.logException(e) - return null - } - imageResult.query?.pages?.values?.toList()?.getOrNull(0)?.thumbnail?.source + result.query.pages.values.toList().getOrNull(0)?.thumbnail?.source } else null return Wikipedia( @@ -101,6 +93,7 @@ internal class WikipediaRepositoryImpl( id = page.pageid, text = page.extract, image = image, + url = page.fullurl, wikipediaUrl = wikipediaUrl ) } diff --git a/data/wikipedia/src/main/java/de/mm20/launcher2/wikipedia/WikipediaSerialization.kt b/data/wikipedia/src/main/java/de/mm20/launcher2/wikipedia/WikipediaSerialization.kt index af32a436..72a311bd 100644 --- a/data/wikipedia/src/main/java/de/mm20/launcher2/wikipedia/WikipediaSerialization.kt +++ b/data/wikipedia/src/main/java/de/mm20/launcher2/wikipedia/WikipediaSerialization.kt @@ -16,6 +16,7 @@ class WikipediaSerializer : SearchableSerializer { json.put("id", searchable.id) json.put("image", searchable.image) json.put("wikipedia_url", searchable.wikipediaUrl) + json.put("url", searchable.url) return json.toString() } @@ -26,12 +27,15 @@ class WikipediaSerializer : SearchableSerializer { class WikipediaDeserializer(val context: Context) : SearchableDeserializer { override fun deserialize(serialized: String): SavableSearchable? { val json = JSONObject(serialized) + val wikipediaUrl = json.optString("wikipedia_url").takeIf { !it.isNullOrBlank() } ?: return null + val id = json.getLong("id") return Wikipedia( label = json.getString("label"), text = json.getString("text"), - id = json.getLong("id"), + id = id, image = json.optString("image"), - wikipediaUrl = json.optString("wikipedia_url").takeIf { !it.isNullOrBlank() } ?: return null, + url = json.optString("url").takeIf { !it.isNullOrBlank() } ?: "${wikipediaUrl.padEnd(1, '/')}wiki?curid=$id", + wikipediaUrl = wikipediaUrl ) } } \ No newline at end of file