1 changed files with 80 additions and 0 deletions
@ -0,0 +1,80 @@
|
||||
# App load order |
||||
|
||||
Old slow flow: |
||||
 |
||||
|
||||
Current more parallel flow: |
||||
 |
||||
|
||||
<details><summary>Code</summary> |
||||
<p> |
||||
<pre><code> |
||||
digraph G { |
||||
node [shape=box]; |
||||
|
||||
subgraph cluster_0 { |
||||
color=orange; |
||||
node [style=filled]; |
||||
label = "index.ts"; |
||||
|
||||
entrypoint, s0, ready [shape=point]; |
||||
rageshake, config, i18n, theme, skin, olm [shape=parallelogram]; |
||||
mobile [shape=diamond, label="mobile"]; |
||||
modernizr [shape=diamond]; |
||||
redirect, incompatible [shape=egg]; |
||||
|
||||
entrypoint -> rageshake; |
||||
rageshake -> mobile [color=blue]; |
||||
mobile -> s0 [label="No"]; |
||||
mobile -> redirect [label="Yes"]; |
||||
|
||||
s0 -> platform; |
||||
s0 -> olm; |
||||
platform -> config; |
||||
|
||||
config -> i18n [color=blue]; |
||||
config -> theme [color=blue]; |
||||
config -> skin [color=blue]; |
||||
|
||||
i18n -> modernizr [color=blue]; |
||||
theme -> modernizr [color=blue]; |
||||
skin -> modernizr [color=blue]; |
||||
|
||||
modernizr -> ready [label="Yes"]; |
||||
modernizr -> incompatible [label="No"]; |
||||
incompatible -> ready [label="user ignore"]; |
||||
|
||||
olm -> ready [color=red]; |
||||
config -> ready [color=red]; |
||||
skin -> ready [color=red]; |
||||
theme -> ready [color=red]; |
||||
i18n -> ready [color=red]; |
||||
} |
||||
|
||||
subgraph cluster_1 { |
||||
color = green; |
||||
node [style=filled]; |
||||
label = "init.tsx"; |
||||
|
||||
ready -> loadApp; |
||||
loadApp -> matrixchat; |
||||
} |
||||
} |
||||
</code></pre> |
||||
</p> |
||||
</details> |
||||
|
||||
Key: |
||||
+ Parallelogram: async/await task |
||||
+ Box: sync task |
||||
+ Diamond: conditional branch |
||||
+ Egg: user interaction |
||||
+ Blue arrow: async task is allowed to settle but allowed to fail |
||||
+ Red arrow: async task success is asserted |
||||
|
||||
Notes: |
||||
+ The success of setting up rageshake is never asserted, riot-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: |
||||
 |
Loading…
Reference in new issue