mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-12-25 10:47:38 +00:00
parent
cb3f9b9740
commit
1f75e63c37
@ -39,7 +39,7 @@ android {
|
|||||||
exclude '/META-INF/*.kotlin_module'
|
exclude '/META-INF/*.kotlin_module'
|
||||||
exclude '/META-INF/rxkotlin.properties'
|
exclude '/META-INF/rxkotlin.properties'
|
||||||
exclude '/androidsupportmultidexversion.txt'
|
exclude '/androidsupportmultidexversion.txt'
|
||||||
exclude '/org/**'
|
exclude '/org/bouncycastle/**'
|
||||||
exclude '/kotlin/**'
|
exclude '/kotlin/**'
|
||||||
exclude '/kotlinx/**'
|
exclude '/kotlinx/**'
|
||||||
}
|
}
|
||||||
|
@ -8,11 +8,13 @@ import com.skoumal.teanity.extensions.subscribeK
|
|||||||
import com.topjohnwu.magisk.R
|
import com.topjohnwu.magisk.R
|
||||||
import com.topjohnwu.magisk.data.repository.StringRepository
|
import com.topjohnwu.magisk.data.repository.StringRepository
|
||||||
import com.topjohnwu.magisk.extensions.inject
|
import com.topjohnwu.magisk.extensions.inject
|
||||||
|
import io.reactivex.Completable
|
||||||
import io.reactivex.Single
|
import io.reactivex.Single
|
||||||
import ru.noties.markwon.Markwon
|
import ru.noties.markwon.Markwon
|
||||||
import ru.noties.markwon.html.HtmlPlugin
|
import ru.noties.markwon.html.HtmlPlugin
|
||||||
import ru.noties.markwon.image.ImagesPlugin
|
import ru.noties.markwon.image.ImagesPlugin
|
||||||
import ru.noties.markwon.image.svg.SvgPlugin
|
import ru.noties.markwon.image.svg.SvgPlugin
|
||||||
|
import timber.log.Timber
|
||||||
import java.io.InputStream
|
import java.io.InputStream
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
@ -33,26 +35,35 @@ object MarkDownWindow {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun show(activity: Context, title: String?, content: Single<String>) {
|
fun show(activity: Context, title: String?, content: Single<String>) {
|
||||||
content.subscribeK {
|
val markwon = Markwon.builder(activity)
|
||||||
val markwon = Markwon.builder(activity)
|
.usePlugin(HtmlPlugin.create())
|
||||||
.usePlugin(HtmlPlugin.create())
|
.usePlugin(ImagesPlugin.create(activity))
|
||||||
.usePlugin(ImagesPlugin.create(activity))
|
.usePlugin(SvgPlugin.create(activity.resources))
|
||||||
.usePlugin(SvgPlugin.create(activity.resources))
|
.build()
|
||||||
.build()
|
val mv = LayoutInflater.from(activity).inflate(R.layout.markdown_window, null)
|
||||||
val alert = AlertDialog.Builder(activity)
|
val tv = mv.findViewById<TextView>(R.id.md_txt)
|
||||||
alert.setTitle(title)
|
|
||||||
val mv = LayoutInflater.from(activity).inflate(R.layout.markdown_window, null)
|
|
||||||
val tv = mv.findViewById<TextView>(R.id.md_txt)
|
|
||||||
try {
|
|
||||||
markwon.setMarkdown(tv, it)
|
|
||||||
} catch (e: ExceptionInInitializerError) {
|
|
||||||
//Nothing we can do about this error other than show error message
|
|
||||||
tv.setText(R.string.download_file_error)
|
|
||||||
}
|
|
||||||
|
|
||||||
alert.setView(mv)
|
content.map {
|
||||||
alert.setNegativeButton(R.string.close) { dialog, _ -> dialog.dismiss() }
|
runCatching {
|
||||||
alert.show()
|
markwon.setMarkdown(tv, it)
|
||||||
|
}.onFailure {
|
||||||
|
Timber.e(it)
|
||||||
|
// Always wrap the actual exception as it could be ExceptionInInitializerError,
|
||||||
|
// which is a fatal error and RxJava will send it to the global handler and crash
|
||||||
|
throw MarkwonException(it)
|
||||||
|
}
|
||||||
|
}.ignoreElement().onErrorResumeNext {
|
||||||
|
// Nothing we can actually do other than show error message
|
||||||
|
tv.setText(R.string.download_file_error)
|
||||||
|
Completable.complete()
|
||||||
|
}.subscribeK {
|
||||||
|
AlertDialog.Builder(activity)
|
||||||
|
.setTitle(title)
|
||||||
|
.setView(mv)
|
||||||
|
.setNegativeButton(R.string.close) { dialog, _ -> dialog.dismiss() }
|
||||||
|
.show()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class MarkwonException(e: Throwable): Exception(e)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user