88 lines
3.1 KiB
Kotlin
88 lines
3.1 KiB
Kotlin
package com.vanced.manager.core.downloader
|
|
|
|
import android.content.Context
|
|
import com.vanced.manager.R
|
|
import com.vanced.manager.utils.*
|
|
import com.vanced.manager.utils.AppUtils.musicRootPkg
|
|
import com.vanced.manager.utils.AppUtils.validateTheme
|
|
import com.vanced.manager.utils.DownloadHelper.download
|
|
import com.vanced.manager.utils.PackageHelper.downloadStockCheck
|
|
import com.vanced.manager.utils.PackageHelper.install
|
|
import com.vanced.manager.utils.PackageHelper.installMusicRoot
|
|
|
|
object MusicDownloader {
|
|
|
|
private var variant: String? = null
|
|
private var musicVersion: String? = null
|
|
private var versionCode: Int? = null
|
|
private var baseurl = ""
|
|
private var folderName: String? = null
|
|
private var downloadPath: String? = null
|
|
private var hashUrl: String? = null
|
|
|
|
fun downloadMusic(context: Context, version: String? = null) {
|
|
val prefs = context.defPrefs
|
|
musicVersion = version ?: prefs.musicVersion?.getLatestAppVersion(
|
|
musicVersions.value?.value ?: listOf("")
|
|
)
|
|
versionCode = music.value?.int("versionCode")
|
|
variant = prefs.managerVariant
|
|
baseurl = "$baseInstallUrl/music/v$musicVersion"
|
|
folderName = "music/$variant"
|
|
downloadPath = context.getExternalFilesDir(folderName)?.path
|
|
hashUrl = "$baseurl/hash.json"
|
|
|
|
downloadApk(context)
|
|
}
|
|
|
|
private fun downloadApk(context: Context, apk: String = "music") {
|
|
val url = if (apk == "stock") "$baseurl/stock/${getArch()}.apk" else "$baseurl/$variant.apk"
|
|
download(
|
|
url,
|
|
"$baseurl/",
|
|
folderName!!,
|
|
getFileNameFromUrl(url),
|
|
context,
|
|
onDownloadComplete = {
|
|
if (variant == "root" && apk != "stock") {
|
|
downloadApk(context, "stock")
|
|
return@download
|
|
}
|
|
|
|
when (apk) {
|
|
"music" -> {
|
|
if (variant == "root") {
|
|
if (validateTheme(downloadPath!!, "root", hashUrl!!, context)) {
|
|
if (downloadStockCheck(musicRootPkg, versionCode!!, context))
|
|
downloadApk(context, "stock")
|
|
else
|
|
startMusicInstall(context)
|
|
} else {
|
|
downloadApk(context, apk)
|
|
}
|
|
} else
|
|
startMusicInstall(context)
|
|
}
|
|
"stock" -> startMusicInstall(context)
|
|
}
|
|
},
|
|
onError = {
|
|
downloadingFile.postValue(
|
|
context.getString(
|
|
R.string.error_downloading,
|
|
getFileNameFromUrl(url)
|
|
)
|
|
)
|
|
})
|
|
}
|
|
|
|
fun startMusicInstall(context: Context) {
|
|
installing.postValue(true)
|
|
postReset()
|
|
if (variant == "root")
|
|
installMusicRoot(context)
|
|
else
|
|
install("${context.getExternalFilesDir("music/nonroot")}/nonroot.apk", context)
|
|
}
|
|
}
|