From c74ad534d77c509e85efb9f9270faf8c233f3b7a Mon Sep 17 00:00:00 2001 From: Cynthia Date: Tue, 16 Apr 2024 13:15:12 +0200 Subject: [PATCH] perf(pdblib): use a cache for decoration data --- packages/pronouns/src/decorations/index.ts | 28 +++++++++++++++------- packages/pronouns/src/legacy.ts | 1 - 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/packages/pronouns/src/decorations/index.ts b/packages/pronouns/src/decorations/index.ts index 22d08a8..b32bd65 100644 --- a/packages/pronouns/src/decorations/index.ts +++ b/packages/pronouns/src/decorations/index.ts @@ -105,17 +105,29 @@ export function renderDecoration (decoration: DecorationData): Decoration | null } } -export async function getDecoration (decoration: string): Promise { - const data = await fetchDecoration(decoration) - return data ? renderDecoration(data) : null +const BADGES_CACHE = /* @__PURE__ */ new Map() + +export async function getDecoration (decorationId: string): Promise { + let decoration = BADGES_CACHE.get(decorationId) + if (decoration === void 0) { + const data = await fetchDecoration(decorationId) + BADGES_CACHE.set(decorationId, decoration = (data ? renderDecoration(data) : null)) + } + + return decoration } -export async function getDecorationExtension (decoration: string): Promise { - const res = await chrome.runtime.sendMessage({ kind: 'decoration', decoration: decoration }) - if (!res.success) throw new Error(res.error) +export async function getDecorationExtension (decorationId: string): Promise { + let decoration = BADGES_CACHE.get(decorationId) + if (decoration === void 0) { + const res = await chrome.runtime.sendMessage({ kind: 'decoration', decoration: decorationId }) + if (!res.success) throw new Error(res.error) + + const data = res.data as DecorationData | null + BADGES_CACHE.set(decorationId, decoration = (data ? renderDecoration(data) : null)) + } - const data = res.data as DecorationData | null - return data ? renderDecoration(data) : null + return decoration } export { diff --git a/packages/pronouns/src/legacy.ts b/packages/pronouns/src/legacy.ts index 3e8e4cf..6cd7441 100644 --- a/packages/pronouns/src/legacy.ts +++ b/packages/pronouns/src/legacy.ts @@ -53,7 +53,6 @@ export const LegacyPronouns: Record = { avoid: 'Avoid pronouns, use my name', } - export function transformSetsToIdentifier (sets: Sets | null | undefined) { if (!sets || !sets[0]) { return 'unspecified'