From 9efe56836c90257799e84905cca04a0a5de303f5 Mon Sep 17 00:00:00 2001 From: claire bontempo Date: Fri, 4 Oct 2024 15:14:46 -0700 Subject: [PATCH] dynamically set router based on owner --- ui/lib/core/addon/components/linked-block.js | 11 +++++-- ui/lib/core/addon/helpers/transition-to.js | 31 ++++++++++++++++++++ ui/lib/core/app/helpers/transition-to.js | 6 ++++ ui/package.json | 1 - ui/yarn.lock | 12 +------- 5 files changed, 47 insertions(+), 14 deletions(-) create mode 100644 ui/lib/core/addon/helpers/transition-to.js create mode 100644 ui/lib/core/app/helpers/transition-to.js diff --git a/ui/lib/core/addon/components/linked-block.js b/ui/lib/core/addon/components/linked-block.js index 60a5fa311ee5..5c94b172e7df 100644 --- a/ui/lib/core/addon/components/linked-block.js +++ b/ui/lib/core/addon/components/linked-block.js @@ -4,7 +4,7 @@ */ import Component from '@glimmer/component'; -import { service } from '@ember/service'; +import { getOwner } from '@ember/application'; import { action } from '@ember/object'; import { encodePath } from 'vault/utils/path-encoding-helpers'; @@ -26,7 +26,14 @@ import { encodePath } from 'vault/utils/path-encoding-helpers'; */ export default class LinkedBlockComponent extends Component { - @service router; + // We don't import the router service here because Ember Engine's use the alias 'app-router' + // Since this component is shared across engines, we look up the router dynamically using getOwner instead. + // This way we avoid throwing an error by looking up a service that doesn't exist. + // https://guides.emberjs.com/release/services/#toc_accessing-services + get router() { + const owner = getOwner(this); + return owner.lookup('service:router') || owner.lookup('service:app-router'); + } @action onClick(event) { diff --git a/ui/lib/core/addon/helpers/transition-to.js b/ui/lib/core/addon/helpers/transition-to.js new file mode 100644 index 000000000000..1a74cfb8fe5f --- /dev/null +++ b/ui/lib/core/addon/helpers/transition-to.js @@ -0,0 +1,31 @@ +/** + * Copyright (c) HashiCorp, Inc. + * SPDX-License-Identifier: BUSL-1.1 + */ + +import Helper from '@ember/component/helper'; +import { getOwner } from '@ember/application'; + +/* +template helper that replaces ember-router-helpers https://github.com/rwjblue/ember-router-helpers +example: + + +*/ +export default class TransitionTo extends Helper { + // We don't import the router service here because Ember Engine's use the alias 'app-router' + // Since this helper is shared across engines, we look up the router dynamically using getOwner instead. + // This way we avoid throwing an error by looking up a service that doesn't exist. + // https://guides.emberjs.com/release/services/#toc_accessing-services + get router() { + const owner = getOwner(this); + return owner.lookup('service:router') || owner.lookup('service:app-router'); + } + + compute(routeParams, { external = false }) { + if (external) { + return () => this.router.transitionToExternal(...routeParams); + } + return () => this.router.transitionTo(...routeParams); + } +} diff --git a/ui/lib/core/app/helpers/transition-to.js b/ui/lib/core/app/helpers/transition-to.js new file mode 100644 index 000000000000..98c6573a3bdd --- /dev/null +++ b/ui/lib/core/app/helpers/transition-to.js @@ -0,0 +1,6 @@ +/** + * Copyright (c) HashiCorp, Inc. + * SPDX-License-Identifier: BUSL-1.1 + */ + +export { default } from 'core/helpers/transition-to'; diff --git a/ui/package.json b/ui/package.json index 34d2e392e54c..a5591b8d9c2e 100644 --- a/ui/package.json +++ b/ui/package.json @@ -136,7 +136,6 @@ "ember-qunit": "^8.0.1", "ember-resolver": "^11.0.1", "ember-responsive": "5.0.0", - "ember-router-helpers": "^0.4.0", "ember-service-worker": "meirish/ember-service-worker#configurable-scope", "ember-sinon-qunit": "^7.4.0", "ember-source": "~5.4.0", diff --git a/ui/yarn.lock b/ui/yarn.lock index bcf86973735e..a75940469a4d 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -7607,7 +7607,7 @@ __metadata: languageName: node linkType: hard -"ember-cli-babel@npm:^7.1.2, ember-cli-babel@npm:^7.1.3, ember-cli-babel@npm:^7.10.0, ember-cli-babel@npm:^7.13.0, ember-cli-babel@npm:^7.18.0, ember-cli-babel@npm:^7.20.0, ember-cli-babel@npm:^7.22.1, ember-cli-babel@npm:^7.23.0, ember-cli-babel@npm:^7.26.11, ember-cli-babel@npm:^7.26.3, ember-cli-babel@npm:^7.26.4, ember-cli-babel@npm:^7.26.5, ember-cli-babel@npm:^7.26.6, ember-cli-babel@npm:^7.26.8, ember-cli-babel@npm:^7.5.0, ember-cli-babel@npm:^7.7.3": +"ember-cli-babel@npm:^7.1.2, ember-cli-babel@npm:^7.1.3, ember-cli-babel@npm:^7.10.0, ember-cli-babel@npm:^7.13.0, ember-cli-babel@npm:^7.18.0, ember-cli-babel@npm:^7.22.1, ember-cli-babel@npm:^7.23.0, ember-cli-babel@npm:^7.26.11, ember-cli-babel@npm:^7.26.3, ember-cli-babel@npm:^7.26.4, ember-cli-babel@npm:^7.26.5, ember-cli-babel@npm:^7.26.6, ember-cli-babel@npm:^7.26.8, ember-cli-babel@npm:^7.5.0, ember-cli-babel@npm:^7.7.3": version: 7.26.11 resolution: "ember-cli-babel@npm:7.26.11" dependencies: @@ -8663,15 +8663,6 @@ __metadata: languageName: node linkType: hard -"ember-router-helpers@npm:^0.4.0": - version: 0.4.0 - resolution: "ember-router-helpers@npm:0.4.0" - dependencies: - ember-cli-babel: ^7.20.0 - checksum: e847ceb1061f87416d6bb5d72ef539fda738a24086051bc94d740117c6353b3406c65247ac8190b8572df008a70d9f801e224d38489170129c5ca6c4ec7f206e - languageName: node - linkType: hard - "ember-service-worker@meirish/ember-service-worker#configurable-scope": version: 9.0.1 resolution: "ember-service-worker@https://github.com/meirish/ember-service-worker.git#commit=dda14187aace0d73ecdb6a55beac2194a3aec01b" @@ -18840,7 +18831,6 @@ __metadata: ember-qunit: ^8.0.1 ember-resolver: ^11.0.1 ember-responsive: 5.0.0 - ember-router-helpers: ^0.4.0 ember-service-worker: "meirish/ember-service-worker#configurable-scope" ember-sinon-qunit: ^7.4.0 ember-source: ~5.4.0