[BlogTruyen] Synchronize tags with mutex

vianh 4 years ago
parent aec404c0a1
commit 1577afc4a9

@ -1,6 +1,8 @@
package org.koitharu.kotatsu.parsers.site package org.koitharu.kotatsu.parsers.site
import androidx.collection.ArrayMap import androidx.collection.ArrayMap
import kotlinx.coroutines.sync.Mutex
import kotlinx.coroutines.sync.withLock
import org.json.JSONArray import org.json.JSONArray
import org.jsoup.nodes.Document import org.jsoup.nodes.Document
import org.jsoup.nodes.Element import org.jsoup.nodes.Element
@ -24,6 +26,7 @@ class BlogTruyenParser(override val context: MangaLoaderContext) :
override val sortOrders: Set<SortOrder> override val sortOrders: Set<SortOrder>
get() = EnumSet.of(SortOrder.UPDATED) get() = EnumSet.of(SortOrder.UPDATED)
private val mutex = Mutex()
private val dateFormat = SimpleDateFormat("dd/MM/yyyy HH:mm", Locale.US) private val dateFormat = SimpleDateFormat("dd/MM/yyyy HH:mm", Locale.US)
private var cacheTags: ArrayMap<String, MangaTag>? = null private var cacheTags: ArrayMap<String, MangaTag>? = null
@ -225,8 +228,8 @@ class BlogTruyenParser(override val context: MangaLoaderContext) :
} }
private suspend fun getOrCreateTagMap(): ArrayMap<String, MangaTag> { private suspend fun getOrCreateTagMap(): ArrayMap<String, MangaTag> = mutex.withLock {
cacheTags?.let { return it } cacheTags?.let { return@withLock it }
val doc = context.httpGet("/timkiem/nangcao".toAbsoluteUrl(getDomain())).parseHtml() val doc = context.httpGet("/timkiem/nangcao".toAbsoluteUrl(getDomain())).parseHtml()
val tagItems = doc.select("li[data-id]") val tagItems = doc.select("li[data-id]")
val tagMap = ArrayMap<String, MangaTag>(tagItems.size) val tagMap = ArrayMap<String, MangaTag>(tagItems.size)
@ -240,6 +243,6 @@ class BlogTruyenParser(override val context: MangaLoaderContext) :
} }
cacheTags = tagMap cacheTags = tagMap
return tagMap tagMap
} }
} }

Loading…
Cancel
Save