diff --git a/src/Pages/Login.tsx b/src/Pages/Login.tsx index 70c0cbb38..643fb85d7 100644 --- a/src/Pages/Login.tsx +++ b/src/Pages/Login.tsx @@ -66,7 +66,23 @@ export default function LoginPage() { async function makeRandomKey() { let newKey = secp.utils.bytesToHex(secp.utils.randomPrivateKey()); - dispatch(setPrivateKey(newKey)) + dispatch(setPrivateKey(newKey)); + + try { + let rsp = await fetch("https://api.nostr.watch/v1/online"); + if (rsp.ok) { + let online: string[] = await rsp.json(); + let pickRandom = online.sort((a, b) => Math.random() >= 0.5 ? 1 : -1).slice(0, 4); // pick 4 random relays + + let relayObjects = pickRandom.map(a => [a, { read: true, write: true }]); + dispatch(setRelays({ + relays: Object.fromEntries(relayObjects), + createdAt: 1 + })); + } + } catch (e) { + console.warn(e); + } navigate("/new"); } diff --git a/src/State/Login.ts b/src/State/Login.ts index 746eaab8a..710155ac2 100644 --- a/src/State/Login.ts +++ b/src/State/Login.ts @@ -340,10 +340,12 @@ const LoginSlice = createSlice({ state.dmInteraction += 1; }, logout: (state) => { + let relays = { ...state.relays }; Object.assign(state, InitState); state.loggedOut = true; - state.relays = Object.fromEntries(DefaultRelays.entries()); window.localStorage.clear(); + state.relays = relays; + window.localStorage.setItem(RelayListKey, JSON.stringify(relays)); }, markNotificationsRead: (state) => { state.readNotifications = new Date().getTime();