Fix relay list loading

This commit is contained in:
Kieran 2023-01-14 18:31:42 +00:00
parent 953b5a6b08
commit f5a5fcf22a
Signed by: Kieran
GPG Key ID: DE71CEB3925BE941
2 changed files with 14 additions and 2 deletions

View File

@ -47,7 +47,7 @@ export default function useLoginFeed() {
for (let cl of contactList) {
if (cl.content !== "") {
let relays = JSON.parse(cl.content);
dispatch(setRelays(relays));
dispatch(setRelays({ relays, createdAt: cl.created_at }));
}
let pTags = cl.tags.filter(a => a[0] === "p").map(a => a[1]);
dispatch(setFollows(pTags));

View File

@ -29,6 +29,11 @@ const LoginSlice = createSlice({
*/
relays: {},
/**
* Newest relay list timestamp
*/
latestRelays: null,
/**
* A list of pubkeys this user follows
*/
@ -87,11 +92,18 @@ const LoginSlice = createSlice({
state.publicKey = action.payload;
},
setRelays: (state, action) => {
let relays = action.payload.relays;
let createdAt = action.payload.createdAt;
if(state.latestRelays > createdAt) {
return;
}
// filter out non-websocket urls
let filtered = Object.entries({ ...state.relays, ...action.payload })
let filtered = Object.entries(relays)
.filter(a => a[0].startsWith("ws://") || a[0].startsWith("wss://"));
state.relays = Object.fromEntries(filtered);
state.latestRelays = createdAt;
},
removeRelay: (state, action) => {
delete state.relays[action.payload];