Commit 0df7b2e9903705c4b2201aa29a6a6c1560b102af
only cache old views for maximum of 30 minutes (instead of until restart)
Matt McKegg committed on 11/10/2016, 9:54:27 AMParent: 402f85029889d7cc332cef170ab52fdc69bf4ae4
Files changed
main-window.js | changed |
main-window.js | ||
---|---|---|
@@ -42,8 +42,19 @@ | ||
42 | 42 | [ssbClient.id]: screenView(ssbClient.id), |
43 | 43 | '/notifications': screenView('/notifications') |
44 | 44 | }) |
45 | 45 | |
46 | + var lastViewed = {} | |
47 | + | |
48 | + // delete cached view after 30 mins of last seeing | |
49 | + setInterval(() => { | |
50 | + views.keys().forEach((view) => { | |
51 | + if (lastViewed[view] !== true && Date.now() - lastViewed[view] > (30 * 60e3) && view !== currentView()) { | |
52 | + views.delete(view) | |
53 | + } | |
54 | + }) | |
55 | + }, 60e3) | |
56 | + | |
46 | 57 | var canGoForward = Value(false) |
47 | 58 | var canGoBack = Value(false) |
48 | 59 | var currentView = Value('/public') |
49 | 60 | |
@@ -95,8 +106,9 @@ | ||
95 | 106 | // scoped |
96 | 107 | |
97 | 108 | function tab (name, view) { |
98 | 109 | var instance = views.get(view) |
110 | + lastViewed[view] = true | |
99 | 111 | return h('a', { |
100 | 112 | 'ev-click': function (ev) { |
101 | 113 | if (instance.pendingUpdates && instance.pendingUpdates() && instance.reload) { |
102 | 114 | instance.reload() |
@@ -135,8 +147,17 @@ | ||
135 | 147 | function setView (view) { |
136 | 148 | if (!views.has(view)) { |
137 | 149 | views.put(view, screenView(view)) |
138 | 150 | } |
151 | + | |
152 | + if (lastViewed[view] !== true) { | |
153 | + lastViewed[view] = Date.now() | |
154 | + } | |
155 | + | |
156 | + if (currentView() && lastViewed[currentView()] !== true) { | |
157 | + lastViewed[currentView()] = Date.now() | |
158 | + } | |
159 | + | |
139 | 160 | if (view !== currentView()) { |
140 | 161 | canGoForward.set(false) |
141 | 162 | canGoBack.set(true) |
142 | 163 | forwardHistory.length = 0 |
Built with git-ssb-web