Working on login

This commit is contained in:
nate
2024-06-14 16:43:05 -04:00
parent 13ea2ccd9e
commit a7ec9a5100
12 changed files with 211 additions and 59 deletions

18
src/lib/app.d.ts vendored Normal file
View File

@@ -0,0 +1,18 @@
declare global {
namespace App {
interface UserProfile {
id?: string;
name?: string;
displayName?: string;
image?: string;
banner?: string;
bio?: string;
nip05?: string;
lud16?: string;
about?: string;
zapService?: string;
}
}
}
export {};

View File

@@ -0,0 +1,23 @@
<script lang="ts">
import UserInterface from '$lib/interfaces/user';
import { ndk } from '$lib/stores/nostr';
import type { NDKUserProfile } from '@nostr-dev-kit/ndk';
export let userProfile: NDKUserProfile | undefined;
let _userProfile = userProfile;
let image: string | undefined;
let defaultImage = `https://robohash.org/${userProfile?.id?.slice(0, 2)}`;
let observerUserProfile;
if (!_userProfile?.image) {
observerUserProfile = $ndk.activeUser?.profile;
}
$: {
_userProfile = $observerUserProfile! as NDKUserProfile;
image = _userProfile.image;
}
</script>
<img src={image || defaultImage} alt="User Avatar" class="is-rounded" />

View File

@@ -0,0 +1,7 @@
<script lang='ts'>
import { ndk } from '$lib/stores/nostr';
</script>
{#if !$ndk.signer}
<div></div>
{/if}

View File

@@ -0,0 +1,37 @@
<script lang="ts">
import Avatar from '$lib/components/Avatar.svelte';
import { ndk } from '$lib/stores/nostr';
import { createEventDispatcher } from 'svelte';
const dispatch = createEventDispatcher();
let avatarimage: string | undefined;
$: {
avatarimage = $ndk.activeUser?.profile?.image;
}
function signIn() {
console.debug('signing in');
dispatch('signin');
}
</script>
<nav class="navbar" aria-label="main navigation">
<div class="navbar-brand">
<h1 class="title is-1">CoFabricate</h1>
</div>
<div class="navbar-menu"></div>
<div class="navbar-end">
<div class="navbar-item">
<div class="buttons">
<a class="button" href="/">Home</a>
<a class="button" href="/about">About</a>
{#if $ndk.activeUser}
<Avatar userProfile={$ndk.activeUser.profile} />
{:else}
<button class="button" on:click={signIn}>Sign In</button>
{/if}
</div>
</div>
</div>
</nav>

View File

@@ -0,0 +1,22 @@
import { get as getStore } from 'svelte/store';
import { ndk as ndkStore } from '$lib/stores/nostr';
import GetUserParams, { type NDKUserParams } from '@nostr-dev-kit/ndk';
// import { liveQuery, type Observable } from 'dexie';
import { browser } from '$app/environment';
// import { db } from '$lib/interfaces/db';
const UserInterface = {
//get: (opts: GetUserParams): Observable<App.UserProfile> => {
get: (opts: NDKUserParams): App.UserProfile => {
const ndk = getStore(ndkStore);
const user = ndk.getUser(opts);
console.log('get user', opts);
let userProfile = { ...(user.profile || {}), id: user.pubkey };
user.fetchProfile().then(async () => {
userProfile = { ...userProfile, ...(user.profile || {}) };
});
return userProfile;
}
};
export default UserInterface;

View File

@@ -1,38 +1,36 @@
import { writable } from "svelte/store";
import NDK from "@nostr-dev-kit/ndk";
import NDKSvelte from "@nostr-dev-kit/ndk-svelte";
import { RelayList } from "@nostr-dev-kit/ndk-svelte-components";
import { writable } from 'svelte/store';
import NDKSvelte from '@nostr-dev-kit/ndk-svelte';
let relays;
try {
relays = localStorage.getItem('relays');
relays = localStorage.getItem('relays');
} catch (e) {}
let relayList: string[] = [];
if (relays) {
relayList = JSON.parse(relays);
relayList = JSON.parse(relays);
}
export const defaultRelays = [
'wss://purplepag.es',
'wss://relay.damus.io',
'wss://relay.f7z.io'
]
export const defaultRelays = ['wss://purplepag.es', 'wss://relay.damus.io', 'wss://relay.f7z.io'];
if (!relayList || !Array.isArray(relayList) || relayList.length === 0) {
relayList = defaultRelays;
relayList = defaultRelays;
}
const _ndk: NDKSvelte = new NDKSvelte({
//devWriteRelayUrls: ['wss://relay.strfront.com'],
explicitRelayUrls: relayList,
enableOutboxModel: true,
devWriteRelayUrls: ['wss://relay.strfront.com'],
explicitRelayUrls: relayList,
enableOutboxModel: true,
autoConnectUserRelays: true,
autoFetchUserMutelist: true
}) as NDKSvelte;
_ndk.connect();
export const ndk = _ndk;
console.log(_ndk.activeUser?.profile);
// export default ndk;
const ndkStore = writable(_ndk);
export const ndk = ndkStore;

4
src/lib/types.ts Normal file
View File

@@ -0,0 +1,4 @@
export enum CofabKind {
Supplier = 30000,
Order = 30001
}

0
src/lib/utils/modal.ts Normal file
View File