From 5ff2942435cc38f854c396ded6e8ace7d3cf59dc Mon Sep 17 00:00:00 2001
From: Mathias Biilmann Christensen <info@mathias-biilmann.net>
Date: Tue, 27 Dec 2016 23:14:19 -0800
Subject: [PATCH] Memoize media proxies since we look them up a lot when doing
 previews

---
 src/reducers/medias.js | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/reducers/medias.js b/src/reducers/medias.js
index 65862b95..3d38e320 100644
--- a/src/reducers/medias.js
+++ b/src/reducers/medias.js
@@ -17,15 +17,18 @@ const medias = (state = Map(), action) => {
 
 export default medias;
 
+const memoizedProxies = {};
 export const getMedia = (publicFolder, state, path) => {
   // No path provided, skip
   if (!path) return null;
 
-  if (state.has(path)) {
+  let proxy = state.get(path) || memoizedProxies[path];
+  if (proxy) {
     // There is already a MediaProxy in memmory for this path. Use it.
-    return state.get(path);
+    return proxy;
   }
 
   // Create a new MediaProxy (for consistency) and return it.
-  return new MediaProxy(resolvePath(path, publicFolder), null, true);
+  proxy = memoizedProxies[path] = new MediaProxy(resolvePath(path, publicFolder), null, true);
+  return proxy;
 };