feat: add history sync worker
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
package com.bitcointxoko.gudariwallet.api
|
||||
|
||||
import com.google.gson.TypeAdapter
|
||||
import com.google.gson.stream.JsonReader
|
||||
import com.google.gson.stream.JsonToken
|
||||
import com.google.gson.stream.JsonWriter
|
||||
|
||||
/**
|
||||
* LNbits returns `comment` in PaymentExtra as either:
|
||||
* - a plain string "Thanks!"
|
||||
* - a JSON array ["Thanks!"]
|
||||
* - null
|
||||
*
|
||||
* Registered centrally in [GsonProvider] — but also applied via @JsonAdapter
|
||||
* on the field for extra safety.
|
||||
*/
|
||||
class FlexibleStringAdapter : TypeAdapter<String?>() {
|
||||
|
||||
override fun write(out: JsonWriter, value: String?) {
|
||||
if (value == null) out.nullValue() else out.value(value)
|
||||
}
|
||||
|
||||
override fun read(reader: JsonReader): String? {
|
||||
return when (reader.peek()) {
|
||||
JsonToken.NULL -> { reader.nextNull(); null }
|
||||
JsonToken.BEGIN_ARRAY -> {
|
||||
val parts = mutableListOf<String>()
|
||||
reader.beginArray()
|
||||
while (reader.hasNext()) {
|
||||
when (reader.peek()) {
|
||||
JsonToken.NULL -> reader.nextNull()
|
||||
else -> parts.add(reader.nextString())
|
||||
}
|
||||
}
|
||||
reader.endArray()
|
||||
parts.joinToString(", ").ifEmpty { null }
|
||||
}
|
||||
else -> reader.nextString()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user