mirror of
https://github.com/PrimalHQ/primal-web-app.git
synced 2024-10-01 17:31:13 +00:00
Improve DMs
This commit is contained in:
parent
9b9c7ba370
commit
535febbff1
@ -633,6 +633,9 @@ export const MessagesProvider = (props: { children: ContextChildren }) => {
|
|||||||
|
|
||||||
// SOCKET HANDLERS ------------------------------
|
// SOCKET HANDLERS ------------------------------
|
||||||
|
|
||||||
|
let emptyUsers: string[] = [];
|
||||||
|
let fetchedSenders: Record<string, PrimalUser> = {};
|
||||||
|
|
||||||
const onMessage = (event: MessageEvent) => {
|
const onMessage = (event: MessageEvent) => {
|
||||||
const message: NostrEvent | NostrEOSE = JSON.parse(event.data);
|
const message: NostrEvent | NostrEOSE = JSON.parse(event.data);
|
||||||
|
|
||||||
@ -655,19 +658,17 @@ export const MessagesProvider = (props: { children: ContextChildren }) => {
|
|||||||
if (content?.kind === Kind.MesagePerSenderStats) {
|
if (content?.kind === Kind.MesagePerSenderStats) {
|
||||||
const senderCount = JSON.parse(content.content);
|
const senderCount = JSON.parse(content.content);
|
||||||
|
|
||||||
const senders = Object.keys(senderCount).reduce((acc, pk) => {
|
emptyUsers = Object.keys(senderCount).reduce<string[]>((acc, pk) => {
|
||||||
return { ...acc, [pk]: emptyUser(pk)};
|
if (store.senders[pk]) return [ ...acc ];
|
||||||
}, {});
|
|
||||||
|
return [ ...acc, pk];
|
||||||
|
}, []);
|
||||||
|
|
||||||
updateStore('messageCountPerSender', () => ({ ...senderCount }));
|
updateStore('messageCountPerSender', () => ({ ...senderCount }));
|
||||||
updateStore('senders', () => ({...senders}));
|
|
||||||
updateMessageTimings();
|
updateMessageTimings();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (content?.kind === Kind.Metadata) {
|
if (content?.kind === Kind.Metadata) {
|
||||||
// if (store.senders[content.pubkey]) {
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
|
|
||||||
const isFollowing = account?.following.includes(content.pubkey);
|
const isFollowing = account?.following.includes(content.pubkey);
|
||||||
|
|
||||||
@ -677,9 +678,9 @@ export const MessagesProvider = (props: { children: ContextChildren }) => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const user = convertToUser(content);
|
const user = convertToUser(content);
|
||||||
updateStore('senders', user.pubkey, () => ({ ...user }));
|
fetchedSenders[user.pubkey] = { ...user };
|
||||||
|
// updateStore('senders', user.pubkey, () => ({ ...user }));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -687,6 +688,29 @@ export const MessagesProvider = (props: { children: ContextChildren }) => {
|
|||||||
const keys = Object.keys(store.senders);
|
const keys = Object.keys(store.senders);
|
||||||
const cnt = keys.reduce((acc, k) => acc + (store.messageCountPerSender[k]?.cnt || 0) , 0);
|
const cnt = keys.reduce((acc, k) => acc + (store.messageCountPerSender[k]?.cnt || 0) , 0);
|
||||||
|
|
||||||
|
let sendersToAdd: Record<string, PrimalUser> = {};
|
||||||
|
|
||||||
|
const pks = Object.keys(fetchedSenders)
|
||||||
|
|
||||||
|
for (let i=0; i < pks.length; i++) {
|
||||||
|
const pk = pks[i];
|
||||||
|
|
||||||
|
if (store.senders[pk]) continue;
|
||||||
|
|
||||||
|
sendersToAdd[pk] = fetchedSenders[pk];
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i=0; i < emptyUsers.length; i++) {
|
||||||
|
const pk = emptyUsers[i];
|
||||||
|
if (store.senders[pk] || sendersToAdd[pk]) continue;
|
||||||
|
|
||||||
|
sendersToAdd[pk] = emptyUser(pk);
|
||||||
|
}
|
||||||
|
|
||||||
|
updateStore('senders', () => ({ ...sendersToAdd }));
|
||||||
|
|
||||||
|
fetchedSenders = {};
|
||||||
|
|
||||||
// saveMsgContacts(store.activePubkey, store.senders, store.messageCountPerSender, store.senderRelation);
|
// saveMsgContacts(store.activePubkey, store.senders, store.messageCountPerSender, store.senderRelation);
|
||||||
saveDmConversations(store.activePubkey, store.senders, store.messageCountPerSender);
|
saveDmConversations(store.activePubkey, store.senders, store.messageCountPerSender);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user