mirror of
https://github.com/Suwayomi/Tachidesk.git
synced 2026-01-30 07:24:25 +01:00
finished Update support: webUI side
This commit is contained in:
@@ -168,19 +168,22 @@ private fun downloadAPKFile(url: String, apkPath: String) {
|
||||
sink.close()
|
||||
}
|
||||
|
||||
fun removeExtension(pkgName: String) {
|
||||
fun uninstallExtension(pkgName: String) {
|
||||
logger.debug("Uninstalling $pkgName")
|
||||
|
||||
val extensionRecord = extensionTableAsDataClass().first { it.pkgName == pkgName }
|
||||
val fileNameWithoutType = extensionRecord.apkName.substringBefore(".apk")
|
||||
val extensionRecord = transaction { ExtensionTable.select { ExtensionTable.pkgName eq pkgName }.firstOrNull()!! }
|
||||
val fileNameWithoutType = extensionRecord[ExtensionTable.apkName].substringBefore(".apk")
|
||||
val jarPath = "${applicationDirs.extensionsRoot}/$fileNameWithoutType.jar"
|
||||
transaction {
|
||||
val extensionId = ExtensionTable.select { ExtensionTable.name eq extensionRecord.name }.first()[ExtensionTable.id]
|
||||
val extensionId = extensionRecord[ExtensionTable.id].value
|
||||
|
||||
SourceTable.deleteWhere { SourceTable.extension eq extensionId }
|
||||
ExtensionTable.update({ ExtensionTable.name eq extensionRecord.name }) {
|
||||
it[isInstalled] = false
|
||||
}
|
||||
if (extensionRecord[ExtensionTable.isObsolete])
|
||||
ExtensionTable.deleteWhere { ExtensionTable.pkgName eq pkgName }
|
||||
else
|
||||
ExtensionTable.update({ ExtensionTable.pkgName eq pkgName }) {
|
||||
it[isInstalled] = false
|
||||
}
|
||||
}
|
||||
|
||||
if (File(jarPath).exists()) {
|
||||
@@ -190,7 +193,7 @@ fun removeExtension(pkgName: String) {
|
||||
|
||||
fun updateExtension(pkgName: String): Int {
|
||||
val targetExtension = ExtensionListData.updateMap.remove(pkgName)!!
|
||||
removeExtension(pkgName)
|
||||
uninstallExtension(pkgName)
|
||||
transaction {
|
||||
ExtensionTable.update({ ExtensionTable.pkgName eq pkgName }) {
|
||||
it[name] = targetExtension.name
|
||||
|
||||
@@ -28,9 +28,11 @@ object ExtensionListData {
|
||||
var updateMap = ConcurrentHashMap<String, Extension.Available>()
|
||||
}
|
||||
|
||||
const val ExtensionUpdateDelayTime = 0 // 60 seconds
|
||||
|
||||
fun getExtensionList(): List<ExtensionDataClass> {
|
||||
// update if 60 seconds has passed or requested offline and database is empty
|
||||
if (ExtensionListData.lastUpdateCheck + 60 * 1000 < System.currentTimeMillis()) {
|
||||
// update if {ExtensionUpdateDelayTime} seconds has passed or requested offline and database is empty
|
||||
if (ExtensionListData.lastUpdateCheck + ExtensionUpdateDelayTime < System.currentTimeMillis()) {
|
||||
logger.debug("Getting extensions list from the internet")
|
||||
ExtensionListData.lastUpdateCheck = System.currentTimeMillis()
|
||||
runBlocking {
|
||||
|
||||
@@ -16,7 +16,7 @@ data class ExtensionDataClass(
|
||||
val isNsfw: Boolean,
|
||||
val apkName: String,
|
||||
val iconUrl: String,
|
||||
val isInstalled: Boolean,
|
||||
val installed: Boolean,
|
||||
val hasUpdate: Boolean,
|
||||
val isObsolete: Boolean,
|
||||
val obsolete: Boolean,
|
||||
)
|
||||
|
||||
@@ -21,13 +21,13 @@ import ir.armor.tachidesk.impl.getSourceList
|
||||
import ir.armor.tachidesk.impl.getThumbnail
|
||||
import ir.armor.tachidesk.impl.installExtension
|
||||
import ir.armor.tachidesk.impl.removeCategory
|
||||
import ir.armor.tachidesk.impl.removeExtension
|
||||
import ir.armor.tachidesk.impl.removeMangaFromCategory
|
||||
import ir.armor.tachidesk.impl.removeMangaFromLibrary
|
||||
import ir.armor.tachidesk.impl.reorderCategory
|
||||
import ir.armor.tachidesk.impl.sourceFilters
|
||||
import ir.armor.tachidesk.impl.sourceGlobalSearch
|
||||
import ir.armor.tachidesk.impl.sourceSearch
|
||||
import ir.armor.tachidesk.impl.uninstallExtension
|
||||
import ir.armor.tachidesk.impl.updateCategory
|
||||
import ir.armor.tachidesk.impl.updateExtension
|
||||
import ir.armor.tachidesk.server.util.openInBrowser
|
||||
@@ -89,7 +89,7 @@ fun javalinSetup() {
|
||||
app.get("/api/v1/extension/uninstall/:pkgName") { ctx ->
|
||||
val pkgName = ctx.pathParam("pkgName")
|
||||
|
||||
removeExtension(pkgName)
|
||||
uninstallExtension(pkgName)
|
||||
ctx.status(200)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user