get rid of the string arithmetics and just re-encode nip19 on the fly.

This commit is contained in:
fiatjaf 2023-04-26 09:09:42 -03:00
parent b1d9c9d5bf
commit 551e09ea0f
No known key found for this signature in database
GPG Key ID: BAD43C4BE5C1A3A1
2 changed files with 31 additions and 23 deletions

View File

@ -266,11 +266,33 @@ object Components {
self.value.get.flatMap(url =>
if url.startsWith("wss://") || url
.startsWith("ws://")
then
store.input.update(
_.trim() ++ " + " ++ url
) >> active.set(false)
else IO.unit
then {
store.result.get.flatMap(result =>
store.input.set(
result
.map {
case a: AddressPointer =>
NIP19
.encode(
a.copy(relays = url :: a.relays)
)
case p: ProfilePointer =>
NIP19
.encode(
p.copy(relays = url :: p.relays)
)
case e: EventPointer =>
NIP19
.encode(
e.copy(relays = url :: e.relays)
)
case r => ""
}
.getOrElse("")
)
)
>> active.set(false)
} else IO.unit
)
case _ => IO.unit
}

View File

@ -16,13 +16,12 @@ object Parser {
def parseInput(input: String): Result =
if input == "" then Left("")
else {
val spl = additions.split(input)
val result = ByteVector
.fromHex(spl.head)
else
ByteVector
.fromHex(input)
.flatMap(b => Try(Right(ByteVector32(b))).toOption)
.getOrElse(
NIP19.decode(spl.head) match {
NIP19.decode(input) match {
case Right(pp: ProfilePointer) => Right(pp)
case Right(evp: EventPointer) => Right(evp)
case Right(sk: PrivateKey) => Right(sk)
@ -43,17 +42,4 @@ object Parser {
}
}
)
val extraRelays = spl
.drop(1)
.toList
.filter(e => e.startsWith("wss://") || e.startsWith("ws://"))
result.map {
case a: AddressPointer => a.copy(relays = a.relays ::: extraRelays)
case p: ProfilePointer => p.copy(relays = p.relays ::: extraRelays)
case e: EventPointer => e.copy(relays = e.relays ::: extraRelays)
case r => r
}
}
}