bug: NIP-7 race condition
bug: profile change spam
This commit is contained in:
parent
4f1e5df1a8
commit
bffc8350e9
@ -9,7 +9,7 @@ import { getCurrentSubscription, SubscriptionEvent } from "Subscription";
|
|||||||
import { EventPublisher } from "System/EventPublisher";
|
import { EventPublisher } from "System/EventPublisher";
|
||||||
|
|
||||||
export function setRelays(state: LoginSession, relays: Record<string, RelaySettings>, createdAt: number) {
|
export function setRelays(state: LoginSession, relays: Record<string, RelaySettings>, createdAt: number) {
|
||||||
if (state.relays.timestamp > createdAt) {
|
if (state.relays.timestamp >= createdAt) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,7 +94,7 @@ export function generateRandomKey() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function setTags(state: LoginSession, tags: Array<string>, ts: number) {
|
export function setTags(state: LoginSession, tags: Array<string>, ts: number) {
|
||||||
if (state.tags.timestamp > ts) {
|
if (state.tags.timestamp >= ts) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
state.tags.item = tags;
|
state.tags.item = tags;
|
||||||
@ -103,7 +103,7 @@ export function setTags(state: LoginSession, tags: Array<string>, ts: number) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function setMuted(state: LoginSession, muted: Array<string>, ts: number) {
|
export function setMuted(state: LoginSession, muted: Array<string>, ts: number) {
|
||||||
if (state.muted.timestamp > ts) {
|
if (state.muted.timestamp >= ts) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
state.muted.item = muted;
|
state.muted.item = muted;
|
||||||
@ -112,7 +112,7 @@ export function setMuted(state: LoginSession, muted: Array<string>, ts: number)
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function setBlocked(state: LoginSession, blocked: Array<string>, ts: number) {
|
export function setBlocked(state: LoginSession, blocked: Array<string>, ts: number) {
|
||||||
if (state.blocked.timestamp > ts) {
|
if (state.blocked.timestamp >= ts) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
state.blocked.item = blocked;
|
state.blocked.item = blocked;
|
||||||
@ -121,7 +121,7 @@ export function setBlocked(state: LoginSession, blocked: Array<string>, ts: numb
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function setFollows(state: LoginSession, follows: Array<string>, ts: number) {
|
export function setFollows(state: LoginSession, follows: Array<string>, ts: number) {
|
||||||
if (state.follows.timestamp > ts) {
|
if (state.follows.timestamp >= ts) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
state.follows.item = follows;
|
state.follows.item = follows;
|
||||||
@ -130,7 +130,7 @@ export function setFollows(state: LoginSession, follows: Array<string>, ts: numb
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function setPinned(state: LoginSession, pinned: Array<string>, ts: number) {
|
export function setPinned(state: LoginSession, pinned: Array<string>, ts: number) {
|
||||||
if (state.pinned.timestamp > ts) {
|
if (state.pinned.timestamp >= ts) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
state.pinned.item = pinned;
|
state.pinned.item = pinned;
|
||||||
@ -139,7 +139,7 @@ export function setPinned(state: LoginSession, pinned: Array<string>, ts: number
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function setBookmarked(state: LoginSession, bookmarked: Array<string>, ts: number) {
|
export function setBookmarked(state: LoginSession, bookmarked: Array<string>, ts: number) {
|
||||||
if (state.bookmarked.timestamp > ts) {
|
if (state.bookmarked.timestamp >= ts) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
state.bookmarked.item = bookmarked;
|
state.bookmarked.item = bookmarked;
|
||||||
@ -148,7 +148,9 @@ export function setBookmarked(state: LoginSession, bookmarked: Array<string>, ts
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function addSubscription(state: LoginSession, ...subs: SubscriptionEvent[]) {
|
export function addSubscription(state: LoginSession, ...subs: SubscriptionEvent[]) {
|
||||||
state.subscriptions = dedupeById([...(state.subscriptions || []), ...subs]);
|
const newSubs = dedupeById([...(state.subscriptions || []), ...subs]);
|
||||||
state.currentSubscription = getCurrentSubscription(state.subscriptions);
|
if (newSubs.length !== state.subscriptions.length) {
|
||||||
LoginStore.updateSession(state);
|
state.currentSubscription = getCurrentSubscription(state.subscriptions);
|
||||||
|
LoginStore.updateSession(state);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,6 @@ export type EventBuilderHook = (ev: EventBuilder) => EventBuilder;
|
|||||||
export class EventPublisher {
|
export class EventPublisher {
|
||||||
#pubKey: string;
|
#pubKey: string;
|
||||||
#privateKey?: string;
|
#privateKey?: string;
|
||||||
#hasNip07 = "nostr" in window;
|
|
||||||
|
|
||||||
constructor(pubKey: string, privKey?: string) {
|
constructor(pubKey: string, privKey?: string) {
|
||||||
if (privKey) {
|
if (privKey) {
|
||||||
@ -81,6 +80,10 @@ export class EventPublisher {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get #hasNip07() {
|
||||||
|
return "nostr" in window;
|
||||||
|
}
|
||||||
|
|
||||||
#eb(k: EventKind) {
|
#eb(k: EventKind) {
|
||||||
const eb = new EventBuilder();
|
const eb = new EventBuilder();
|
||||||
return eb.pubKey(this.#pubKey).kind(k);
|
return eb.pubKey(this.#pubKey).kind(k);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user