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/pre-initializers/inject-discourse-objects.js.es6
Joffrey JAFFEUX f9648de897
DEV: upgrades from Ember 2.13 to Ember 3.5.1 (#6808)
Co-Authored-By: Bianca Nenciu <nbianca@users.noreply.github.com>
Co-Authored-By: David Taylor <david@taylorhq.com>
2019-01-10 11:06:01 +01:00

99 lines
3.3 KiB
JavaScript

import Session from "discourse/models/session";
import KeyValueStore from "discourse/lib/key-value-store";
import AppEvents from "discourse/lib/app-events";
import Store from "discourse/models/store";
import DiscourseURL from "discourse/lib/url";
import DiscourseLocation from "discourse/lib/discourse-location";
import SearchService from "discourse/services/search";
import {
startTracking,
default as TopicTrackingState
} from "discourse/models/topic-tracking-state";
import ScreenTrack from "discourse/lib/screen-track";
const ALL_TARGETS = ["controller", "component", "route", "model", "adapter"];
export default {
name: "inject-discourse-objects",
initialize(container, app) {
const appEvents = AppEvents.create();
app.register("app-events:main", appEvents, { instantiate: false });
ALL_TARGETS.forEach(t => app.inject(t, "appEvents", "app-events:main"));
DiscourseURL.appEvents = appEvents;
// backwards compatibility: remove when plugins have updated
app.register("store:main", Store);
if (!app.hasRegistration("service:store")) {
app.register("service:store", Store);
ALL_TARGETS.forEach(t => app.inject(t, "store", "service:store"));
}
const messageBus = window.MessageBus;
app.register("message-bus:main", messageBus, { instantiate: false });
ALL_TARGETS.forEach(t => app.inject(t, "messageBus", "message-bus:main"));
const currentUser = Discourse.User.current();
app.register("current-user:main", currentUser, { instantiate: false });
const topicTrackingState = TopicTrackingState.create({
messageBus,
currentUser
});
app.register("topic-tracking-state:main", topicTrackingState, {
instantiate: false
});
ALL_TARGETS.forEach(t =>
app.inject(t, "topicTrackingState", "topic-tracking-state:main")
);
const siteSettings = Discourse.SiteSettings;
app.register("site-settings:main", siteSettings, { instantiate: false });
ALL_TARGETS.forEach(t =>
app.inject(t, "siteSettings", "site-settings:main")
);
const site = Discourse.Site.current();
app.register("site:main", site, { instantiate: false });
ALL_TARGETS.forEach(t => app.inject(t, "site", "site:main"));
app.register("search-service:main", SearchService);
ALL_TARGETS.forEach(t =>
app.inject(t, "searchService", "search-service:main")
);
const session = Session.current();
app.register("session:main", session, { instantiate: false });
ALL_TARGETS.forEach(t => app.inject(t, "session", "session:main"));
const screenTrack = new ScreenTrack(
topicTrackingState,
siteSettings,
session,
currentUser
);
app.register("screen-track:main", screenTrack, { instantiate: false });
["component", "route"].forEach(t =>
app.inject(t, "screenTrack", "screen-track:main")
);
if (currentUser) {
["component", "route", "controller"].forEach(t => {
app.inject(t, "currentUser", "current-user:main");
});
}
app.register("location:discourse-location", DiscourseLocation);
const keyValueStore = new KeyValueStore("discourse_");
app.register("key-value-store:main", keyValueStore, { instantiate: false });
ALL_TARGETS.forEach(t =>
app.inject(t, "keyValueStore", "key-value-store:main")
);
startTracking(topicTrackingState);
}
};