recent.cljs 1.3 KB

123456789101112131415161718192021222324252627282930313233
  1. (ns frontend.handler.file-based.recent
  2. "Fns related to recent pages feature"
  3. (:require [frontend.db :as db]
  4. [frontend.util :as util]
  5. [clojure.string :as string]))
  6. (defn add-page-to-recent!
  7. [repo page click-from-recent?]
  8. (let [pages (or (db/get-key-value repo :recent/pages)
  9. '())]
  10. (when (or (and click-from-recent? (not ((set pages) page)))
  11. (not click-from-recent?))
  12. (let [new-pages (take 15 (distinct (cons page pages)))]
  13. (db/set-key-value repo :recent/pages new-pages)))))
  14. (defn update-or-add-renamed-page [repo old-page-name new-page-name]
  15. (let [pages (or (db/get-key-value repo :recent/pages)
  16. '())
  17. updated-pages (replace {old-page-name new-page-name} pages)
  18. updated-pages* (if (contains? (set updated-pages) new-page-name)
  19. updated-pages
  20. (cons new-page-name updated-pages))]
  21. (db/set-key-value repo :recent/pages updated-pages*)))
  22. (defn get-recent-pages
  23. []
  24. (->> (db/sub-key-value :recent/pages)
  25. (remove string/blank?)
  26. (filter string?)
  27. (map (fn [page] {:lowercase (util/safe-page-name-sanity-lc page)
  28. :page page}))
  29. (util/distinct-by :lowercase)
  30. (map :page)))