mirror of
https://github.com/element-hq/element-web.git
synced 2024-12-21 12:54:53 +03:00
108 lines
2.4 KiB
Markdown
108 lines
2.4 KiB
Markdown
# App load order
|
|
|
|
**Dev note**: As of March 2022, the skin is no longer part of the app load order at all. The document's graphs have
|
|
been kept untouched for posterity.
|
|
|
|
Old slow flow:
|
|
|
|
```mermaid
|
|
flowchart TD
|
|
A1(((load_modernizr))) --> B
|
|
A2((rageshake)) --> B
|
|
B(((skin))) --> C
|
|
C(((olm))) --> D
|
|
D{mobile} --> E
|
|
E((config)) --> F
|
|
F((i18n)) --> G
|
|
style F stroke:lime
|
|
G(((theme))) --> H
|
|
H(((modernizr))) --> app
|
|
style H stroke:red
|
|
```
|
|
|
|
Current more parallel flow:
|
|
|
|
```mermaid
|
|
flowchart TD
|
|
subgraph index.ts
|
|
style index.ts stroke:orange
|
|
|
|
A[/rageshake/] --> B{mobile}
|
|
B-- No -->C1(.)
|
|
B-- Yes -->C2((redirect))
|
|
C1 --> D[/olm/] --> R
|
|
C1 --> E[platform] --> F[/config/]
|
|
F --> G1[/skin/]
|
|
F --> R
|
|
G1 --> H
|
|
G1 --> R
|
|
F --> G2[/theme/]
|
|
G2 --> H
|
|
G2 --> R
|
|
F --> G3[/i18n/]
|
|
G3 --> H
|
|
G3 --> R
|
|
H{modernizr}-- No --> J((incompatible))-- user ignore --> R
|
|
H-- Yes --> R
|
|
|
|
linkStyle 0,7,9,11,12,14,15 stroke:blue;
|
|
linkStyle 4,8,10,13,16 stroke:red;
|
|
end
|
|
|
|
R>ready] --> 2A
|
|
style R stroke:gray
|
|
|
|
subgraph init.tsx
|
|
style init.tsx stroke:lime
|
|
2A[loadApp] --> 2B[matrixchat]
|
|
end
|
|
|
|
```
|
|
|
|
Key:
|
|
|
|
- Parallelogram: async/await task
|
|
- Box: sync task
|
|
- Diamond: conditional branch
|
|
- Circle: user interaction
|
|
- Blue arrow: async task is allowed to settle but allowed to fail
|
|
- Red arrow: async task success is asserted
|
|
|
|
Notes:
|
|
|
|
- A task begins when all its dependencies (arrows going into it) are fulfilled.
|
|
- The success of setting up rageshake is never asserted, element-web has a fallback path for running without IDB (and thus rageshake).
|
|
- Everything is awaited to be settled before the Modernizr check, to allow it to make use of things like i18n if they are successful.
|
|
|
|
Underlying dependencies:
|
|
|
|
```mermaid
|
|
flowchart TD
|
|
A((rageshake))
|
|
B{mobile}
|
|
C((config))
|
|
D(((olm)))
|
|
E((i18n))
|
|
F(((load_modernizr)))
|
|
G(((modernizr)))
|
|
H(((skin)))
|
|
I(((theme)))
|
|
X[app]
|
|
|
|
A --> G
|
|
A --> B
|
|
A-- assert -->X
|
|
F --> G --> X
|
|
G --> H --> X
|
|
C --> I --> X
|
|
C --> E --> X
|
|
E --> G
|
|
B --> C-- assert -->X
|
|
B --> D --> X
|
|
|
|
style X stroke:red
|
|
style G stroke:red
|
|
style E stroke:lime
|
|
linkStyle 0,11 stroke:yellow;
|
|
linkStyle 2,13 stroke:red;
|
|
```
|