From 67e6cec66b06d4706922700435035c831aedbc91 Mon Sep 17 00:00:00 2001 From: Jai Bhagat Date: Tue, 30 Nov 2021 15:09:16 -0500 Subject: [PATCH] feat: create bucket service to register, deregister and store breadcrumbs --- ui/app/components/breadcrumbs.hbs | 1 + ui/app/components/breadcrumbs.js | 10 ++++++++++ ui/app/services/bucket.js | 21 +++++++++++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 ui/app/components/breadcrumbs.hbs create mode 100644 ui/app/components/breadcrumbs.js create mode 100644 ui/app/services/bucket.js diff --git a/ui/app/components/breadcrumbs.hbs b/ui/app/components/breadcrumbs.hbs new file mode 100644 index 000000000..7e807bd1e --- /dev/null +++ b/ui/app/components/breadcrumbs.hbs @@ -0,0 +1 @@ +{{yield this.crumbs}} \ No newline at end of file diff --git a/ui/app/components/breadcrumbs.js b/ui/app/components/breadcrumbs.js new file mode 100644 index 000000000..3d104ab91 --- /dev/null +++ b/ui/app/components/breadcrumbs.js @@ -0,0 +1,10 @@ +import Component from '@glimmer/component'; +import { inject as service } from '@ember/service'; + +export default class Breadcrumbs extends Component { + @service bucket; + + get crumbs() { + return this.bucket.crumbs; + } +} diff --git a/ui/app/services/bucket.js b/ui/app/services/bucket.js new file mode 100644 index 000000000..0a268708f --- /dev/null +++ b/ui/app/services/bucket.js @@ -0,0 +1,21 @@ +import Service from '@ember/service'; +import { action } from '@ember/object'; +import { tracked } from '@glimmer/tracking'; +import { schedule } from '@ember/runloop'; + +export default class BucketService extends Service { + @tracked crumbs = []; + + @action registerBreadcrumb(crumb) { + schedule('actions', this, () => { + console.log('register crumb: ', crumb); + this.crumbs = [...this.crumbs, crumb]; + }); + } + + @action deregisterBreadcrumb(crumb) { + const newCrumbs = this.crumbs.filter(c => c !== crumb); + + this.crumbs = newCrumbs; + } +}