When user opens ssh key form, navigates to a different rote and returns, ssh key
form shows that a custom key is added, but it's just a leftover from the
previous open of the form. It seems that Ember Model caches the new model in
the store and returns it from fetch. The fix is to return null in such case.
This commit starts refactoring of one of the remaining areas where we do weird
tricks to get the desired behaviour. Namely, we were treating "my_repositories"
and "recent" not as individual routes with separate URLs, but only different
states on the repos controller. Such approach leads to various problem with
connecting outlets on rerenders (ie. we don't explicitly connect outlets when
changing from one view to another programatically).
A new cleaner way is to change both tabs into routes.
This part needs further refactoring, but for now I just fixed log view to
teardown and setup things properly in all cases something changes (when element
is inserted or removed, but also when log object is changed).
Layout handling in travis-web was implemented in a dynamic way, so we
could change a main layout from any of the routes. This needed a
`rerender` call which was making things harder and needed some hacks. It
also broke a few transitions when upgrading to 1.8.1.
After examining our usage of layouts I've noticed that we don't need to
change the entire layout dynamically and instead we can set layout on
root routes (like "index", "profile" and other root routes).
We set job and build directly on repo controller for routes like job,
build and repo.index. We also need to clean that up when we exit to not
show for example download log button when we switch to different route.
When I started working on settings I had a bit different vision on tabs
and I've added that code prematurely. It seems that the best way to go
is to create separate routes and controllers for each tab - that way we
can just rely on Ember.js for customizing, not some custom code in tabs
helpers etc.
This commit changes a way we load accounts for profile view:
* instead of using several views with profile controllers, always use
one view to render hooks. This is achieved by redirecting to
individual account page from main profile page (for example when going
into /profile as a user drogus, the effective address will be
/profile/drogus)
* instead of using observers to wait for accounts to load I just use
promise in ProfileRoute#model which effectively ensures that accounts
are loaded at the time we want to select an individual account
* profile controller is split into profile and account controller
Specyfing "pane" as an outlet name here was a legacy thing. In current
form it doesn't give us anything and results in more code, as we need to
specify outlet everytime we want to render something there.
We use promise when fetching a repository which means that any nested
routes already have all the repository data loaded. Thanks to that there
is no need to setup observers, we can check what to render right away in
RepoIndexRoute
This is a leftover from previous version of auth code. The purpose of
this code was to redirect to index if we're on auth route and user is
already signed in. This may happen only when we use autoSignIn which is
synchronuous, so it should be fine to just check if user is signed in
and redirect to index there.
* don't use __container__
* register it as a factory on container and inject into routes and
controller
* avoid afterSignIn errors by checking on hooksTarget, ApplicationRoute
should register itself as a hooksTarget
* keep user info on auth