Fixed shell long dumping to UI

This commit is contained in:
Viktor De Pasquale 2019-05-02 16:20:11 +02:00 committed by topjohnwu
parent 475054c48a
commit 7fee82f731

View File

@ -43,6 +43,7 @@ class FlashViewModel(
} }
private val rawItems = ObservableArrayList<String>() private val rawItems = ObservableArrayList<String>()
private val logItems = ObservableArrayList<String>()
init { init {
rawItems.sendUpdatesTo(items) { it.map { ConsoleRvItem(it) } } rawItems.sendUpdatesTo(items) { it.map { ConsoleRvItem(it) } }
@ -52,19 +53,19 @@ class FlashViewModel(
val uri = uri ?: Uri.EMPTY val uri = uri ?: Uri.EMPTY
when (action) { when (action) {
Const.Value.FLASH_ZIP -> Flashing Const.Value.FLASH_ZIP -> Flashing
.Install(uri, rawItems, rawItems, this) .Install(uri, rawItems, logItems, this)
.exec() .exec()
Const.Value.UNINSTALL -> Flashing Const.Value.UNINSTALL -> Flashing
.Uninstall(uri, rawItems, rawItems, this) .Uninstall(uri, rawItems, logItems, this)
.exec() .exec()
Const.Value.FLASH_MAGISK -> Patching Const.Value.FLASH_MAGISK -> Patching
.Direct(rawItems, rawItems, this) .Direct(rawItems, logItems, this)
.exec() .exec()
Const.Value.FLASH_INACTIVE_SLOT -> Patching Const.Value.FLASH_INACTIVE_SLOT -> Patching
.SecondSlot(rawItems, rawItems, this) .SecondSlot(rawItems, logItems, this)
.exec() .exec()
Const.Value.PATCH_FILE -> Patching Const.Value.PATCH_FILE -> Patching
.File(uri, rawItems, rawItems, this) .File(uri, rawItems, logItems, this)
.exec() .exec()
} }
} }
@ -85,13 +86,20 @@ class FlashViewModel(
fun savePressed() = withPermissions(READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE) fun savePressed() = withPermissions(READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE)
.map { now } .map { now }
.map { it.toTime(timeFormatFull) } .map { it.toTime(timeFormatStandard) }
.map { Const.MAGISK_INSTALL_LOG_FILENAME.format(it) } .map { Const.MAGISK_INSTALL_LOG_FILENAME.format(it) }
.map { File(Const.EXTERNAL_PATH, it) } .map { File(Const.EXTERNAL_PATH, it) }
.map { file -> .map { file ->
val log = items.filterIsInstance<ConsoleRvItem>() val log = items.filterIsInstance<ConsoleRvItem>()
.joinToString("\n") { it.item } .joinToString("\n") { it.item }
file.writeText(log) file.writeText(log)
val rawLog = logItems.toList().joinToString("\n")
if (rawLog.isNotBlank()) {
file.appendText("\n=== LOG ===\n")
file.appendText(rawLog)
}
file.path file.path
} }
.subscribeK { SnackbarEvent(it).publish() } .subscribeK { SnackbarEvent(it).publish() }