mirror of
https://github.com/discourse/discourse.git
synced 2026-08-05 18:57:20 -05:00
DEV: Use optionalRequire instead of require/requirejs (#36504)
This commit is contained in:
@@ -1,11 +1,14 @@
|
||||
import { optionalRequire } from "./utilities";
|
||||
|
||||
export function applyLocalDates(dates, siteSettings, timezone) {
|
||||
if (!siteSettings.discourse_local_dates_enabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
const _applyLocalDates = requirejs(
|
||||
"discourse/plugins/discourse-local-dates/initializers/discourse-local-dates"
|
||||
).applyLocalDates;
|
||||
const _applyLocalDates = optionalRequire(
|
||||
"discourse/plugins/discourse-local-dates/initializers/discourse-local-dates",
|
||||
"applyLocalDates"
|
||||
);
|
||||
|
||||
_applyLocalDates(dates, siteSettings, timezone);
|
||||
}
|
||||
|
||||
@@ -37,6 +37,7 @@ import {
|
||||
initUserStatusHtml,
|
||||
renderUserStatusHtml,
|
||||
} from "discourse/lib/user-status-on-autocomplete";
|
||||
import { optionalRequire } from "discourse/lib/utilities";
|
||||
import virtualElementFromTextRange from "discourse/lib/virtual-element-from-text-range";
|
||||
import { waitForClosedKeyboard } from "discourse/lib/wait-for-keyboard";
|
||||
import DAutocompleteModifier, {
|
||||
@@ -201,9 +202,9 @@ export default class ChatComposer extends Component {
|
||||
|
||||
@action
|
||||
insertDiscourseLocalDate() {
|
||||
// JIT import because local-dates isn't necessarily enabled
|
||||
const LocalDatesCreateModal =
|
||||
require("discourse/plugins/discourse-local-dates/discourse/components/modal/local-dates-create").default;
|
||||
const LocalDatesCreateModal = optionalRequire(
|
||||
"discourse/plugins/discourse-local-dates/discourse/components/modal/local-dates-create"
|
||||
);
|
||||
|
||||
this.modal.show(LocalDatesCreateModal, {
|
||||
model: {
|
||||
|
||||
@@ -5,7 +5,7 @@ import { modifier } from "ember-modifier";
|
||||
import DecoratedHtml from "discourse/components/decorated-html";
|
||||
import domFromString from "discourse/lib/dom-from-string";
|
||||
import lightbox from "discourse/lib/lightbox";
|
||||
import { escapeExpression } from "discourse/lib/utilities";
|
||||
import { escapeExpression, optionalRequire } from "discourse/lib/utilities";
|
||||
import { and } from "discourse/truth-helpers";
|
||||
import { i18n } from "discourse-i18n";
|
||||
import ChatUpload from "discourse/plugins/chat/discourse/components/chat-upload";
|
||||
@@ -65,18 +65,18 @@ export default class ChatMessageCollapser extends Component {
|
||||
}
|
||||
|
||||
get lazyVideoComponent() {
|
||||
const path =
|
||||
"discourse/plugins/discourse-lazy-videos/discourse/components/lazy-video";
|
||||
return require.has(path) && require(path).default;
|
||||
return optionalRequire(
|
||||
"discourse/plugins/discourse-lazy-videos/discourse/components/lazy-video"
|
||||
);
|
||||
}
|
||||
|
||||
lazyVideoCooked(elements) {
|
||||
const getVideoAttributes = optionalRequire(
|
||||
"discourse/plugins/discourse-lazy-videos/lib/lazy-video-attributes"
|
||||
);
|
||||
|
||||
return elements.reduce((acc, e) => {
|
||||
if (this.siteSettings.lazy_videos_enabled && lazyVideoPredicate(e)) {
|
||||
const getVideoAttributes = requirejs(
|
||||
"discourse/plugins/discourse-lazy-videos/lib/lazy-video-attributes"
|
||||
).default;
|
||||
|
||||
const videoAttributes = getVideoAttributes(e);
|
||||
|
||||
if (this.siteSettings[`lazy_${videoAttributes.providerName}_enabled`]) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { applyLocalDates } from "discourse/lib/local-dates";
|
||||
import { withPluginApi } from "discourse/lib/plugin-api";
|
||||
import { optionalRequire } from "discourse/lib/utilities";
|
||||
|
||||
export default {
|
||||
name: "chat-plugin-decorators",
|
||||
@@ -18,9 +19,10 @@ export default {
|
||||
);
|
||||
|
||||
if (siteSettings.spoiler_enabled) {
|
||||
const applySpoiler = requirejs(
|
||||
const applySpoiler = optionalRequire(
|
||||
"discourse/plugins/spoiler-alert/lib/apply-spoiler"
|
||||
).default;
|
||||
);
|
||||
|
||||
api.decorateChatMessage(
|
||||
(element) => {
|
||||
element.querySelectorAll(".spoiler").forEach((spoiler) => {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { withPluginApi } from "discourse/lib/plugin-api";
|
||||
import { optionalRequire } from "discourse/lib/utilities";
|
||||
import AdminReportEmotion from "../components/admin-report-emotion";
|
||||
|
||||
export default {
|
||||
@@ -10,11 +11,9 @@ export default {
|
||||
return;
|
||||
}
|
||||
|
||||
// We need to import dynamically with CommonJS require because
|
||||
// using ESM import in an initializer would cause the component to be imported globally
|
||||
// and cause errors for non-admin users since the component is only available to admins
|
||||
const AdminReportSentimentAnalysis =
|
||||
require("discourse/plugins/discourse-ai/discourse/components/admin-report-sentiment-analysis").default;
|
||||
const AdminReportSentimentAnalysis = optionalRequire(
|
||||
"discourse/plugins/discourse-ai/discourse/components/admin-report-sentiment-analysis"
|
||||
);
|
||||
|
||||
withPluginApi((api) => {
|
||||
api.registerReportModeComponent("emotion", AdminReportEmotion);
|
||||
|
||||
Reference in New Issue
Block a user