Authenticate over NIP-42 so members see hidden rooms + use one shared SimplePool
This commit is contained in:
parent
6377d00268
commit
d965cdef01
17 changed files with 251 additions and 204 deletions
|
|
@ -19,6 +19,10 @@ export type Signer = {
|
|||
let user = $state<NostrUser | null>(null);
|
||||
let signer = $state<Signer | null>(null);
|
||||
let loginModalOpen = $state(false);
|
||||
// Bumped on explicit login/logout (not on silent session restore) so the app
|
||||
// can re-fetch identity-scoped data — e.g. reload the room list once the relay
|
||||
// will serve the user's private/hidden groups.
|
||||
let sessionEpoch = $state(0);
|
||||
|
||||
export const auth = {
|
||||
get user() {
|
||||
|
|
@ -30,6 +34,9 @@ export const auth = {
|
|||
get loginModalOpen() {
|
||||
return loginModalOpen;
|
||||
},
|
||||
get sessionEpoch() {
|
||||
return sessionEpoch;
|
||||
},
|
||||
};
|
||||
|
||||
const PUBKEY_KEY = "nostr_pubkey";
|
||||
|
|
@ -89,6 +96,7 @@ export async function loginWithExtension() {
|
|||
localStorage.setItem(METHOD_KEY, "extension");
|
||||
localStorage.removeItem(NSEC_KEY);
|
||||
await setUser(pubkey);
|
||||
sessionEpoch++;
|
||||
}
|
||||
|
||||
function parseSecretKey(input: string): Uint8Array {
|
||||
|
|
@ -119,6 +127,7 @@ export async function loginWithNsec(input: string) {
|
|||
localStorage.setItem(METHOD_KEY, "nsec");
|
||||
localStorage.setItem(NSEC_KEY, nsec);
|
||||
await setUser(pubkey);
|
||||
sessionEpoch++;
|
||||
}
|
||||
|
||||
export function logout() {
|
||||
|
|
@ -128,6 +137,7 @@ export function logout() {
|
|||
localStorage.removeItem(METHOD_KEY);
|
||||
localStorage.removeItem(NSEC_KEY);
|
||||
resetJoinState();
|
||||
sessionEpoch++;
|
||||
}
|
||||
|
||||
export async function restoreSession() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue