From ed72723b6d5cd4009a0a52686796d83efdcaff97 Mon Sep 17 00:00:00 2001 From: Ben Gotow Date: Fri, 2 Aug 2019 00:21:35 -0500 Subject: [PATCH] Use a LRU approach for the cache of translated messages --- .../translation/lib/message-header.tsx | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/app/internal_packages/translation/lib/message-header.tsx b/app/internal_packages/translation/lib/message-header.tsx index e3825ced1..7ddbde469 100644 --- a/app/internal_packages/translation/lib/message-header.tsx +++ b/app/internal_packages/translation/lib/message-header.tsx @@ -51,9 +51,17 @@ function setPrefs(opts: { disabled: string[]; automatic: string[] }) { export class TranslateMessageExtension extends MessageViewExtension { static formatMessageBody = ({ message }) => { - const result = RecentlyTranslatedBodies.find(o => o.id === message.id); - if (result && result.enabled) + // retrieve from cache and push to the end to ensure the least recently viewed message is + // removed from the cache first. + const idx = RecentlyTranslatedBodies.findIndex(o => o.id === message.id); + if (idx === -1) return; + + const [result] = RecentlyTranslatedBodies.splice(idx, 1); + RecentlyTranslatedBodies.push(result); + + if (result.enabled) { message.body = window.localStorage.getItem(`translated-${message.id}`); + } }; }