import Store from "discourse/models/store"; import RestAdapter from "discourse/adapters/rest"; import KeyValueStore from "discourse/lib/key-value-store"; import TopicTrackingState from "discourse/models/topic-tracking-state"; import { buildResolver } from "discourse-common/resolver"; export default function() { const resolver = buildResolver("discourse").create(); return Store.create({ register: { lookup(type) { if (type === "adapter:rest") { if (!this._restAdapter) { this._restAdapter = RestAdapter.create({ owner: this }); } return this._restAdapter; } if (type === "key-value-store:main") { this._kvs = this._kvs || new KeyValueStore(); return this._kvs; } if (type === "topic-tracking-state:main") { this._tracker = this._tracker || TopicTrackingState.create(); return this._tracker; } if (type === "site-settings:main") { this._settings = this._settings || Discourse.SiteSettings; return this._settings; } }, lookupFactory(type) { const split = type.split(":"); return resolver.customResolve({ type: split[0], fullNameWithoutType: split[1] }); } } }); }