diff --git a/src/app/App.svelte b/src/app/App.svelte index 94c56074..fc568797 100644 --- a/src/app/App.svelte +++ b/src/app/App.svelte @@ -4,16 +4,15 @@ import type {ComponentType, SvelteComponentTyped} from "svelte" import {nip19} from "nostr-tools" - import type {Relay} from "src/engine" import {onMount} from "svelte" import {Router, links} from "svelte-routing" import {globalHistory} from "svelte-routing/src/history" import {isNil, find, last} from "ramda" import {seconds, Fetch, shuffle} from "hurdak" import {tryFetch, hexToBech32, bech32ToHex, now} from "src/util/misc" - import {storage, relays, getSetting, dufflepud} from "src/engine2" + import type {Relay} from "src/engine2" + import {storage, session, stateKey, relays, getSetting, dufflepud} from "src/engine2" import * as engine from "src/engine2" - import {Keys} from "src/app/engine" import {loadAppData} from "src/app/state" import {theme, getThemeVariables, appName, modal} from "src/partials/state" import {logUsage} from "src/app/state" @@ -106,10 +105,8 @@ } }) - const {pubkey} = Keys - storage.ready.then(() => { - if ($pubkey) { + if ($session) { loadAppData() } @@ -147,7 +144,7 @@
- {#key $pubkey || "anonymous"} + {#key $stateKey} diff --git a/src/app/ForegroundButtons.svelte b/src/app/ForegroundButtons.svelte index e810b3b7..3ade901f 100644 --- a/src/app/ForegroundButtons.svelte +++ b/src/app/ForegroundButtons.svelte @@ -2,7 +2,7 @@ import {nip19} from "nostr-tools" import {fade} from "src/util/transition" import {modal, location} from "src/partials/state" - import {Keys} from "src/app/engine" + import {canSign} from "src/engine2" import ForegroundButton from "src/partials/ForegroundButton.svelte" import ForegroundButtons from "src/partials/ForegroundButtons.svelte" @@ -12,8 +12,6 @@ /conversations|channels|chat|relays|keys|settings|logout$/ ) - const {canSign} = Keys - const scrollToTop = () => document.body.scrollIntoView({behavior: "smooth"}) const createNote = () => { diff --git a/src/app/SideNav.svelte b/src/app/SideNav.svelte index 83978f83..2f777d83 100644 --- a/src/app/SideNav.svelte +++ b/src/app/SideNav.svelte @@ -7,12 +7,11 @@ hasNewNip04Messages, hasNewNip24Messages, hasNewNotfications, + canUseGiftWrap, + canSign, } from "src/engine2" - import {Keys} from "src/app/engine" import {menuIsOpen} from "src/app/state" - const {canSign, canUseGiftWrap} = Keys - const toggleTheme = () => theme.update(t => (t === "dark" ? "light" : "dark")) const install = () => { diff --git a/src/app/engine.ts b/src/app/engine.ts deleted file mode 100644 index 6f87e5ae..00000000 --- a/src/app/engine.ts +++ /dev/null @@ -1,46 +0,0 @@ -import {identity} from "ramda" -import {Engine} from "src/engine" - -const IMGPROXY_URL = import.meta.env.VITE_IMGPROXY_URL - -const DUFFLEPUD_URL = import.meta.env.VITE_DUFFLEPUD_URL - -const MULTIPLEXTR_URL = import.meta.env.VITE_MULTIPLEXTR_URL - -const FORCE_RELAYS = (import.meta.env.VITE_FORCE_RELAYS || "").split(",").filter(identity) - -const COUNT_RELAYS = FORCE_RELAYS.length > 0 ? FORCE_RELAYS : ["wss://rbr.bio"] - -const SEARCH_RELAYS = FORCE_RELAYS.length > 0 ? FORCE_RELAYS : ["wss://relay.nostr.band"] - -const DEFAULT_RELAYS = - FORCE_RELAYS.length > 0 - ? FORCE_RELAYS - : [ - "wss://purplepag.es", - "wss://relay.damus.io", - "wss://relay.nostr.band", - "wss://relayable.org", - "wss://nostr.wine", - ] - -const DEFAULT_FOLLOWS = (import.meta.env.VITE_DEFAULT_FOLLOWS || "").split(",").filter(identity) - -const ENABLE_ZAPS = JSON.parse(import.meta.env.VITE_ENABLE_ZAPS) - -const engine = new Engine({ - DEFAULT_FOLLOWS, - IMGPROXY_URL, - DUFFLEPUD_URL, - MULTIPLEXTR_URL, - FORCE_RELAYS, - COUNT_RELAYS, - SEARCH_RELAYS, - DEFAULT_RELAYS, - ENABLE_ZAPS, -}) - -export default engine -export const Env = engine.Env -export const Events = engine.Events -export const Keys = engine.Keys diff --git a/src/app/shared/Feed.svelte b/src/app/shared/Feed.svelte index 627775f7..8ae43dd9 100644 --- a/src/app/shared/Feed.svelte +++ b/src/app/shared/Feed.svelte @@ -1,5 +1,4 @@ - {#if !Keys.pubkey.get()} + {#if !$session}

Don't have an account?

@@ -62,7 +61,7 @@ {#key key}

- {#if Keys.canSign.get()} + {#if $canSign} {#if $userLists.length > 0} diff --git a/src/app/views/Login.svelte b/src/app/views/Login.svelte index eac515be..478440b6 100644 --- a/src/app/views/Login.svelte +++ b/src/app/views/Login.svelte @@ -5,19 +5,18 @@ import Anchor from "src/partials/Anchor.svelte" import Content from "src/partials/Content.svelte" import Heading from "src/partials/Heading.svelte" - import {login} from "src/app/state" + import {withExtension, loginWithExtension} from "src/engine2" const nip07 = "https://github.com/nostr-protocol/nips/blob/master/07.md" - const autoLogIn = async () => { - const {nostr} = window as any - - if (nostr) { - login("extension", await nostr.getPublicKey()) - } else { - modal.push({type: "login/privkey"}) - } - } + const autoLogIn = () => + withExtension(async ext => { + if (ext) { + loginWithExtension(await ext.getPublicKey()) + } else { + modal.push({type: "login/privkey"}) + } + }) const signUp = () => { modal.push({type: "onboarding", stage: "intro"}) diff --git a/src/app/views/LoginBunker.svelte b/src/app/views/LoginBunker.svelte index c7484e6b..a9bc2d4c 100644 --- a/src/app/views/LoginBunker.svelte +++ b/src/app/views/LoginBunker.svelte @@ -5,8 +5,8 @@ import Anchor from "src/partials/Anchor.svelte" import Content from "src/partials/Content.svelte" import Heading from "src/partials/Heading.svelte" - import {Keys} from "src/app/engine" - import {login} from "src/app/state" + import {isKeyValid, loginWithNsecBunker} from "src/engine2" + import {boot} from "src/app/state" let input = "" @@ -14,8 +14,9 @@ const [npub, token] = input.split("#") const pubkey = npub.startsWith("npub") ? toHex(npub) : npub - if (Keys.isKeyValid(pubkey)) { - login("bunker", {pubkey, token}) + if (isKeyValid(pubkey)) { + loginWithNsecBunker(pubkey, token) + boot() } else { toast.show("error", "Sorry, but that's an invalid public key.") } diff --git a/src/app/views/LoginConnect.svelte b/src/app/views/LoginConnect.svelte index ee1b84d8..df42645e 100644 --- a/src/app/views/LoginConnect.svelte +++ b/src/app/views/LoginConnect.svelte @@ -12,12 +12,9 @@ import Anchor from "src/partials/Anchor.svelte" import Modal from "src/partials/Modal.svelte" import RelayCard from "src/app/shared/RelayCard.svelte" - import {relays, pool, loadPubkeys, getUserRelayUrls} from "src/engine2" - import {Env, Keys} from "src/app/engine" + import {env, session, relays, pool, loadPubkeys, getUserRelayUrls} from "src/engine2" import {loadAppData} from "src/app/state" - const pubkey = Keys.pubkey.get() - let modal = null let customRelayUrl = null let searching = true @@ -29,7 +26,7 @@ uniqBy( prop("url"), // Make sure our hardcoded urls are first, since they're more likely to find a match - Env.DEFAULT_RELAYS.map(objOf("url")).concat(shuffle($relays)) + $env.DEFAULT_RELAYS.map(objOf("url")).concat(shuffle($relays)) ) ) @@ -57,7 +54,7 @@ // Wait a bit before removing the relay to smooth out the ui Promise.all([ sleep(1500), - loadPubkeys([pubkey], { + loadPubkeys([$session.pubkey], { force: true, relays: [relay.url], kinds: userKinds, @@ -122,7 +119,7 @@ }}>here.

- {#if Env.FORCE_RELAYS.length > 0} + {#if $env.FORCE_RELAYS.length > 0} {:else if Object.values(currentRelays).length > 0}

Currently searching:

diff --git a/src/app/views/LoginPrivKey.svelte b/src/app/views/LoginPrivKey.svelte index 74ca33b1..b65efd9b 100644 --- a/src/app/views/LoginPrivKey.svelte +++ b/src/app/views/LoginPrivKey.svelte @@ -6,8 +6,8 @@ import Anchor from "src/partials/Anchor.svelte" import Content from "src/partials/Content.svelte" import Heading from "src/partials/Heading.svelte" - import {Keys} from "src/app/engine" - import {login} from "src/app/state" + import {isKeyValid, loginWithPrivateKey} from "src/engine2" + import {boot} from "src/app/state" let nsec = "" const nip07 = "https://github.com/nostr-protocol/nips/blob/master/07.md" @@ -15,8 +15,9 @@ const logIn = () => { const privkey = nsec.startsWith("nsec") ? toHex(nsec) : nsec - if (Keys.isKeyValid(privkey)) { - login("privkey", privkey) + if (isKeyValid(privkey)) { + loginWithPrivateKey(privkey) + boot() } else { toast.show("error", "Sorry, but that's an invalid private key.") } diff --git a/src/app/views/LoginPubKey.svelte b/src/app/views/LoginPubKey.svelte index 4e3075ee..7d5b6cfc 100644 --- a/src/app/views/LoginPubKey.svelte +++ b/src/app/views/LoginPubKey.svelte @@ -4,17 +4,18 @@ import Anchor from "src/partials/Anchor.svelte" import Content from "src/partials/Content.svelte" import Heading from "src/partials/Heading.svelte" - import {Keys} from "src/app/engine" import {toast} from "src/partials/state" - import {login} from "src/app/state" + import {isKeyValid, loginWithPublicKey} from "src/engine2" + import {boot} from "src/app/state" let npub = "" const logIn = () => { const pubkey = npub.startsWith("npub") ? toHex(npub) : npub - if (Keys.isKeyValid(pubkey)) { - login("pubkey", pubkey) + if (isKeyValid(pubkey)) { + loginWithPublicKey(pubkey) + boot() } else { toast.show("error", "Sorry, but that's an invalid public key.") } diff --git a/src/app/views/MessagesDetail.svelte b/src/app/views/MessagesDetail.svelte index 0cc854a4..b8aba79e 100644 --- a/src/app/views/MessagesDetail.svelte +++ b/src/app/views/MessagesDetail.svelte @@ -7,6 +7,7 @@ import Anchor from "src/partials/Anchor.svelte" import NoteContent from "src/app/shared/NoteContent.svelte" import { + session, channels, derivePerson, displayPerson, @@ -14,7 +15,6 @@ nip04MarkChannelRead, loadNip04Messages, } from "src/engine2" - import {Keys} from "src/app/engine" import {routes} from "src/app/state" import PersonCircle from "src/app/shared/PersonCircle.svelte" import PersonAbout from "src/app/shared/PersonAbout.svelte" @@ -68,13 +68,13 @@ slot="message" let:message class={cx("flex overflow-hidden text-ellipsis", { - "ml-12 justify-end": message.pubkey === Keys.pubkey.get(), - "mr-12": message.pubkey !== Keys.pubkey.get(), + "ml-12 justify-end": message.pubkey === $session.pubkey, + "mr-12": message.pubkey !== $session.pubkey, })}>
{#if typeof message.content === "string"} @@ -83,8 +83,8 @@
+ class:text-gray-7={message.pubkey === $session.pubkey} + class:text-gray-1={message.pubkey !== $session.pubkey}> {formatTimestamp(message.created_at)}
diff --git a/src/app/views/NotificationInfo.svelte b/src/app/views/NotificationInfo.svelte index d050d88b..5588ae2d 100644 --- a/src/app/views/NotificationInfo.svelte +++ b/src/app/views/NotificationInfo.svelte @@ -1,6 +1,6 @@ diff --git a/src/app/views/OnboardingKey.svelte b/src/app/views/OnboardingKey.svelte index ac6d7824..14d8aea2 100644 --- a/src/app/views/OnboardingKey.svelte +++ b/src/app/views/OnboardingKey.svelte @@ -6,12 +6,12 @@ import Anchor from "src/partials/Anchor.svelte" import Heading from "src/partials/Heading.svelte" import Content from "src/partials/Content.svelte" - import {Env} from "src/app/engine" + import {env} from "src/engine2" export let privkey const nsec = nip19.nsecEncode(privkey) - const nextStage = Env.FORCE_RELAYS.length > 0 ? "follows" : "relays" + const nextStage = $env.FORCE_RELAYS.length > 0 ? "follows" : "relays" const copyKey = () => { copyToClipboard(nsec) diff --git a/src/app/views/OnboardingRelays.svelte b/src/app/views/OnboardingRelays.svelte index 370353ee..5fe6d7cf 100644 --- a/src/app/views/OnboardingRelays.svelte +++ b/src/app/views/OnboardingRelays.svelte @@ -1,5 +1,4 @@