FIX: Short URL resolution in cook-text (#10200)

Regressed in 3b51e05de2. Thanks to @romanrizzi for reporting!
This commit is contained in:
Jarek Radosz 2020-07-09 14:39:13 +02:00 committed by GitHub
parent 4a9ee25c56
commit 32ee9fae40
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 53 additions and 4 deletions

View File

@ -2,6 +2,7 @@ import Component from "@ember/component";
import { cookAsync } from "discourse/lib/text";
import { ajax } from "discourse/lib/ajax";
import { resolveAllShortUrls } from "pretty-text/upload-short-url";
import { afterRender } from "discourse-common/utils/decorators";
const CookText = Component.extend({
cooked: null,
@ -10,11 +11,13 @@ const CookText = Component.extend({
this._super(...arguments);
cookAsync(this.rawText).then(cooked => {
this.set("cooked", cooked);
if (this.element && !this.isDestroying && !this.isDestroyed) {
return resolveAllShortUrls(ajax, this.siteSettings, this.element);
}
this._resolveUrls();
});
},
@afterRender
_resolveUrls() {
resolveAllShortUrls(ajax, this.siteSettings, this.element);
}
});

View File

@ -0,0 +1,46 @@
import componentTest from "helpers/component-test";
import pretender from "helpers/create-pretender";
import { resetCache } from "pretty-text/upload-short-url";
moduleForComponent("cook-text", { integration: true });
componentTest("renders markdown", {
template: '{{cook-text "_foo_" class="post-body"}}',
test(assert) {
const html = find(".post-body")[0].innerHTML.trim();
assert.equal(html, "<p><em>foo</em></p>");
}
});
componentTest("resolves short URLs", {
template: `{{cook-text "![an image](upload://a.png)" class="post-body"}}`,
beforeEach() {
pretender.post("/uploads/lookup-urls", () => {
return [
200,
{ "Content-Type": "application/json" },
[
{
short_url: "upload://a.png",
url: "/uploads/default/original/3X/c/b/1.png",
short_path: "/uploads/short-url/a.png"
}
]
];
});
},
afterEach() {
resetCache();
},
test(assert) {
const html = find(".post-body")[0].innerHTML.trim();
assert.equal(
html,
'<p><img src="/uploads/default/original/3X/c/b/1.png" alt="an image"></p>'
);
}
});