From 39471e4cf50451c1233e7c26591b8faaebe45ce8 Mon Sep 17 00:00:00 2001 From: fidlip Date: Tue, 28 Feb 2017 18:01:52 +0100 Subject: [PATCH 1/5] Allow to add options to created store. --- addon/services/multi-store.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addon/services/multi-store.js b/addon/services/multi-store.js index cb07ddd..b031069 100644 --- a/addon/services/multi-store.js +++ b/addon/services/multi-store.js @@ -36,14 +36,14 @@ export default Ember.Service.extend({ * @param {string} name - The name of the store * @returns {boolean} */ - registerStore(name) { + registerStore(name, options) { const storeNames = Ember.get(this, 'storeNames'); if (storeNames.indexOf(name) === -1) { getOwner(this).register(`store:${name}`, DS.Store.extend({ name: name - }) + }, options) ); storeNames.pushObject(name); return true; From ae81817e53c79fa1089bcae192c2884d504da743 Mon Sep 17 00:00:00 2001 From: fidlip Date: Thu, 2 Mar 2017 11:51:44 +0100 Subject: [PATCH 2/5] Use application-wide store instead of default DS.Store Ember-cli application no longer use DS.Store for instantiating main store but use the one in app/services/store.coffee. Because of that we need to use the same store in multi-store. --- addon/services/multi-store.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/addon/services/multi-store.js b/addon/services/multi-store.js index b031069..58e44f2 100644 --- a/addon/services/multi-store.js +++ b/addon/services/multi-store.js @@ -40,11 +40,12 @@ export default Ember.Service.extend({ const storeNames = Ember.get(this, 'storeNames'); if (storeNames.indexOf(name) === -1) { - getOwner(this).register(`store:${name}`, - DS.Store.extend({ - name: name - }, options) - ); + let owner = getOwner(this); + let store = owner.lookup("service:store") + let storeInstance = Object.create(store.__proto__.constructor).reopen({ + name: name + }, options); + owner.register(`store:${name}`, storeInstance); storeNames.pushObject(name); return true; } From 1496a56f595c14618a2aab11de3d423ccc7b65cc Mon Sep 17 00:00:00 2001 From: fidlip Date: Thu, 2 Mar 2017 12:06:29 +0100 Subject: [PATCH 3/5] Simplify retrieving of store Class constructor. --- addon/services/multi-store.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addon/services/multi-store.js b/addon/services/multi-store.js index 58e44f2..a9942da 100644 --- a/addon/services/multi-store.js +++ b/addon/services/multi-store.js @@ -42,7 +42,7 @@ export default Ember.Service.extend({ if (storeNames.indexOf(name) === -1) { let owner = getOwner(this); let store = owner.lookup("service:store") - let storeInstance = Object.create(store.__proto__.constructor).reopen({ + let storeInstance = Object.create(Ember.get(store, "constructor")).reopen({ name: name }, options); owner.register(`store:${name}`, storeInstance); From 15b551cc3f1c96cf96b3340588c17de7ab74f146 Mon Sep 17 00:00:00 2001 From: fidlip Date: Thu, 2 Mar 2017 13:40:57 +0100 Subject: [PATCH 4/5] Handle empty options --- addon/services/multi-store.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addon/services/multi-store.js b/addon/services/multi-store.js index a9942da..c707c31 100644 --- a/addon/services/multi-store.js +++ b/addon/services/multi-store.js @@ -44,7 +44,7 @@ export default Ember.Service.extend({ let store = owner.lookup("service:store") let storeInstance = Object.create(Ember.get(store, "constructor")).reopen({ name: name - }, options); + }, options || {}); owner.register(`store:${name}`, storeInstance); storeNames.pushObject(name); return true; From 8cb8da0ca36cb0459dbe8b14d4922626834b765c Mon Sep 17 00:00:00 2001 From: fidlip Date: Fri, 17 Mar 2017 12:18:59 +0100 Subject: [PATCH 5/5] Extend base service instead of reopening --- addon/services/multi-store.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addon/services/multi-store.js b/addon/services/multi-store.js index c707c31..4c0d7e0 100644 --- a/addon/services/multi-store.js +++ b/addon/services/multi-store.js @@ -42,7 +42,7 @@ export default Ember.Service.extend({ if (storeNames.indexOf(name) === -1) { let owner = getOwner(this); let store = owner.lookup("service:store") - let storeInstance = Object.create(Ember.get(store, "constructor")).reopen({ + let storeInstance = Object.create(Ember.get(store, "constructor")).extend({ name: name }, options || {}); owner.register(`store:${name}`, storeInstance);