mirror of
https://github.com/vector-im/element-web.git
synced 2026-03-10 07:52:14 +01:00
mkdir apps/web/scripts
mv scripts/{cleanup.sh,ci_package.sh,copy-res.ts,deploy.py,package.sh} apps/web/scripts
And a couple of gitignore tweaks
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
134 lines
9.9 KiB
TypeScript
134 lines
9.9 KiB
TypeScript
/*
|
|
Copyright 2024 New Vector Ltd.
|
|
Copyright 2022 The Matrix.org Foundation C.I.C.
|
|
|
|
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
|
|
Please see LICENSE files in the repository root for full details.
|
|
*/
|
|
|
|
/**
|
|
* Constants for MatrixChat.state.view.
|
|
*
|
|
* The `View` is the primary state machine of the application: it has different states for the various setup flows
|
|
* that the user may find themselves in. Once we have a functioning client, we can transition to the `LOGGED_IN` state
|
|
* which is the "normal" state of the application.
|
|
*
|
|
* An incomplete state transition diagram follows.
|
|
*
|
|
* (initial state)
|
|
* ┌─────────────────┐ Lock held by other instance ┌─────────────────┐
|
|
* │ LOADING │─────────────────────────────►│ CONFIRM_LOCK_ │
|
|
* │ │◄─────────────────────────────│ THEFT │
|
|
* └─────────────────┘ Lock theft confirmed └─────────────────┘
|
|
* Session recovered │ │ │ Token/OIDC login succeeded
|
|
* ┌──────────────┘ │ └──────────────────────────────────────────────────────────────────┐
|
|
* │ └───────────────────────────────────────────┐ │
|
|
* │ │ No previous session │
|
|
* │ ▼ │
|
|
* │ (from all other states ┌─────────────────┐ │
|
|
* │ except LOCK_STOLEN) │ WELCOME │ │
|
|
* │ │ │ │ │
|
|
* │ │ Client logged out └─────────────────┘ │
|
|
* │ │ │ │ │
|
|
* │ └──────────────────────────┐ "Sign in" │ │ "Create account" │
|
|
* │ │ ┌────────────┘ └──────────────┐ │
|
|
* │ │ │ │ │
|
|
* │ "Forgot ▼ ▼ "Create an ▼ │
|
|
* │ ┌─────────────────┐ password" ┌─────────────────┐ account" ┌─────────────────┐ │
|
|
* │ │ FORGOT_PASSWORD │◄───────────────│ LOGIN │───────────────►│ REGISTER │ │
|
|
* │ │ │───────────────►│ │◄───────────────│ │ │
|
|
* │ └─────────────────┘ Complete / └─────────────────┘ "Sign in here" └─────────────────┘ │
|
|
* │ ▲ "Sign in instead" │ │ │
|
|
* │ │ └──────────────────────┐ ┌─────────┘ │
|
|
* │ │"Forgotten your │ │ ┌──────────────────┘
|
|
* │ │ password?" │ │ │
|
|
* │ │ │ │ │
|
|
* │ ┌─────────────────┐ Soft-logout error │ │ │
|
|
* │ │ SOFT_LOGOUT │◄───────────── (from all other states │ │ │
|
|
* │ │ │ except LOCK_STOLEN) │ │ │
|
|
* │ └─────────────────┘ │ │ │
|
|
* │ │ Re-authentication succeeded ▼ ▼ ▼
|
|
* │ │ ┌──────────────────┐
|
|
* ▼ ▼ │ (postLoginSetup) │
|
|
* ┌─────────────────┐ └──────────────────┘
|
|
* │ PENDING_CLIENT_ │ Account has │ │ │ Account lacks
|
|
* │ START │ cross-signing │ │ │ cross-signing
|
|
* └─────────────────┘ keys │ │ │ keys
|
|
* │ │ │ │ │
|
|
* │ └───────────────────────────────┐ │ │ │
|
|
* │ Client started, │ │ │ └──────┐
|
|
* │ force_verification pending │ │ │ │
|
|
* │ ▼ │ │ │
|
|
* │ Client started, ┌─────────────────┐ │ │ │
|
|
* │ force_verification │ COMPLETE_ │◄────────────┘ │ ▼
|
|
* │ not needed │ SECURITY │ │ ┌─────────────────┐
|
|
* │ └─────────────────┘ │ │ E2E_SETUP │
|
|
* │ │ │ │ │
|
|
* │ ┌─────────────────────────────────────┘ E2EE not enabled │ └─────────────────┘
|
|
* │ │ ┌─────────────────────────────────────────────────────────────┘ │
|
|
* │ │ │ ┌──────────────────────────────────────────────────────────────────────┘
|
|
* │ │ │ │
|
|
* │ │ │ │
|
|
* │ │ │ │
|
|
* │ │ │ │
|
|
* ▼ ▼ ▼ ▼
|
|
* ┌─────────────────┐
|
|
* │ LOGGED_IN │
|
|
* │ │
|
|
* └─────────────────┘
|
|
*
|
|
* (from all other states)
|
|
* │
|
|
* │ Session lock stolen
|
|
* ▼
|
|
* ┌─────────────────┐
|
|
* │ LOCK_STOLEN │
|
|
* │ │
|
|
* └─────────────────┘
|
|
*/
|
|
enum Views {
|
|
// a special initial state which is only used at startup, while we are
|
|
// trying to re-animate a matrix client or register as a guest.
|
|
LOADING,
|
|
|
|
// Another tab holds the lock.
|
|
CONFIRM_LOCK_THEFT,
|
|
|
|
// we are showing the welcome view
|
|
WELCOME,
|
|
|
|
// we are showing the login view
|
|
LOGIN,
|
|
|
|
// we are showing the registration view
|
|
REGISTER,
|
|
|
|
// showing the 'forgot password' view
|
|
FORGOT_PASSWORD,
|
|
|
|
// showing flow to trust this new device with cross-signing
|
|
COMPLETE_SECURITY,
|
|
|
|
// flow to setup SSSS / cross-signing on this account
|
|
E2E_SETUP,
|
|
|
|
/**
|
|
* We have successfully recovered a session from localstorage, but the client
|
|
* has not yet been started.
|
|
*/
|
|
PENDING_CLIENT_START,
|
|
|
|
// we are logged in with an active matrix client. The logged_in state also
|
|
// includes guests users as they too are logged in at the client level.
|
|
LOGGED_IN,
|
|
|
|
// We are logged out (invalid token) but have our local state again. The user
|
|
// should log back in to rehydrate the client.
|
|
SOFT_LOGOUT,
|
|
|
|
// Another instance of the application has started up. We just show an error page.
|
|
LOCK_STOLEN,
|
|
}
|
|
|
|
export default Views;
|