Commit aceb3ee8 authored by Viktor De Pasquale's avatar Viktor De Pasquale

Rewritten flashing internal modules to model

This is done in an effort to separate flash activity to smaller pieces.
parent 11d716a3
package com.topjohnwu.magisk.model.flash
import android.content.Context
import android.net.Uri
import androidx.core.os.postDelayed
import com.topjohnwu.magisk.tasks.FlashZip
import com.topjohnwu.magisk.utils.Utils
import com.topjohnwu.magisk.utils.inject
import com.topjohnwu.superuser.Shell
import com.topjohnwu.superuser.internal.UiThreadHandler
sealed class Flashing(
uri: Uri,
private val console: MutableList<String>,
log: MutableList<String>,
private val resultListener: (Result<Boolean>) -> Unit
) : FlashZip(uri, console, log) {
override fun onResult(success: Boolean) {
if (!success) {
console.add("! Installation failed")
}
resultListener(Result.success(success))
}
class Install(
uri: Uri,
console: MutableList<String>,
log: MutableList<String>,
resultListener: (Result<Boolean>) -> Unit = {}
) : Flashing(uri, console, log, resultListener) {
override fun onResult(success: Boolean) {
if (success) {
Utils.loadModules()
}
super.onResult(success)
}
}
class Uninstall(
uri: Uri,
console: MutableList<String>,
log: MutableList<String>,
resultListener: (Result<Boolean>) -> Unit = {}
) : Flashing(uri, console, log, resultListener) {
private val context: Context by inject()
override fun onResult(success: Boolean) {
if (success) {
UiThreadHandler.handler.postDelayed(3000) {
Shell.su("pm uninstall " + context.packageName).exec()
}
}
super.onResult(success)
}
}
}
\ No newline at end of file
package com.topjohnwu.magisk.model.flash
import android.net.Uri
import com.topjohnwu.magisk.tasks.MagiskInstaller
import com.topjohnwu.superuser.Shell
sealed class Patching(
private val console: MutableList<String>,
logs: List<String>,
private val resultListener: (Result<Boolean>) -> Unit
) : MagiskInstaller(console, logs) {
override fun onResult(success: Boolean) {
if (success) {
console.add("- All done!")
} else {
Shell.sh("rm -rf $installDir").submit()
console.add("! Installation failed")
}
resultListener(Result.success(success))
}
class File(
private val uri: Uri,
console: MutableList<String>,
logs: List<String>,
resultListener: (Result<Boolean>) -> Unit = {}
) : Patching(console, logs, resultListener) {
override fun operations() =
extractZip() && handleFile(uri) && patchBoot() && storeBoot()
}
class SecondSlot(
console: MutableList<String>,
logs: List<String>,
resultListener: (Result<Boolean>) -> Unit = {}
) : Patching(console, logs, resultListener) {
override fun operations() =
findSecondaryImage() && extractZip() && patchBoot() && flashBoot() && postOTA()
}
class Direct(
console: MutableList<String>,
logs: List<String>,
resultListener: (Result<Boolean>) -> Unit = {}
) : Patching(console, logs, resultListener) {
override fun operations() =
findImage() && extractZip() && patchBoot() && flashBoot()
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment