Track follows and relays

This commit is contained in:
2022-12-28 23:28:28 +00:00
parent 99410dd8c2
commit 57418b6355
12 changed files with 172 additions and 120 deletions

View File

@ -2,12 +2,6 @@ import { createSlice } from '@reduxjs/toolkit'
import * as secp from '@noble/secp256k1';
const PrivateKeyItem = "secret";
const RelayList = "relays";
const DefaultRelays = JSON.stringify([
"wss://nostr-pub.wellorder.net",
"wss://relay.damus.io",
"wss://beta.nostr.v0l.io"
]);
const LoginSlice = createSlice({
name: "Login",
@ -25,21 +19,35 @@ const LoginSlice = createSlice({
/**
* Configured relays for this user
*/
relays: []
relays: {},
/**
* A list of pubkeys this user follows
*/
follows: []
},
reducers: {
init: (state) => {
state.privateKey = window.localStorage.getItem(PrivateKeyItem);
if(state.privateKey) {
if (state.privateKey) {
state.publicKey = secp.utils.bytesToHex(secp.schnorr.getPublicKey(state.privateKey, true));
}
state.relays = JSON.parse(window.localStorage.getItem(RelayList) || DefaultRelays);
state.relays = {
"wss://beta.nostr.v0l.io": { read: true, write: true },
"wss://nostr.v0l.io": { read: true, write: true }
};
},
setPrivateKey: (state, action) => {
state.privateKey = action.payload;
window.localStorage.setItem(PrivateKeyItem, action.payload);
state.publicKey = secp.utils.bytesToHex(secp.schnorr.getPublicKey(action.payload, true));
},
setRelays: (state, action) => {
state.relays = action.payload;
},
setFollows: (state, action) => {
state.follows = action.payload;
},
logout: (state) => {
state.privateKey = null;
window.localStorage.removeItem(PrivateKeyItem);
@ -47,5 +55,5 @@ const LoginSlice = createSlice({
}
});
export const { init, setPrivateKey, logout } = LoginSlice.actions;
export const { init, setPrivateKey, setRelays, setFollows, logout } = LoginSlice.actions;
export const reducer = LoginSlice.reducer;