feat: add history sync worker

This commit is contained in:
2026-06-07 17:16:47 +02:00
parent 3f25ee4c41
commit 3b14f2fba9
25 changed files with 807 additions and 120 deletions
@@ -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()
}
}
}