73 lines
1.6 KiB
TypeScript
73 lines
1.6 KiB
TypeScript
![]() |
"use client";
|
||
|
|
||
|
import { nip19 } from "nostr-tools";
|
||
|
import NDK, {
|
||
|
NDKNip07Signer,
|
||
|
NDKNip46Signer,
|
||
|
NDKPrivateKeySigner,
|
||
|
} from "@nostr-dev-kit/ndk";
|
||
|
|
||
|
export async function _loginWithSecret(skOrNsec: string) {
|
||
|
try {
|
||
|
let privkey = skOrNsec;
|
||
|
|
||
|
if (privkey.substring(0, 4) === "nsec") {
|
||
|
privkey = nip19.decode(privkey).data as string;
|
||
|
}
|
||
|
|
||
|
const signer = new NDKPrivateKeySigner(privkey);
|
||
|
return signer.user().then(async (user) => {
|
||
|
if (user.npub) {
|
||
|
return {
|
||
|
user: user,
|
||
|
npub: user.npub,
|
||
|
sk: privkey,
|
||
|
signer: signer,
|
||
|
};
|
||
|
}
|
||
|
});
|
||
|
} catch (e) {
|
||
|
throw e;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export async function _loginWithNip46(ndk: NDK, token: string, sk?: string) {
|
||
|
try {
|
||
|
let localSigner = NDKPrivateKeySigner.generate();
|
||
|
if (sk) {
|
||
|
localSigner = new NDKPrivateKeySigner(sk);
|
||
|
}
|
||
|
|
||
|
const remoteSigner = new NDKNip46Signer(ndk, token, localSigner);
|
||
|
|
||
|
return remoteSigner.user().then(async (user) => {
|
||
|
if (user.npub) {
|
||
|
await remoteSigner.blockUntilReady();
|
||
|
return {
|
||
|
user: user,
|
||
|
npub: (await remoteSigner.user()).npub,
|
||
|
sk: localSigner.privateKey,
|
||
|
token: token,
|
||
|
remoteSigner: remoteSigner,
|
||
|
localSigner: localSigner,
|
||
|
};
|
||
|
}
|
||
|
});
|
||
|
} catch (e) {
|
||
|
throw e;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export async function _loginWithNip07() {
|
||
|
try {
|
||
|
const signer = new NDKNip07Signer();
|
||
|
return signer.user().then(async (user) => {
|
||
|
if (user.npub) {
|
||
|
return { user: user, npub: user.npub, signer: signer };
|
||
|
}
|
||
|
});
|
||
|
} catch (e) {
|
||
|
throw e;
|
||
|
}
|
||
|
}
|