This is somewhat complex area so I added a few comments in key places, hopefully it clarifies it.
The gist is that we have "boundary", things that are eagerly loaded and things that aren't. That boundary is set/reset in 3 places: when creating a project, when loading a project and when a StateManager.commit() is done. The goal of this diff is to ensure that the set of eagerly loaded models is always the same regardless of how we get to a certain state, so the rest of the app doesn't have to do any awaiting/lazy loading, and can rely that the models will be in place.
This is somewhat complex area so I added a few comments in key places, hopefully it clarifies it. The gist is that we have "boundary", things that are eagerly loaded and things that aren't. That boundary is set/reset in 3 places: when creating a project, when loading a project and when a
StateManager.commit()
is done. The goal of this diff is to ensure that the set of eagerly loaded models is always the same regardless of how we get to a certain state, so the rest of the app doesn't have to do any awaiting/lazy loading, and can rely that the models will be in place.