{{! Add the a11y route announcer }} {{! Tell CSS what we have enabled }} {{#if (can 'use acls')}} {{document-attrs class='has-acls'}} {{/if}} {{#if (can 'use nspaces')}} {{document-attrs class='has-nspaces'}} {{/if}} {{#if (can 'use partitions')}} {{document-attrs class='has-partitions'}} {{/if}} {{! Listen out for blocking query/client setting changes }} {{! Tell CSS about our theme }} {{#each-in source.data as |key value|}} {{#if (and value (includes key (array 'color-scheme' 'contrast')))}} {{document-attrs class=(concat 'prefers-' key '-' value)}} {{/if}} {{/each-in}} {{! If ACLs are enabled try get a token }} {{#if (can 'use acls')}} {{/if}} {{#if (not-eq route.currentName 'oauth-provider-debug')}} {{! redirect if we aren't on a URL with dc information }} {{#if (eq route.currentName 'index')}} {{! until we get to the dc route we don't know any permissions }} {{! as we don't know the dc, any inital permission based }} {{! redirects are in the dc.show route}} {{! 2022-04-15: Temporarily reverting the services page to the default }} {{did-insert (route-action 'replaceWith' 'dc.services.index' (hash dc=(env 'CONSUL_DATACENTER_LOCAL'))) }} {{else}} {{! If we are notfound, guess the params we need }} {{#if (eq route.currentName 'notfound')}} {{/if}} {{! Make sure we guess and default to the right params when not found }} {{#let (if (can 'use partitions') (or route.params.partition notfound.partition token.Partition '') '' ) (if (can 'use nspaces') (or route.params.nspace notfound.nspace token.Namespace '') '') as |partition nspace| }} {{! Make sure we have enough to show the app chrome}} {{! Don't show anything until we have a list of DCs }} {{! Once we have a list of DCs make sure the DC we are asking for exists }} {{! If not use the DC that the UI is running in }} {{#let (or (if nofound.dc (object-at 0 (cached-model 'dc' (hash Name=notfound.dc)))) (object-at 0 (cached-model 'dc' (hash Name=route.params.dc))) (hash Name=(env 'CONSUL_DATACENTER_LOCAL')) ) dcs.data as |dc dcs| }} {{#if (and (gt dc.Name.length 0) dcs)}} {{! figure out our current DC and convert it to a model }} {{#if dc.data}} {{#if error}} {{! If we got an error from anything, show an error page }} {{else}} {{! Otherwise show the rest of the app}} {{outlet}} {{! loading component for when we need it}} {{/if}} {{/if}} {{/if}} {{/let}} {{/let}} {{/if}} {{else}} {{! Routes with no main navigation }} {{outlet}} {{/if}}