Skip to content

Instantly share code, notes, and snippets.

@soequi
Last active October 1, 2022 07:06
Show Gist options
  • Select an option

  • Save soequi/3abbf34f000c1a55f7b25273bf74ddac to your computer and use it in GitHub Desktop.

Select an option

Save soequi/3abbf34f000c1a55f7b25273bf74ddac to your computer and use it in GitHub Desktop.
cljs fetch
(ns nomadcoders.frontend.app
(:require
[cljss.core :refer-macros [defstyles]]
[helix.core :refer [defnc $]]
[helix.dom :as d]
[helix.hooks :as hooks]
[promesa.core :as p]
[goog.object :as gobj]
["react-dom/client" :as rdom]))
(defn json-get [url]
(p/let [resp (js/fetch url)
json (.json resp)]
(js->clj json :keywordize-keys true)))
(defnc App
[]
(let [[loading set-loading] (hooks/use-state true)
[movies set-movies] (hooks/use-state [])]
;(hooks/use-effect []
; (-> (js/fetch "https://yts.mx/api/v2/list_movies.json?minimum_rating=8.8&sort_by=year")
; (p/then #(.json %))
; (p/then #(gobj/get % "data"))
; (p/then #(gobj/get % "movies"))
; (p/then #(js->clj % {:keywordize-keys true}))
; (p/then (fn [movie-list]
; (set-movies movie-list)
; (set-loading false)))))
(hooks/use-effect []
(p/let [{:keys [data]} (json-get "https://yts.mx/api/v2/list_movies.json?minimum_rating=8.8&sort_by=year")]
(set-movies (:movies data))
(set-loading false)))
(d/div
(d/h1 "The Coins!")
(when loading (d/strong "Loading...")))))
(defn ^:export init []
(let [root (rdom/createRoot (js/document.getElementById "root"))]
(.render root ($ App))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment