enso/app/ide-desktop/lib/client
Sergei Garin 37cc980082
Offline Mode Support (#10317)
#### Tl;dr
Closes: enso-org/cloud-v2#1283
This PR significantly reimplements Offline mode

<details><summary>Demo Presentation</summary>
<p>


https://github.com/enso-org/enso/assets/61194245/752d0423-9c0a-43ba-91e3-4a6688f77034


</p>
</details>

---

#### Context:
Offline mode is one of the core features of the dashboard. Unfortunately, after adding new features and a few refactoring,  we lost the ability to work offline.
This PR should bring this functionality back, with a few key differences:
1. We require users to sign in before using the dashboard even in local mode.
2. Once a user is logged in, we allow him to work with local files
3. If a user closes the dashboard, and then open it, he can continue using it in offline mode


#### This Change:
What does this change do in the larger context? Specific details to highlight for review:
1. Reimplements `<AuthProvider />` functionality, now it implemented on top of `<Suspense />` and ReactQuery
2. Reimplements Backend module flow, now remote backend is always created, You no longer need to check if the RemoteBackend is present
3. Introduces new `<Suspense />` component, which is aware of offline status
4. Introduce new offline-related hooks
5. Add a banner to the form if it's unable to submit it offline
6. Refactor `InviteUserDialog` to the new `<Form />` component
7. Fixes redirect bug when the app doesn't redirect a user to the dashboard after logging in
8. Fixes strange behavior when `/users/me` could stuck into infinite refetch
9. Redesign the Cloud table for offline mode.
10. Adds blocking UI dialog when a user clicks "log out" button

#### Test Plan:
This PR requires thorough QA on the login flow across the browser and IDE. All redirect logic must stay unchanged.

---
2024-06-21 07:14:40 +00:00
..
src Offline Mode Support (#10317) 2024-06-21 07:14:40 +00:00
tasks [CI] Fix the notarization (#9506) 2024-03-21 03:50:43 +00:00
bundle.ts Convert dashboard to use esbuild (#6034) 2023-03-31 16:19:07 +02:00
dist.ts Enable require-jsdoc lint and add two lints related to React (#6403) 2023-05-19 19:55:29 +00:00
electron-builder-config.ts Custom Windows Installer & Uninstaller (#9815) 2024-05-07 16:22:11 +00:00
entitlements.mac.plist Refactor gui/src/rust/ide to two app/gui and app/ide-desktop (#3157) 2021-11-16 10:04:56 +01:00
esbuild-config.ts Remove obsolete GUI arguments (#9466) 2024-04-05 16:20:56 +00:00
file-associations.ts Enable require-jsdoc lint and add two lints related to React (#6403) 2023-05-19 19:55:29 +00:00
package.json Implement Subscribe flow (#9776) 2024-05-10 12:28:49 +00:00
paths.ts Remove obsolete GUI arguments (#9466) 2024-04-05 16:20:56 +00:00
start.ts Fix some dashboard issues (#6668) 2023-05-26 10:17:03 +00:00
tsconfig.json Refactor configuration keys out of repository (#8895) 2024-03-08 03:14:26 +00:00
watch.ts Fix broken login flow (#9965) 2024-05-22 16:56:42 +03:00