re-frame

https://github.com/Day8/re-frame/blob/master/docs/README.md https://github.com/Day8/re-frame/blob/master/docs/External-Resources.md
rberger 2021-06-22T02:12:29.202Z

The re-frame-10x UI freezes when I reload the browser page, I don’t remember it doing it before upgrading to the latest versions of re-frame (1.2.0) and re-frame10x (1.1.4), though its possible its due to some other issue… If I clear out the reframe-10x items in LocalStorage, it creates a new 10x UI. But I wonder what I might be doing wrong that this behavior is happening. Using shadow-cljs 2.14.5. I don’t have a literal main but I do have:

:builds {:app {:target     :browser
                :output-dir "resources/public/js/compiled"
                :asset-path "/js/compiled"
                :modules    {:app {:init-fn visx.dashboard.core/init}}
                :devtools {:http-root "resources/public"
                           :http-port 8280
                           :preloads [day8.re-frame-10x.preload]}
                :dev
                {:compiler-options
                 {:closure-defines
                  {re-frame.trace.trace-enabled?        true
                   day8.re-frame.tracing.trace-enabled? true}}}
...

rberger 2021-06-22T02:13:38.203200Z

Not sure if it might be related to the shadow-cljs config. The instructions mentions module not modules or might there be something I need to put in the init code for some shadow-cljs lifecycle?

thheller 2021-06-22T06:00:34.205800Z

config looks fine. it is :modules, where each entry in that maps defines a module

superstructor 2021-06-22T09:13:20.207200Z

That shouldn't happen @rberger. Do you have a minimal reproduction ?

rberger 2021-06-22T17:13:27.207300Z

Let me see if I can reproduce it outside our relatively huge and not public webapp. Its consistently failing there of course :-)

2021-06-22T19:49:02.208600Z

I need to send a few dozen requests to the server, but I would not like to do it at once, but divide it into packets How can I e.g send e.g. 4 simultaneous requests and the next one only after all the previous ones have succeeded. How can I do this with re-frame-http-fx? I tried using async-flow, but it seems overly complicated in this case and maybe there is a simpler way?

p-himik 2021-06-23T09:10:54.226600Z

> implementing your own effect handler is somewhat tedious Not at all, given that it will be a thin wrapper around :http-xhrio. You don't have to reimplement the whole wheel, just add a couple of atoms to track the queued requests and the in-flight requests, and that's it.

2021-06-23T18:38:31.231500Z

@emccue I have currently created a similar ugly creation to yours, but I don't like it at all. As I mentioned, I tried to simplify it by using async-flow, but it made things even more complicated. Rewriting http-xhrio in my own fashion seems cool and minimizes the amount of code I need to write, because it's only a few lines

p-himik 2021-06-22T19:52:07.208700Z

I would probably create a new effect handler, similar to :dispatch-debounce.

2021-06-22T19:58:40.208900Z

Unfortunately, I can't quite picture it. After sending a request via :http-xhrio the next queued events are immediately processed, including the next :http-xhrio. I would have to throw calback to :on-success, or make some kind of counter and call the event in a loop until the counter is released

2021-06-22T19:58:51.209100Z

Am I thinking right?

p-himik 2021-06-22T20:00:57.209400Z

No. You would create your own version of :http-xhrio that's based on that but has rate limiting added on top.

2021-06-22T20:01:29.209600Z

ah, I misread, now it's clear

2021-06-22T20:01:57.209800Z

thanks! I'll try it this way

👍 1
2021-06-22T20:08:53.210100Z

In general, this is another time when 5 minutes don't pass between my question and your answer. On the re-frame and reagent channel you are a one man army serially solving other people's problems. Appreciation. 🙃

🙂 2
superstructor 2021-06-22T21:57:01.210500Z

Try 1.1.7 please. It fixes several bugs. @rberger

superstructor 2021-06-22T21:57:13.210700Z

(1.1.7 of re-frame-10x)