diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/routes/(app)/[username]/(profile)/+layout.svelte | 51 |
1 files changed, 40 insertions, 11 deletions
diff --git a/src/routes/(app)/[username]/(profile)/+layout.svelte b/src/routes/(app)/[username]/(profile)/+layout.svelte index e33c4b23..fb301905 100644 --- a/src/routes/(app)/[username]/(profile)/+layout.svelte +++ b/src/routes/(app)/[username]/(profile)/+layout.svelte @@ -1,6 +1,6 @@ <script> import { hexToUint8Array } from "uint8array-extras"; - import { copy, f, s, sats } from "$lib/utils"; + import { f, post, s, sats, success, fail } from "$lib/utils"; import Icon from "$comp/Icon.svelte"; import { t } from "$lib/translations"; import { sign, send } from "$lib/nostr"; @@ -16,11 +16,9 @@ $: ({ currency, username: n, display } = subject); $: username = n.length > 60 ? n.substr(0, 6) : display || n; - $: npub = bech32m.encode( - "npub", - toWords(hexToUint8Array(subject.pubkey)), - 180 - ); + $: npub = + subject.pubkey && + bech32m.encode("npub", toWords(hexToUint8Array(subject.pubkey)), 180); $: lnaddr = `${n}@${$page.url.host}`; $: profile = `${$page.url.host}/${n}`; @@ -64,6 +62,17 @@ let showDetails; let toggleDetails = () => (showDetails = !showDetails); + + let password; + + let reset = async () => { + try { + await post(`/${subject.username}/reset`, { password }); + success("Password reset"); + } catch (e) { + fail(e.message); + } + }; </script> <div class="container mx-auto w-full px-4 flex flex-wrap lg:flex-nowrap"> @@ -157,7 +166,8 @@ <div class="w-full flex"> <button class="mx-auto rounded-full border py-3 px-6 font-bold hover:opacity-80 flex w-60 bg-black text-white" - on:click={unfollow}> + on:click={unfollow} + > <div class="mx-auto flex"> <Icon icon={"profile"} style="my-auto h-6 mr-2 invert" /> <div class="my-auto">{$t("user.following")}</div> @@ -168,7 +178,8 @@ <div class="w-full flex"> <button class="mx-auto rounded-full border py-3 px-6 font-bold hover:opacity-80 flex w-60" - on:click={follow}> + on:click={follow} + > <div class="mx-auto flex"> <Icon icon={"profile"} style="my-auto h-6 mr-2" /> <div class="my-auto">{$t("user.follow")}</div> @@ -182,7 +193,8 @@ <div class="w-full flex"> <a href={`/${subject.username}/messages`} class="mx-auto"> <button - class="rounded-full border py-3 px-6 font-bold hover:opacity-80 flex w-60"> + class="rounded-full border py-3 px-6 font-bold hover:opacity-80 flex w-60" + > <div class="mx-auto flex"> <Icon icon="message" style="mr-2 my-auto" /> <div class="mt-1 my-auto">{$t("user.message")}</div> @@ -198,9 +210,11 @@ href={user ? `/send/${subject.username}` : `/${subject.username}/receive`} - class="mx-auto"> + class="mx-auto" + > <button - class="rounded-full border py-3 px-6 font-bold hover:opacity-80 flex w-60"> + class="rounded-full border py-3 px-6 font-bold hover:opacity-80 flex w-60" + > <div class="mx-auto flex"> <Icon icon="send" style="mr-2" /> <div class="mt-1">{$t("user.pay")}</div> @@ -209,6 +223,21 @@ </a> </div> {/if} + + {#if user?.admin && user.username !== subject.username} + <form class="w-full flex" on:submit|preventDefault={reset}> + <input placeholder="Password reset" bind:value={password} /> + <button + type="submit" + class="rounded-full border py-3 px-6 font-bold hover:opacity-80 flex w-60" + > + <div class="mx-auto flex"> + <Icon icon="clock" style="mr-2 my-auto w-8" /> + <div class="mt-1 my-auto">Reset</div> + </div> + </button> + </form> + {/if} </div> </div> |
