Make the wifi management asynchronous
We regularly get tracebacks because we shoe-horn some asynchronous calls (NetworkManager/DBus) in a synchronous process (displaying a django page).
The « correct » long-term solution seems to be to have a separate component that only handles:
- asynchronous calls to NetworkManager
- server sent events
Then the page served by Ideascube (Django) would contain a small JS thing that would listen to those server sent events.
So when connecting to a wifi network, Ideascube would just start the connection process, then return the page with a spinner (the connection is in progress) and the js would listen to server sent events.
When the server sends the event « connection success » we could remove the spinner and replace it by a checkmark.
@barbayellow says it's ok to tell people that to administer the boxes they need to use a modern web browsers. In other words, the admin UI does not have the constraints of « it must work on an ebook reader without JS ».