From 006e1bef2be7ba54c9fb946639130bc41a0e72bd Mon Sep 17 00:00:00 2001 From: Jan-Lk Else Date: Tue, 20 Dec 2016 22:12:08 +0100 Subject: [PATCH] Some more fixes --- app/src/main/java/telegra/ph/Api.kt | 39 ++++++++++++-------- app/src/main/java/telegra/ph/Extensions.kt | 2 +- app/src/main/java/telegra/ph/MainActivity.kt | 5 ++- 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/telegra/ph/Api.kt b/app/src/main/java/telegra/ph/Api.kt index aaa07fc..0149ed4 100644 --- a/app/src/main/java/telegra/ph/Api.kt +++ b/app/src/main/java/telegra/ph/Api.kt @@ -10,14 +10,15 @@ class Api { fun getPage(id: String?, callback: (page: Page?) -> Unit) { Bridge.get("${ApiBase}getPage/$id?return_content=true").asJsonObject { response, jsonObject, bridgeException -> - callback(jsonObject?.parsePage()) + if (jsonObject != null) callback(jsonObject.parsePage()) + else callback(null) } } private fun JSONObject.parsePage(): Page? { val result: Page = Page() if (optBoolean("ok", false)) { - optJSONObject("result").let { + optJSONObject("result")?.let { result.path = it.optString("path", "") result.url = it.optString("url", "") result.title = it.optString("title", "") @@ -34,22 +35,30 @@ class Api { } private fun JSONArray.parseContent(result: Page) { - for (child in this) { - if (child is String) result.content += child - if (child is JSONObject) { - result.content += "<${child.optString("tag", "")}" - child.optJSONObject("attrs")?.let { - for (key in it.keys()) { - result.content += " $key=\"${it.optString(key, "")}\"" - } - for (i in 0 until length()) { - result.content += "${it.names()}" + try { + for (child in this) { + try { + if (child is String) result.content += child + else if (child is JSONObject) { + result.content += "<${child.optString("tag", "")}" + child.optJSONObject("attrs")?.let { + for (key in it.keys()) { + result.content += " $key=\"${it.optString(key, "")}\"" + } + for (i in 0 until length()) { + result.content += "${it.names()}" + } + } + result.content += ">" + child.optJSONArray("children").parseContent(result) + result.content += "" } + } catch (e: Exception) { + e.printStackTrace() } - result.content += ">" - child.optJSONArray("children").parseContent(result) - result.content += "" } + } catch (e: Exception) { + e.printStackTrace() } } diff --git a/app/src/main/java/telegra/ph/Extensions.kt b/app/src/main/java/telegra/ph/Extensions.kt index 201b548..b8c060c 100644 --- a/app/src/main/java/telegra/ph/Extensions.kt +++ b/app/src/main/java/telegra/ph/Extensions.kt @@ -2,4 +2,4 @@ package telegra.ph import org.json.JSONArray -operator fun JSONArray.iterator(): Iterator = (0 until length()).asSequence().map { opt(it) }.iterator() \ No newline at end of file +operator fun JSONArray.iterator(): Iterator = (0..length() - 1).map { opt(it) }.iterator() \ No newline at end of file diff --git a/app/src/main/java/telegra/ph/MainActivity.kt b/app/src/main/java/telegra/ph/MainActivity.kt index c9c27fc..af1cdb5 100644 --- a/app/src/main/java/telegra/ph/MainActivity.kt +++ b/app/src/main/java/telegra/ph/MainActivity.kt @@ -30,7 +30,10 @@ class MainActivity : AppCompatActivity(), AdvancedWebView.Listener { if (intent.action == Intent.ACTION_VIEW && !intent.dataString.isNullOrBlank() && intent.dataString.contains("telegra.ph")) { Api().getPage(intent.dataString.split("/").last()) { page -> page?.let { - val html = "

${it.title}

${it.content}" + var html = "

${it.title}

" + if (!it.author_name.isNullOrEmpty() && !it.author_url.isNullOrBlank()) html += "${it.author_name}
" + else if (!it.author_name.isNullOrEmpty()) html += "${it.author_name}
" + html += it.content webView?.loadDataWithBaseURL(it.url, html, "text/html; charset=UTF-8", null, null) } }