This repository has been archived on 2023-03-18. You can view files and clone it, but cannot push or open issues or pull requests.
osr-discourse-src/app/assets/javascripts/discourse/initializers/inject-objects.js.es6

54 lines
2.3 KiB
JavaScript

import Session from 'discourse/models/session';
import AppEvents from 'discourse/lib/app-events';
import Store from 'discourse/models/store';
export default {
name: "inject-objects",
initialize(container, app) {
// Inject appEvents everywhere
const appEvents = AppEvents.create();
app.register('app-events:main', appEvents, { instantiate: false });
app.inject('controller', 'appEvents', 'app-events:main');
app.inject('component', 'appEvents', 'app-events:main');
app.inject('route', 'appEvents', 'app-events:main');
app.inject('view', 'appEvents', 'app-events:main');
app.inject('model', 'appEvents', 'app-events:main');
Discourse.URL.appEvents = appEvents;
// Inject Discourse.Site to avoid using Discourse.Site.current()
const site = Discourse.Site.current();
app.register('site:main', site, { instantiate: false });
app.inject('controller', 'site', 'site:main');
app.inject('component', 'site', 'site:main');
app.inject('route', 'site', 'site:main');
app.inject('view', 'site', 'site:main');
app.inject('model', 'site', 'site:main');
// Inject Discourse.SiteSettings to avoid using Discourse.SiteSettings globals
app.register('site-settings:main', Discourse.SiteSettings, { instantiate: false });
app.inject('controller', 'siteSettings', 'site-settings:main');
app.inject('component', 'siteSettings', 'site-settings:main');
app.inject('route', 'siteSettings', 'site-settings:main');
app.inject('view', 'siteSettings', 'site-settings:main');
app.inject('model', 'siteSettings', 'site-settings:main');
// Inject Session for transient data
app.register('session:main', Session.current(), { instantiate: false });
app.inject('controller', 'session', 'session:main');
app.inject('component', 'session', 'session:main');
app.inject('route', 'session', 'session:main');
app.inject('view', 'session', 'session:main');
app.inject('model', 'session', 'session:main');
// Inject currentUser. Components only for now to prevent any breakage
app.register('current-user:main', Discourse.User.current(), { instantiate: false });
app.inject('component', 'currentUser', 'current-user:main');
app.register('store:main', Store);
app.inject('route', 'store', 'store:main');
app.inject('controller', 'store', 'store:main');
}
};