Login stuff

This commit is contained in:
2024-06-25 09:36:15 -04:00
parent b1066a1584
commit 68600a4c4b
13 changed files with 296 additions and 120 deletions

View File

@@ -1,8 +1,8 @@
<script lang="ts">
import NavBar from '$lib/components/NavBar.svelte';
import LoginModal from '$lib/components/LoginModal/Modal.svelte';
import { ndk } from '$lib/stores/nostr';
import { NDKNip07Signer } from '@nostr-dev-kit/ndk';
import { login } from "$lib/utils/login";
import { browserSetup } from "./browser-setup";
import { onMount } from 'svelte';
let modalActive = false;
@@ -11,32 +11,14 @@
await signIn();
});
function toggleModal() {
modalActive=!modalActive;
}
async function signIn() {
modalActive = !modalActive;
console.debug('signIn called');
let signer;
try {
signer = await new NDKNip07Signer();
} catch (e) {}
console.log(signer);
//if (!signer) return;
$ndk.signer = signer;
const pubkey = await signer?.user();
console.log(pubkey);
if (pubkey) {
$ndk.activeUser = pubkey;
await $ndk.activeUser.fetchProfile();
console.log($ndk.activeUser);
}
await $ndk.connect();
browserSetup();
}
</script>
<NavBar on:signin={signIn} />
<NavBar on:signin={toggleModal} />
<slot></slot>
<LoginModal active={modalActive} />
<LoginModal active={modalActive} on:toggleModal={toggleModal} />

View File

@@ -1,10 +1,5 @@
<script lang="ts">
import { ndk } from '$lib/stores/nostr.js';
import { NDKHighlight } from '@nostr-dev-kit/ndk';
import { RelayList } from '@nostr-dev-kit/ndk-svelte-components';
const img = 'https://picsum.photos/800/500';
// export let data;
</script>
<svelte:head>

View File

@@ -0,0 +1,47 @@
import { loginState } from "$lib/stores/sesson";
import { loggedIn, login, type LoginMethod } from "$lib/utils/login";
import { ndk } from "$lib/stores/nostr";
import { get } from "svelte/store";
import { currentUser } from "$lib/store";
import { NDKNip07Signer, NDKUser } from "@nostr-dev-kit/ndk";
const _ndk = get(ndk);
export async function browserSetup() {
const pubkey = localStorage.getItem('pubkey');
console.debug(pubkey);
if (pubkey){
const u = _ndk.getUser({pubkey});
u.fetchProfile();
loginState.set('logging-in')
currentUser.set(u);
}
const method = localStorage.getItem('nostr-key-method') as LoginMethod;
if (!pubkey && method !== 'none') return newSessionTryNip07();
if (method && pubkey) {
return await login(method, pubkey);
}
}
export async function newSessionTryNip07() {
let signer: NDKNip07Signer | undefined;
let u: NDKUser | null | undefined;
try {
console.debug('trying nip07 signer');
signer = new NDKNip07Signer();
u = await signer.blockUntilReady();
u.fetchProfile();
} catch (e) {
console.debug('nip07Signer failed', e);
}
if (u && signer) {
console.debug('nip07Signer succeeded');
await loggedIn(signer, u, 'nip07');
}
}