Offline mode
https://gyazo.com/7622d63ce35541453a74a7a53c2196d3
WiFi切っても
画面遷移できる
リロードできる
実装
GET API向けのHTTP Requestを全てServiceWorkerでハンドルして
NetworkFirstで扱うと、オフライン表示が可能になる
networkに対してrequestし、失敗すればcache
まだ、POSTしただけで再GETしていない物は、POST前の値がcacheに入ってしまっている
解説
daiiz.iconが中心となって推進して実装された機能
shokai.iconはなんか細かい矛盾を解決するのをがんばった
単純にUI側にもう1つoffline modeというstateが増えるので
使えなくなる機能、切り替わる機能がある
今後またそれらが替わる構想もある
どの時点からoffline modeであると見なすかも難しい
networkは接続があるようで、無い場合が多い
navigator.onLine === falseは信用できる
navigator.onLine === trueは信用できない
経路上の不具合、ログイン必要なWiFiにログインしてない等
なんかこう、下手すると今後の機能追加の足かせになりそうな地雷が多い
ServiceWorkerがするべき動作は、本当にそのアプリケーションの性質によって違う
UI上に「今オフラインモードです」と表示してユーザーに意識させるべきかどうか?とかそういう次元から違う