aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/Lnurlp.svelte
blob: 5f07560728162f8b22f25faa128b27e8cab0484c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<script>
  import { t } from "$lib/translations";
  import { enhance } from "$app/forms";
  import Numpad from "$comp/Numpad.svelte";
  import Spinner from "$comp/Spinner.svelte";
  import { pin } from "$lib/store";

  export let data, form, send, comment;
  let { currency } = data.user;
  let { minSendable, maxSendable, commentAllowed, callback, metadata, rates } =
    data;

  $: rate = rates[currency];

  let amount = Math.round(minSendable / 1000),
    loading;
  let submit = () => (loading = true);
</script>

<div class="container px-4 mt-20 max-w-xl mx-auto space-y-2">
  <div class="text-center mb-8">
    {#each JSON.parse(metadata) as m}
      <div>
        {#if m[0] === "text/plain"}
          <h1 class="text-3xl md:text-4xl font-semibold mb-2">{m[1]}</h1>
        {/if}
        {#if m[0].includes("image")}
          <img src={`data:image/png;base64,${m[1]}`} alt="Recipient" />
        {/if}
      </div>
    {/each}
  </div>

  {#if form?.error}
    <div class="text-red-600 text-center mb-5">
      {form.error}
    </div>
  {/if}

  <Numpad bind:amount bind:rate {currency} bind:submit={send} />

  <form action="?/pay" method="POST" use:enhance on:submit={submit}>
    <input name="amount" value={amount} type="hidden" />
    <input name="minSendable" value={minSendable} type="hidden" />
    <input name="maxSendable" value={maxSendable} type="hidden" />
    <input name="callback" value={callback} type="hidden" />
    <input name="pin" value={$pin} type="hidden" />

    {#if commentAllowed}
      <textarea
        name="comment"
        placeholder={$t("payments.message")}
        class="w-full p-4 border rounded-xl h-32 text-xl"
        bind:value={comment}
        autocapitalize="none"
      />
    {/if}

    <div class="flex w-full">
      <button
        bind:this={send}
        type="submit"
        class="opacity-100 hover:opacity-80'} rounded-2xl border py-3 font-bold mx-auto mt-2 bg-black text-white px-4 w-24"
      >
        {#if loading}
          <Spinner />
        {:else}
          {$t("payments.send")}
        {/if}
      </button>
    </div>
  </form>
</div>