ekzyis 845157c954 Add market form + page
* market form with question, description and end date
* markets cost 1k sats
* a goroutine polls pending invoices from the db and checks LND for their status
* markets are listed on front page (after paid)
* market page contains buttons to bet yes or no
* users have names now

TODO:
* show correct market percentage
* show how percentage changed over time in chart
* validate end date
* implement betting / order form
2024-08-24 02:35:15 -05:00

46 lines
1.2 KiB
Plaintext

package components
import (
"encoding/base64"
"github.com/skip2/go-qrcode"
)
templ Qr(value string, href string) {
if href != "" {
<a
class="mx-auto no-link"
href={ templ.SafeURL(href) }
>
<img src={ "data:image/jpeg;base64," + qrEncode(value) }/>
</a>
<small class="flex my-1 mx-auto">
<span class="block w-[188px] overflow-hidden">{ value }</span>
<button id="copy" class="ms-1 button w-[64px]" hx-preserve>copy</button>
</small>
@CopyButton(value)
} else {
<img src={ "data:image/jpeg;base64," + qrEncode(value) }/>
}
}
templ CopyButton(value string) {
<div class="none" id="copy-data" copy-data={ templ.JSONString(value) } hx-preserve></div>
<script type="text/javascript" id="copy-js" hx-preserve>
var $ = selector => document.querySelector(selector)
var value = JSON.parse($("#copy-data").getAttribute("copy-data"))
$("#copy").onclick = function () {
window.navigator.clipboard.writeText(value)
$("#copy").textContent = "copied"
setTimeout(() => $("#copy").textContent = "copy", 1000)
}
</script>
}
func qrEncode(value string) string {
png, err := qrcode.Encode(value, qrcode.Medium, 256)
if err != nil {
return ""
}
return base64.StdEncoding.EncodeToString([]byte(png))
}