First thanks for replying here, I feel like I’m asking too much effort over an occasional issue. I was thinking it was good to capture after I caught myself out and made a range of edits across different notes and had to work back through them all to fix it.
Yes, I think this could be painful: we tried dealing with this for an internal app syncing content on a mobile device that, as an example, would move between Corporate Network (Proxied) -> Public network (Sometimes Captive) -> Offline -> Public network (VPN + Proxy)
and so on.
Not all proxies or portals will return the 407
auth failure, they may redirect to an auth page (captive), drop the connection, successfully return the wrong content (e.g., a “access blocked” page), etc.
State validation became pointlessly complex so we opted for a “captive style” check of get https://app.privateEnterpriseServer.org/online.txt -> if "200 OK" && online.txt contains <hash within file> then { online } else { offline }
, as we don’t really care about anything other than confirming we are connected, and the expected content in online.txt
isn’t being replaced (like can happen with MITM proxies and captive portals).
Thats what got me thinking something like “https://store.inkdrop.app/success.txt” would be useful to avoid parsing the Electron behaviours for different network states.
I’ve used other apps that default to [Conflicted]
, it can be OK as it gives you a chance to do your own external merge. Could it also suggest a patch if there’s mismatched changes coming in from another client?
I’m not sure, as a personal preference I don’t mind a non-modal warning to indicate sync is offline, e.g., inkdrop uses the non-modal confirmation of Synced at the bottom left, would something subtle (such as a low-tone orange “Sync Offline”) be too intrusive in the design?
Thank you again for the time in your replies!