REFACTOR: Remove `Discourse.HighlightJSPath` from globals

Instead we use the session, and pass that along where necessary.
This commit is contained in:
Robin Ward 2020-08-17 15:44:39 -04:00
parent 3745f2bb86
commit 5b2c306bb8
7 changed files with 16 additions and 9 deletions

View File

@ -5,7 +5,7 @@ import highlightSyntax from "discourse/lib/highlight-syntax";
export default Component.extend({
@on("didInsertElement")
@observes("code")
_refresh: function() {
highlightSyntax($(this.element), this.siteSettings);
_refresh() {
highlightSyntax($(this.element), this.siteSettings, this.session);
}
});

View File

@ -313,7 +313,7 @@ const Theme = RestModel.extend({
}
);
// TODO: Models shouldn't be updating the DOM
highlightSyntax(undefined, this.siteSettings);
highlightSyntax(undefined, this.siteSettings, this.session);
} else {
return this.save({ remote_update: true }).then(() =>
this.set("changed", false)

View File

@ -9,9 +9,10 @@ export default {
initialize(container) {
withPluginApi("0.1", api => {
const siteSettings = container.lookup("site-settings:main");
const session = container.lookup("session:main");
api.decorateCooked(
elem => {
return highlightSyntax(elem, siteSettings);
return highlightSyntax(elem, siteSettings, session);
},
{
id: "discourse-syntax-highlighting"

View File

@ -3,11 +3,11 @@ let _moreLanguages = [];
import loadScript from "discourse/lib/load-script";
export default function highlightSyntax($elem, siteSettings) {
export default function highlightSyntax($elem, siteSettings, session) {
const selector = siteSettings.autohighlight_all_code
? "pre code"
: "pre code[class]",
path = Discourse.HighlightJSPath;
path = session.highlightJsPath;
if (!path) {
return;

View File

@ -96,7 +96,7 @@ export default {
.trim() === "dark"
);
app.HighlightJSPath = setupData.highlightJsPath;
Session.currentProp("highlightJsPath", setupData.highlightJsPath);
Session.currentProp("svgSpritePath", setupData.svgSpritePath);
if (isDevelopment()) {

View File

@ -8,7 +8,7 @@ componentTest("highlighting code", {
template: "{{highlighted-code lang='ruby' code=code}}",
beforeEach() {
Discourse.HighlightJSPath =
this.session.highlightJsPath =
"assets/highlightjs/highlight-test-bundle.min.js";
this.set("code", "def test; end");
},
@ -27,7 +27,7 @@ componentTest("large code blocks are not highlighted", {
template: "{{highlighted-code lang='ruby' code=code}}",
beforeEach() {
Discourse.HighlightJSPath =
this.session.highlightJsPath =
"assets/highlightjs/highlight-test-bundle.min.js";
this.set("code", LONG_CODE_BLOCK);
},

View File

@ -4,6 +4,7 @@ import { autoLoadModules } from "discourse/initializers/auto-load-modules";
import TopicTrackingState from "discourse/models/topic-tracking-state";
import User from "discourse/models/user";
import Site from "discourse/models/site";
import Session from "discourse/models/session";
import { currentSettings } from "helpers/site-settings";
export default function(name, opts) {
@ -15,16 +16,21 @@ export default function(name, opts) {
test(name, function(assert) {
this.site = Site.current();
this.session = Session.current();
this.registry.register("site-settings:main", currentSettings(), {
instantiate: false
});
this.registry.register("capabilities:main", EmberObject);
this.registry.register("site:main", this.site, { instantiate: false });
this.registry.register("session:main", this.session, {
instantiate: false
});
this.registry.injection("component", "siteSettings", "site-settings:main");
this.registry.injection("component", "appEvents", "service:app-events");
this.registry.injection("component", "capabilities", "capabilities:main");
this.registry.injection("component", "site", "site:main");
this.registry.injection("component", "session", "session:main");
this.siteSettings = currentSettings();
autoLoadModules(this.container, this.registry);