diff --git a/README.md b/README.md index 1481a772..6ffa3b1d 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ Snort supports the following NIP's: - [x] NIP-50: Search - [x] NIP-51: Lists - [x] NIP-53: Live Events +- [x] NIP-55: Android signer application - [x] NIP-57: Zaps - [x] NIP-58: Badges - [x] NIP-59: Gift Wrap diff --git a/packages/app/package.json b/packages/app/package.json index fe51c1cc..308d37ff 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -105,6 +105,7 @@ "@types/webtorrent": "^0.109.3", "@typescript-eslint/eslint-plugin": "^6.1.0", "@typescript-eslint/parser": "^6.1.0", + "@vitejs/plugin-basic-ssl": "^1.2.0", "@vitejs/plugin-react": "^4.2.0", "@webbtc/webln-types": "^3.0.0", "@webscopeio/react-textarea-autocomplete": "^4.9.2", diff --git a/packages/app/src/Pages/onboarding/start.tsx b/packages/app/src/Pages/onboarding/start.tsx index d3b5f586..daa3a14a 100644 --- a/packages/app/src/Pages/onboarding/start.tsx +++ b/packages/app/src/Pages/onboarding/start.tsx @@ -1,5 +1,4 @@ -import { unwrap } from "@snort/shared"; -import { NotEncrypted } from "@snort/system"; +import { Nip7Signer, Nip55Signer, NotEncrypted } from "@snort/system"; import { SnortContext } from "@snort/system-react"; import classNames from "classnames"; import { FormEvent, useContext, useState } from "react"; @@ -16,6 +15,8 @@ import { NewUserState } from "."; const NSEC_NPUB_REGEX = /(nsec1|npub1)[a-zA-Z0-9]{20,65}/gi; +const signer = new Nip55Signer(); + export function SignIn() { const navigate = useNavigate(); const { formatMessage } = useIntl(); @@ -25,15 +26,23 @@ export function SignIn() { const loginHandler = useLoginHandler(); const hasNip7 = "nostr" in window; + const hasNip55 = true; + async function doNip07Login() { - /*const relays = - "getRelays" in unwrap(window.nostr) ? await unwrap(window.nostr?.getRelays).call(window.nostr) : undefined;*/ - const pubKey = await unwrap(window.nostr).getPublicKey(); + const signer = new Nip7Signer(); + const pubKey = await signer.getPubKey(); LoginStore.loginWithPubkey(pubKey, LoginSessionType.Nip7); trackEvent("Login", { type: "NIP7" }); navigate("/"); } + async function doNip55Login() { + const pubKey = await signer.getPubKey(); + LoginStore.loginWithPubkey(pubKey, LoginSessionType.Nip55); + trackEvent("Login", { type: "NIP55" }); + navigate("/"); + } + async function onSubmit(e) { e.preventDefault(); doLogin(key); @@ -69,7 +78,7 @@ export function SignIn() { } }; - const nip7Login = hasNip7 && !useKey; + const signerExtLogin = (hasNip7 || hasNip55) && !useKey; return (