DEV: Remove lazy-yt and replace with lazy-videos (#20722)

- Refactors the old plugin to remove jquery usage
- Adds support for Vimeo videos (default on) and Tiktok (experimental and default off)
This commit is contained in:
Jan Cernik
2023-03-29 12:54:25 -03:00
committed by GitHub
parent 86f5abfa18
commit afe3e36363
41 changed files with 672 additions and 510 deletions

View File

@ -0,0 +1,46 @@
import { withPluginApi } from "discourse/lib/plugin-api";
import getVideoAttributes from "../lib/lazy-video-attributes";
import { hbs } from "ember-cli-htmlbars";
function initLazyEmbed(api) {
api.decorateCookedElement(
(cooked, helper) => {
if (cooked.classList.contains("d-editor-preview")) {
return;
}
const lazyContainers = cooked.querySelectorAll(".lazy-video-container");
lazyContainers.forEach((container) => {
const siteSettings = api.container.lookup("site-settings:main");
const videoAttributes = getVideoAttributes(container);
if (siteSettings[`lazy_${videoAttributes.providerName}_enabled`]) {
const onLoadedVideo = () => {
const postId = cooked.closest("article")?.dataset?.postId;
if (postId) {
api.preventCloak(parseInt(postId, 10));
}
};
const lazyVideo = helper.renderGlimmer(
"p.lazy-video-wrapper",
hbs`<LazyVideo @videoAttributes={{@data.param}} @onLoadedVideo={{@data.onLoadedVideo}}/>`,
{ param: videoAttributes, onLoadedVideo }
);
container.replaceWith(lazyVideo);
}
});
},
{ onlyStream: true, id: "discourse-lazy-videos" }
);
}
export default {
name: "discourse-lazy-videos",
initialize() {
withPluginApi("1.6.0", initLazyEmbed);
},
};