import { Accessor, createMemo, createResource } from "solid-js"; import { Account } from "../accounts/stores"; import { createRestAPIClient, mastodon } from "masto"; const restfulCache: Record = {} export function createMastoClientFor(account: Account) { const cacheKey = [account.site, account.accessToken].join('') const cache = restfulCache[cacheKey] if (cache) return cache; const client = createRestAPIClient({ url: account.site, accessToken: account.accessToken, }) restfulCache[cacheKey] = client return client } export function useMastoClientFor(account: Accessor) { return createMemo(() => createMastoClientFor(account())) } export function createUnauthorizedClient(site: string) { const cache = restfulCache[site] if (cache) return cache; const client = createRestAPIClient({ url: site }) restfulCache[site] = client return client } export function useInstance(client: Accessor) { return createResource(client, async (client) => { return await client.v2.instance.fetch() }) }