|
|
|
|
@@ -22,105 +22,79 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
|
|
|
|
override fun init(context: Context?) {}
|
|
|
|
|
|
|
|
|
|
override suspend fun recordUpgradeRecord(sn: String, mac: String, type: String?) {
|
|
|
|
|
UpgradeDbHelper.insertRecord(Record(AppUtils.getAppVersionName(), sn, mac, type))
|
|
|
|
|
UpgradeDbHelper.insertRecord(Record(AppUtils.getAppVersionName(), sn, mac, type, time = System.currentTimeMillis()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override suspend fun recordUpgradeRequestStart() {
|
|
|
|
|
UpgradeDbHelper.insertCheckRecord(CheckRecord(AppUtils.getAppVersionName(), START))
|
|
|
|
|
UpgradeDbHelper.insertCheckRecord(CheckRecord(AppUtils.getAppVersionName(), START, time = System.currentTimeMillis()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override suspend fun recordUpgradeRequestSuccess(response: String) {
|
|
|
|
|
UpgradeDbHelper.insertCheckRecord(CheckRecord(AppUtils.getAppVersionName(), SUCCESS, response))
|
|
|
|
|
UpgradeDbHelper.insertCheckRecord(CheckRecord(AppUtils.getAppVersionName(), SUCCESS, response, time = System.currentTimeMillis()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override suspend fun recordUpgradeRequestFailed(error: String) {
|
|
|
|
|
UpgradeDbHelper.insertCheckRecord(CheckRecord(AppUtils.getAppVersionName(), FAIL, error))
|
|
|
|
|
UpgradeDbHelper.insertCheckRecord(CheckRecord(AppUtils.getAppVersionName(), FAIL, error, time = System.currentTimeMillis()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override suspend fun recordUpgradeRecord(newVersionName: String, newMd5: String?, type: Int) {
|
|
|
|
|
UpgradeDbHelper.insertUpgradeRecord(UpgradeRecord(fromVersionName = AppUtils.getAppVersionName(), toVersionName = newVersionName, fromMd5 = AppUtils.getAppApkMd5(), toMD5 = newMd5, type = getType(type)))
|
|
|
|
|
UpgradeDbHelper.insertUpgradeRecord(UpgradeRecord(fromVersionName = AppUtils.getAppVersionName(), toVersionName = newVersionName, fromMd5 = AppUtils.getAppApkMd5(), toMD5 = newMd5, type = getType(type), time = System.currentTimeMillis()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override suspend fun recordDownloadStart(downloadUrl: String) {
|
|
|
|
|
UpgradeDbHelper.insertDownloadRecord(DownloadRecord(versionName = AppUtils.getAppVersionName(), status = DownloadStart, downloadUrl = downloadUrl))
|
|
|
|
|
UpgradeDbHelper.insertDownloadRecord(DownloadRecord(versionName = AppUtils.getAppVersionName(), status = DownloadStart, downloadUrl = downloadUrl, time = System.currentTimeMillis()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override suspend fun recordDownloadFailed(downloadUrl: String, error: String) {
|
|
|
|
|
UpgradeDbHelper.insertDownloadRecord(DownloadRecord(versionName = AppUtils.getAppVersionName(), status = DownloadFailed, failReason = error, downloadUrl = downloadUrl))
|
|
|
|
|
UpgradeDbHelper.insertDownloadRecord(DownloadRecord(versionName = AppUtils.getAppVersionName(), status = DownloadFailed, failReason = error, downloadUrl = downloadUrl, time = System.currentTimeMillis()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override suspend fun recordDownloadSuccess(downloadUrl: String) {
|
|
|
|
|
UpgradeDbHelper.insertDownloadRecord(DownloadRecord(versionName = AppUtils.getAppVersionName(), status = DownloadComplete, downloadUrl = downloadUrl))
|
|
|
|
|
UpgradeDbHelper.insertDownloadRecord(DownloadRecord(versionName = AppUtils.getAppVersionName(), status = DownloadComplete, downloadUrl = downloadUrl, time = System.currentTimeMillis()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override suspend fun recordInstallStart() {
|
|
|
|
|
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = InstallStart))
|
|
|
|
|
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = InstallStart, time = System.currentTimeMillis()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override suspend fun recordSourceMd5CheckStart() {
|
|
|
|
|
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = SourceMd5CheckStart))
|
|
|
|
|
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = SourceMd5CheckStart, time = System.currentTimeMillis()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override suspend fun recordSourceMd5CheckFailed(error: String) {
|
|
|
|
|
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = SourceMd5CheckFailed, failReason = error))
|
|
|
|
|
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = SourceMd5CheckFailed, failReason = error, time = System.currentTimeMillis()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override suspend fun recordSourceMd5CheckSuccess() {
|
|
|
|
|
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = SourceMd5CheckSuccess))
|
|
|
|
|
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = SourceMd5CheckSuccess, time = System.currentTimeMillis()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override suspend fun recordInstallApplyPatchStart() {
|
|
|
|
|
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = ApplyPatchStart))
|
|
|
|
|
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = ApplyPatchStart, time = System.currentTimeMillis()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override suspend fun recordInstallApplyPatchFailed(error: String) {
|
|
|
|
|
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = ApplyPatchFailed, failReason = error))
|
|
|
|
|
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = ApplyPatchFailed, failReason = error, time = System.currentTimeMillis()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override suspend fun recordInstallApplyPatchSuccess() {
|
|
|
|
|
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = ApplyPatchSuccess))
|
|
|
|
|
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = ApplyPatchSuccess, time = System.currentTimeMillis()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override suspend fun recordTargetMd5CheckStart() {
|
|
|
|
|
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = TargetMd5CheckStart))
|
|
|
|
|
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = TargetMd5CheckStart, time = System.currentTimeMillis()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override suspend fun recordTargetMd5CheckFailed(error: String) {
|
|
|
|
|
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = TargetMd5CheckFailed, failReason = error))
|
|
|
|
|
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = TargetMd5CheckFailed, failReason = error, time = System.currentTimeMillis()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override suspend fun recordTargetMd5CheckSuccess() {
|
|
|
|
|
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = TargetMd5CheckSuccess))
|
|
|
|
|
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = TargetMd5CheckSuccess, time = System.currentTimeMillis()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override suspend fun recordInstallFailed(code: Int, error: String) {
|
|
|
|
|
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = InstallFailed, code = code, failReason = error))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override suspend fun isUpgradeSuccess(type: Int): Boolean {
|
|
|
|
|
val currentVersion = AppUtils.getAppVersionName()
|
|
|
|
|
val record = UpgradeDbHelper.getUpgradeRecordFull(currentVersion)
|
|
|
|
|
val toType = if (type == 0) FULL else PATCH
|
|
|
|
|
if (record != null) {
|
|
|
|
|
return (record.upgrades?.find { it.type == toType } != null) && (record.installs?.find { it.status == InstallSuccess } != null)
|
|
|
|
|
}
|
|
|
|
|
val records = UpgradeDbHelper.getAllRecords()
|
|
|
|
|
if (records.isEmpty()) {
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
records.forEach { r ->
|
|
|
|
|
val oldVersion = r.versionName
|
|
|
|
|
val q = UpgradeDbHelper.getUpgradeRecordFull(oldVersion)
|
|
|
|
|
val f = q?.upgrades?.find { it.toVersionName == currentVersion && it.type == toType }
|
|
|
|
|
if (f != null) {
|
|
|
|
|
val install = q.installs?.find { it.status == InstallSuccess }
|
|
|
|
|
if (install == null) {
|
|
|
|
|
UpgradeDbHelper.insertInstallRecord(InstallRecord(oldVersion, InstallSuccess, 0))
|
|
|
|
|
}
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false
|
|
|
|
|
UpgradeDbHelper.insertInstallRecord(InstallRecord(version = AppUtils.getAppVersionName(), status = InstallFailed, code = code, failReason = error, time = System.currentTimeMillis()))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override suspend fun getUpgradeRecords(): Map<String, List<Pair<String, String>>>? {
|
|
|
|
|
@@ -131,6 +105,10 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
|
|
|
|
}
|
|
|
|
|
val success = records.find { itx -> itx.versionName != currentVersion && (UpgradeDbHelper.getUpgradeRecordFull(itx.versionName)?.upgrades?.find { it.toVersionName == currentVersion } != null) }
|
|
|
|
|
val fail = records.find { it.versionName == currentVersion }
|
|
|
|
|
val left = if (success != null && fail != null) (records - success - fail) else if (success != null) (records - success) else if (fail != null) (records - fail) else records
|
|
|
|
|
if (left.isNotEmpty()) {
|
|
|
|
|
UpgradeDbHelper.deleteRecords(left.map { it.versionName })
|
|
|
|
|
}
|
|
|
|
|
return TreeMap<String, List<Pair<String, String>>>().also { itx ->
|
|
|
|
|
if (success != null) {
|
|
|
|
|
val all = UpgradeDbHelper.getUpgradeRecordFull(success.versionName)
|
|
|
|
|
@@ -140,6 +118,7 @@ class MoGoUpgradeProviderImpl: IMoGoUpgradeProvider {
|
|
|
|
|
itx["step_2"] = all.upgrades?.mapIndexed { index, r -> "$index" to GsonUtils.toJson(r) } ?: emptyList()
|
|
|
|
|
itx["step_3"] = all.downloads?.sortedBy { it.status.ordinal }?.mapIndexed { index, r -> "$index" to GsonUtils.toJson(r) } ?: emptyList()
|
|
|
|
|
itx["step_4"] = all.installs?.let { ArrayList<InstallRecord>(it) + InstallRecord(success.versionName, InstallSuccess, 0) }?.sortedBy { it.status.ordinal }?.mapIndexed { index, r -> "$index" to GsonUtils.toJson(r) } ?: emptyList()
|
|
|
|
|
return@also
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (fail != null) {
|
|
|
|
|
|