mirror of
				https://github.com/topjohnwu/Magisk.git
				synced 2025-10-31 23:10:05 +00:00 
			
		
		
		
	| @@ -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) | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 topjohnwu
					topjohnwu