@@ -288,6 +288,20 @@ abstract class HttpSource : CatalogueSource {
288
288
* @since komikku/extensions-lib 1.6
289
289
*/
290
290
protected open val supportsRelatedMangas: Boolean get() = false
291
+
292
+ /* *
293
+ * Extensions provide custom [relatedMangaListRequest] and [relatedMangaListParse]
294
+ * while also want to use App's [getRelatedMangaListBySearch] together.
295
+ * @default false
296
+ * @since komikku/extensions-lib 1.6
297
+ */
298
+ protected open val supportsRelatedMangasAndSearch: Boolean get() = false
299
+
300
+ /* *
301
+ * Disable showing any related titles
302
+ * @default false
303
+ * @since komikku/extensions-lib 1.6
304
+ */
291
305
protected open val disableRelatedMangas: Boolean get() = false
292
306
293
307
/* *
@@ -301,18 +315,30 @@ abstract class HttpSource : CatalogueSource {
301
315
*/
302
316
override suspend fun getRelatedMangaList (manga : SManga ): List <SManga > {
303
317
return when {
304
- supportsRelatedMangas -> {
305
- client.newCall(relatedMangaListRequest(manga))
306
- .execute()
307
- .let { response ->
308
- relatedMangaListParse(response)
309
- }
310
- }
318
+ supportsRelatedMangasAndSearch -> fetchRelatedMangaList(manga) + getRelatedMangaListBySearch(manga)
319
+ supportsRelatedMangas -> fetchRelatedMangaList(manga)
311
320
disableRelatedMangas -> emptyList()
312
321
else -> getRelatedMangaListBySearch(manga)
313
322
}
314
323
}
315
324
325
+ /* *
326
+ * Fetch related mangas for a manga from source/site.
327
+ * Normally it's not needed to override this method.
328
+ *
329
+ * @since komikku/extensions-lib 1.6
330
+ * @param manga the current manga to get related mangas.
331
+ * @return the related mangas for the current manga.
332
+ * @throws UnsupportedOperationException if a source doesn't support related mangas.
333
+ */
334
+ protected open suspend fun fetchRelatedMangaList (manga : SManga ): List <SManga > {
335
+ return client.newCall(relatedMangaListRequest(manga))
336
+ .execute()
337
+ .let { response ->
338
+ relatedMangaListParse(response)
339
+ }
340
+ }
341
+
316
342
/* *
317
343
* Fetch related mangas by searching for each keywords from manga's title
318
344
*
0 commit comments