From e726a674139b43efcd4123467664a5fb9e56d7cd Mon Sep 17 00:00:00 2001 From: verbiricha Date: Sun, 30 Jul 2023 00:26:16 +0200 Subject: [PATCH] feat: mute list --- src/login.ts | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/src/login.ts b/src/login.ts index 1b20352..0b6e35e 100644 --- a/src/login.ts +++ b/src/login.ts @@ -72,6 +72,11 @@ export class LoginStore extends ExternalStore { this.#save(); } + updateSession(s: LoginSession) { + this.#session = s; + this.#save(); + } + takeSnapshot() { return this.#session ? { ...this.#session } : undefined; } @@ -133,3 +138,47 @@ export function getPublisher(session: LoginSession) { } } } + +export function setFollows( + state: LoginSession, + follows: Array, + ts: number, +) { + if (state.follows.timestamp >= ts) { + return; + } + state.follows.tags = follows; + state.follows.timestamp = ts; +} + +export function setEmojis(state: LoginSession, emojis: Array) { + state.emojis = emojis; +} + +export function setMuted( + state: LoginSession, + muted: Array, + ts: number, +) { + if (state.muted.timestamp >= ts) { + return; + } + state.muted.tags = muted; + state.muted.timestamp = ts; +} + +export function setRelays( + state: LoginSession, + relays: Array, + ts: number, +) { + if (state.relays.timestamp >= ts) { + return; + } + state.relays = relays.reduce((acc, r) => { + const [, relay] = r; + const write = r.length === 2 || r.includes("write"); + const read = r.length === 2 || r.includes("read"); + return { ...acc, [relay]: { read, write } }; + }, {}); +}