import { writable } from 'svelte/store';
import { getAccountData } from './api';
import { NO_MUTED_SPACES, parseMutedSpaces, type MutedSpaces } from './mute-model';

export const MUTED_SPACES_EVENT = 'dev.malice.muted_spaces';

export const mutedSpaces = writable<MutedSpaces>(NO_MUTED_SPACES);

let loaded = false;

export const mutedSpacesLoaded = () => loaded;

export async function loadMutedSpaces(): Promise<void> {
  try {
    mutedSpaces.set(parseMutedSpaces(await getAccountData(MUTED_SPACES_EVENT)));
    loaded = true;
  } catch {}
}

export function resetMutedSpaces(): void {
  loaded = false;
  mutedSpaces.set(NO_MUTED_SPACES);
}
