text: import { inject as service } from '@ember/service';
  import Controller from '@ember/controller';
  import { observer } from '@ember/object';
  import { run } from '@ember/runloop';
  
  export default Controller.extend({
    system: service(),
  
    queryParams: {
      jobNamespace: 'namespace',
    },
  
    isForbidden: false,
  
    jobNamespace: 'default',
  
    // The namespace query param should act as an alias to the system active namespace.
    // But query param defaults can't be CPs: https://github.com/emberjs/ember.js/issues/9819
    syncNamespaceService: forwardNamespace('jobNamespace', 'system.activeNamespace'),
    syncNamespaceParam: forwardNamespace('system.activeNamespace', 'jobNamespace'),
  
    actions: {
      refreshRoute() {
        return true;
      },
    },
  });
  
  function forwardNamespace(source, destination) {
    return observer(source, `${source}.id`, function() {
      const newNamespace = this.get(`${source}.id`) || this.get(source);
      const currentNamespace = this.get(`${destination}.id`) || this.get(destination);
      const bothAreDefault =
        (currentNamespace == undefined || currentNamespace === 'default') &&
        (newNamespace == undefined || newNamespace === 'default');
  
      if (currentNamespace !== newNamespace && !bothAreDefault) {
        this.set(destination, newNamespace);
        run.next(() => {
          this.send('refreshRoute');
        });
      }
    });
  }
  