From 73643450af911987ff7b7f8738951bdae351c8ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=A4der?= Date: Wed, 27 Jan 2021 12:31:57 +0100 Subject: [PATCH] feat(config): add resolver for user and group IDs The config service has an identity function as default resolvers. --- README.md | 17 ++++++++++++++++- addon/components/document-details.hbs | 6 +++--- addon/helpers/resolve-group.js | 10 ++++++++++ addon/helpers/resolve-user.js | 10 ++++++++++ addon/services/config.js | 3 +++ app/helpers/resolve-group.js | 1 + app/helpers/resolve-user.js | 1 + tests/integration/helpers/resolve-group-test.js | 16 ++++++++++++++++ tests/integration/helpers/resolve-user-test.js | 16 ++++++++++++++++ 9 files changed, 76 insertions(+), 4 deletions(-) create mode 100644 addon/helpers/resolve-group.js create mode 100644 addon/helpers/resolve-user.js create mode 100644 app/helpers/resolve-group.js create mode 100644 app/helpers/resolve-user.js create mode 100644 tests/integration/helpers/resolve-group-test.js create mode 100644 tests/integration/helpers/resolve-user-test.js diff --git a/README.md b/README.md index 6765300a..d4667662 100644 --- a/README.md +++ b/README.md @@ -74,7 +74,6 @@ If you mounted alexandria with query params you can access the query params in you config service (as shown in the example above) with `this.alexandriaQueryParams.your_query_param`. - If you need to access the `alexandriaQueryParams` inside your config check that you define `modelMetaFilters` and/or `defaultModelMeta` as getters. If you don't need `alexandriaQueryParams` you can ignore the getters and just define the field as usual. @@ -106,7 +105,23 @@ export default class AlexandriaConfigService extends ConfigService { } ``` +As the Alexandria backend returns IDs for the user and groups you can add a +resolver from your project to turn the IDs to something the user can relate to. + +Just replace the identity functions on the config service. +__Example__: +```js +import ConfigService from "ember-alexandria/services/config"; +import { inject as service } from "@ember/service"; + +export default class AlexandriaConfigService extends ConfigService { + @service store; + + resolveUser(id) { return this.store.peekRecord("user", id); } + resolveGroup(id) { return this.store.peekRecord("group", id); } +} +``` Contributing ------------------------------------------------------------------------------ diff --git a/addon/components/document-details.hbs b/addon/components/document-details.hbs index eb92d1ac..8cb565ca 100644 --- a/addon/components/document-details.hbs +++ b/addon/components/document-details.hbs @@ -135,11 +135,11 @@

- {{@document.createdByUser}} + {{resolve-user @document.createdByUser}}

- {{@document.createdByGroup}} + {{resolve-group @document.createdByGroup}}

@@ -191,7 +191,7 @@ {{moment-format file.createdAt "DD.MM.YYYY HH:mm"}} - {{~file.createdByUser.fullName~}} + {{~resolve-user file.createdByUser~}} id; + resolveGroup = (id) => id; + /** * Defaults so we can lookup * `this.config.modelMetaFilters.document` diff --git a/app/helpers/resolve-group.js b/app/helpers/resolve-group.js new file mode 100644 index 00000000..4a6ed61a --- /dev/null +++ b/app/helpers/resolve-group.js @@ -0,0 +1 @@ +export { default } from "ember-alexandria/helpers/resolve-group"; diff --git a/app/helpers/resolve-user.js b/app/helpers/resolve-user.js new file mode 100644 index 00000000..cf51431b --- /dev/null +++ b/app/helpers/resolve-user.js @@ -0,0 +1 @@ +export { default } from "ember-alexandria/helpers/resolve-user"; diff --git a/tests/integration/helpers/resolve-group-test.js b/tests/integration/helpers/resolve-group-test.js new file mode 100644 index 00000000..ed58c967 --- /dev/null +++ b/tests/integration/helpers/resolve-group-test.js @@ -0,0 +1,16 @@ +import { render } from "@ember/test-helpers"; +import { hbs } from "ember-cli-htmlbars"; +import { setupRenderingTest } from "ember-qunit"; +import { module, test } from "qunit"; + +module("Integration | Helper | resolve-group", function (hooks) { + setupRenderingTest(hooks); + + test("it renders", async function (assert) { + this.id = "1234"; + + await render(hbs`{{resolve-group this.id}}`); + + assert.equal(this.element.textContent.trim(), "1234"); + }); +}); diff --git a/tests/integration/helpers/resolve-user-test.js b/tests/integration/helpers/resolve-user-test.js new file mode 100644 index 00000000..00b2493b --- /dev/null +++ b/tests/integration/helpers/resolve-user-test.js @@ -0,0 +1,16 @@ +import { render } from "@ember/test-helpers"; +import { hbs } from "ember-cli-htmlbars"; +import { setupRenderingTest } from "ember-qunit"; +import { module, test } from "qunit"; + +module("Integration | Helper | resolve-user", function (hooks) { + setupRenderingTest(hooks); + + test("it renders", async function (assert) { + this.id = "1234"; + + await render(hbs`{{resolve-group this.id}}`); + + assert.equal(this.element.textContent.trim(), "1234"); + }); +});