Profiles/Threads

This commit is contained in:
2022-12-27 23:46:13 +00:00
parent f42e183bc8
commit aadc58a104
18 changed files with 269 additions and 72 deletions

View File

@ -1,10 +1,12 @@
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({
@ -13,22 +15,37 @@ const LoginSlice = createSlice({
/**
* Current user private key
*/
privateKey: window.localStorage.getItem(PrivateKeyItem),
privateKey: null,
/**
* Current users public key
*/
publicKey: null,
/**
* Configured relays for this user
*/
relays: JSON.parse(window.localStorage.getItem(RelayList) || DefaultRelays)
relays: []
},
reducers: {
init: (state) => {
state.privateKey = window.localStorage.getItem(PrivateKeyItem);
if(state.privateKey) {
state.publicKey = secp.utils.bytesToHex(secp.schnorr.getPublicKey(state.privateKey, true));
}
state.relays = JSON.parse(window.localStorage.getItem(RelayList) || DefaultRelays);
},
setPrivateKey: (state, action) => {
state.privateKey = action.payload;
window.localStorage.setItem(PrivateKeyItem, action.payload);
state.publicKey = secp.utils.bytesToHex(secp.schnorr.getPublicKey(action.payload, true));
},
logout: (state) => {
state.privateKey = null;
window.localStorage.removeItem(PrivateKeyItem);
}
}
});
export const { setPrivateKey, logout } = LoginSlice.actions;
export const { init, setPrivateKey, logout } = LoginSlice.actions;
export const reducer = LoginSlice.reducer;