App: show lightning address

Some formatting fixes also sneaked in.
This commit is contained in:
Anton Kovalenko 2021-09-24 05:28:10 +03:00
parent ae70ec80b1
commit 8663e85c5c

@ -55,6 +55,9 @@
$: autoMemo = genAutoMemo(payway,
accountComplete && accounts[inputId],
realAmount)
let lightningAddress;
$: lightningAddress = accountComplete ?
genAddress(payway, accounts[inputId], realAmount):""
function lnurlEncode(url) {
return bech32.encode("LNURL",
@ -66,6 +69,16 @@
return ('0' + (byte & 0xFF).toString(16)).slice(-2);
}).join('')
}
function genAddress(payway,account,amount) {
if (!account || !payway)
return ""
const prefix = amount?
((amount == Math.floor(amount)? ""+amount:
amount.toFixed(2))+payway.currency.toLowerCase()+"-"):""
if (account[0]=='+')
account=account.slice(1)
return prefix + account + "@" + payway.id + ".lnurl-pay.me"
}
function genLNURL(payway,account,amount,memo) {
let params = new URLSearchParams();
@ -163,7 +176,6 @@
<input bind:value={memo} placeholder="{autoMemo}"
class="form-control"/>
</label>
</SiteCard>
<SiteCard>
{#if lnurl}
@ -177,45 +189,56 @@
<div class="form-text mb-2 mt-2">Expecting: {payway.acc.toLowerCase()}</div>
{/if}
<div class="d-flex justify-content-center align-items-stretch m-2"
class:invisible={!lnurl}>
<!-- {#key lnurl} -->
<a href="lightning:{lnurl}">
<QR value={lnurl} size="{230}" />
</a>
<!-- {/key} -->
</div>
class:invisible={!lnurl}>
<!-- {#key lnurl} -->
<a href="lightning:{lnurl}">
<QR value={lnurl} size="{230}" />
</a>
<!-- {/key} -->
</div>
<div class="btn-group flex-wrap mt-auto mb-2"
role="group" class:invisible={!lnurl}>
<CTC let:id let:action text={lnurl}>
<button type="button" class="btn btn-outline-secondary"
id={id} on:click={action}>Copy</button>
</CTC>
{#if canShare}
<button type="button" class="btn btn-outline-secondary"
on:click={()=>{ navigator.share({text:lnurl})}}>Share
</button>
{/if}
<Tipped let:id>
<a slot="thing" role="button" class="btn btn-outline-secondary"
href="lightning:{lnurl}" {id}>Pay</a>
<div slot="tip">open in your wallet</div>
</Tipped>
<div class="d-flex justify-content-center align-items-stretch"
class:invisible={!lnurl}>
<p class="form-text">You might want to save image and share it
as you like. All form data are present in lnurl: don't share what you wanted to hide.</p>
</div>
<Tipped let:id>
<button slot="thing" {id} type="button"
class="btn btn-outline-secondary"
on:click="{()=>getInvoiceFor=lnurl}">
Invoice</button>
<div slot="tip">get an invoice for wallets with no lnurl-pay</div>
</Tipped>
</div>
{#if lightningAddress}
<CTC let:id let:action force text={lightningAddress}}>
<div class="input-group mt-3">
<div class="input-group-prepend">
<span class="input-group-text">
<a href="https://lightningaddress.com/">Lightning address:</a>
</span>
</div>
<div class="user-select-all form-control"
style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis"
on:click={action} id={id}>{lightningAddress}
</div>
</div>
</CTC>
{/if}
<div class="btn-group flex-wrap mt-auto mb-2"
role="group" class:invisible={!lnurl}>
<CTC let:id let:action text={lnurl}>
<button type="button" class="btn btn-outline-secondary"
id={id} on:click={action}>Copy</button>
</CTC>
{#if canShare}
<button type="button" class="btn btn-outline-secondary"
on:click={()=>{ navigator.share({text:lnurl})}}>Share
</button>
{/if}
<Tipped let:id>
<a slot="thing" role="button" class="btn btn-outline-secondary"
href="lightning:{lnurl}" {id}>Pay</a>
<div slot="tip">open in your wallet</div>
</Tipped>
<Tipped let:id>
<button slot="thing" {id} type="button"
class="btn btn-outline-secondary"
on:click="{()=>getInvoiceFor=lnurl}">
Invoice</button>
<div slot="tip">get an invoice for wallets with no lnurl-pay</div>
</Tipped>
</div>
</SiteCard>
</SiteDeck>