import { readSetting } from "$sb/lib/settings_page.ts"; type FederationConfig = { uri: string; perm?: "ro" | "rw"; // TODO: alias?: string; }; let federationConfigs: FederationConfig[] = []; let lastFederationUrlFetch = 0; export async function readFederationConfigs(): Promise { // Update at most every 5 seconds if (Date.now() > lastFederationUrlFetch + 5000) { federationConfigs = await readSetting("federate", []); if (!Array.isArray(federationConfigs)) { console.error("'federate' setting should be an array of objects"); return []; } // Normalize URIs for (const config of federationConfigs) { if (!config.uri) { console.error( "'federate' setting should be an array of objects with at least an 'uri' property", config, ); continue; } if (!config.uri.startsWith("!")) { config.uri = `!${config.uri}`; } } lastFederationUrlFetch = Date.now(); } return federationConfigs; }