mirror of
https://github.com/enso-org/enso.git
synced 2024-12-23 21:12:44 +03:00
37cc980082
#### 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. --- |
||
---|---|---|
.. | ||
.vscode | ||
lib | ||
.example.env | ||
.gitignore | ||
eslint.config.js | ||
package.json | ||
README.md | ||
tsconfig.json |
Desktop app
This folder contains projects related to the desktop app.
Folder structure
Refer to the README.md
in each individual module (if it exists) for the
internal folder structure of the module.
assets/
: Icons and images used by other modules. Currently these are only used bydashboard/
.client/
: The code for the Electron desktop app.common/
: Utility functions required by multiple other modules.content/
: The entry point for the GUI1 web app. This is the main page for the desktop app.content-config/
: The statically-typed configuration object forcontent/
.dashboard/
: The dashboard, used to manage projects. It launches the GUI (located incontent/
for GUI1, or/app/gui2/
for GUI2) when a project is opened.esbuild-plugin-copy-directories/
: An ESBuild plugin for continuously copying directories from the a given location to a given subdirectory of the build output directory.icons/
: Generates the logo for the app.ts-plugin-namespace-auto-import/
: (WIP) A TypeScript plugin to change auto-import to useimport * as moduleName
rather thanimport {}
.types/
: Miscellaneous types used by multiple modules.