aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/net/lacolaco/smileessence/data/Pages.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/net/lacolaco/smileessence/data/Pages.kt')
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/data/Pages.kt57
1 files changed, 14 insertions, 43 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/data/Pages.kt b/app/src/main/java/net/lacolaco/smileessence/data/Pages.kt
index cc3c1ab1..1d898711 100644
--- a/app/src/main/java/net/lacolaco/smileessence/data/Pages.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/data/Pages.kt
@@ -1,16 +1,21 @@
package net.lacolaco.smileessence.data
-import com.beust.klaxon.*
-import net.lacolaco.smileessence.Logger
+import com.beust.klaxon.JsonObject
+import com.beust.klaxon.array
+import com.beust.klaxon.json
+import com.beust.klaxon.string
import net.lacolaco.smileessence.view.page.*
sealed class PageInfo(val fragmentClass: Class<out PageFragment<*>>) {
abstract val name: String
+ var ephemeral = false
+
abstract fun describe(): String
abstract fun toJson(): JsonObject
class ComposePageInfo() : PageInfo(ComposePageFragment::class.java) {
- override val name = "Compose"
+ override val name
+ get() = "Compose"
override fun describe(): String {
return ""
@@ -23,8 +28,9 @@ sealed class PageInfo(val fragmentClass: Class<out PageFragment<*>>) {
}
}
- class TweetsPageInfo(override val name: String, val patternStrings: List<String>) :
+ data class TweetsPageInfo(override val name: String, val patternStrings: List<String>) :
PageInfo(TweetsPageFragment::class.java) {
+ @Transient
val patterns = patternStrings.map { Regex(it) }
override fun describe(): String {
@@ -33,7 +39,8 @@ sealed class PageInfo(val fragmentClass: Class<out PageFragment<*>>) {
return sb.toString()
}
- constructor(json: JsonObject) : this(json.string("name")!!, json.array<String>("patterns")!!.toList())
+ constructor(json: JsonObject)
+ : this(json.string("name")!!, json.array<String>("patterns")!!)
override fun toJson() = json {
obj("name" to name, "patterns" to array(patternStrings))
@@ -41,7 +48,8 @@ sealed class PageInfo(val fragmentClass: Class<out PageFragment<*>>) {
}
class EventsPageInfo() : PageInfo(EventsPageFragment::class.java) {
- override val name = "Events"
+ override val name
+ get() = "Events"
override fun describe(): String {
return ""
@@ -83,41 +91,4 @@ sealed class PageInfo(val fragmentClass: Class<out PageFragment<*>>) {
obj("full_name" to fullName)
}
}
-
- // XXX: Yucks
- companion object {
- fun parseList(input: String): List<PageInfo> {
- Logger.error("parsing: $input")
- val parser = Parser()
- val json = parser.parse(StringBuilder(input)) as JsonArray<*>
- return json.map {
- val data: JsonObject = (it as JsonObject).obj("data")!!
- when (it.string("kind")) {
- "compose" -> ComposePageInfo(data)
- "tweets" -> TweetsPageInfo(data)
- "events" -> EventsPageInfo(data)
- "search" -> SearchPageInfo(data)
- "list" -> ListPageInfo(data)
- // FIXME: Remove this
- "messages" -> null
- else -> throw RuntimeException("invalid kind")
- }
- }.mapNotNull { it } // FIXME
- }
-
- fun stringifyList(input: List<PageInfo>): String {
- return json {
- array(input.map {
- val kind = when (it) {
- is ComposePageInfo -> "compose"
- is TweetsPageInfo -> "tweets"
- is EventsPageInfo -> "events"
- is SearchPageInfo -> "search"
- is ListPageInfo -> "list"
- }
- obj("kind" to kind, "data" to it.toJson())
- })
- }.toJsonString()
- }
- }
}