If we are offline we still want to be able to load the app, use it, and display attachments, avatars, etc.
Solution
There are several possible solutions:
We could use IndexedDB as a cache for files [1][2], however this doesn't help us load the entire site if we're offline, and checking the quota seems difficult.
We could use Service Workers (#87), which are designed to for this and have cache API. Note they require HTTPS so we may also need to use something like indie web server instead of grunt-contrib-connect...
I'm leaning toward Service Workers. However, not having full control of the cache is a potential issue in terms of decentralization of data...
Also, if we are trying to support the website working in the browser (i.e. outside of Electron/desktop app), then we need to make sure we can handle recovering from the cache being deleted out from under us.
Problem
If we are offline we still want to be able to load the app, use it, and display attachments, avatars, etc.
Solution
There are several possible solutions:
grunt-contrib-connect
...I'm leaning toward Service Workers. However, not having full control of the cache is a potential issue in terms of decentralization of data...
Also, if we are trying to support the website working in the browser (i.e. outside of Electron/desktop app), then we need to make sure we can handle recovering from the cache being deleted out from under us.
See also:
EDIT: related: #601 — Handle large files differently