diff options
| author | Craig Jennings <c@cjennings.net> | 2026-04-04 13:24:01 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-04-04 13:24:01 -0500 |
| commit | 752e2f825b1ee3eb513e27f2c03bcaef30eec767 (patch) | |
| tree | ebcc6628d778489b2c6c45e80d429499fcfaebf1 /wttrin.el | |
| parent | 821c7c1ded6bef400dcfda9aec27832f116ce369 (diff) | |
| download | emacs-wttrin-752e2f825b1ee3eb513e27f2c03bcaef30eec767.tar.gz emacs-wttrin-752e2f825b1ee3eb513e27f2c03bcaef30eec767.zip | |
fix: cache timestamp reflects request time, not response time
float-time was captured in the outer let* before the async fetch.
The callback used this stale value, making cache entries appear
slightly older than they are. Move the float-time call into the
callback so the timestamp reflects when the data actually arrived.
Diffstat (limited to 'wttrin.el')
| -rw-r--r-- | wttrin.el | 5 |
1 files changed, 2 insertions, 3 deletions
@@ -444,8 +444,7 @@ regardless of age. The background refresh timer keeps data fresh. CALLBACK is called with the weather data string when ready, or nil on error." (let* ((cache-key (wttrin--make-cache-key location)) (cached (gethash cache-key wttrin--cache)) - (data (cdr cached)) - (now (float-time))) + (data (cdr cached))) (if (and cached (not wttrin--force-refresh)) ;; Return cached data immediately regardless of age (funcall callback data) @@ -456,7 +455,7 @@ CALLBACK is called with the weather data string when ready, or nil on error." (if fresh-data (progn (wttrin--cleanup-cache-if-needed) - (puthash cache-key (cons now fresh-data) wttrin--cache) + (puthash cache-key (cons (float-time) fresh-data) wttrin--cache) (funcall callback fresh-data)) ;; On error, return stale cache if available (if cached |
