diff --git a/src/debug/loadLazyChunks.ts b/src/debug/loadLazyChunks.ts index 920ce3067..72ded48bb 100644 --- a/src/debug/loadLazyChunks.ts +++ b/src/debug/loadLazyChunks.ts @@ -204,13 +204,6 @@ export async function loadLazyChunks() { } }))); - // Manually require all modules to make sure all lazily required modules are patched - for (const moduleId of Object.keys(wreq.m)) { - try { - wreq(moduleId); - } catch { } - } - LazyChunkLoaderLogger.log("Finished loading all chunks!"); } catch (e) { LazyChunkLoaderLogger.log("A fatal error occurred:", e); diff --git a/src/plugins/reviewDB/components/ReviewModal.tsx b/src/plugins/reviewDB/components/ReviewModal.tsx index 7414148d1..d7c1467d9 100644 --- a/src/plugins/reviewDB/components/ReviewModal.tsx +++ b/src/plugins/reviewDB/components/ReviewModal.tsx @@ -22,13 +22,19 @@ import { Auth } from "@plugins/reviewDB/auth"; import { ReviewType } from "@plugins/reviewDB/entities"; import { REVIEWS_PER_PAGE, UserReviewsData } from "@plugins/reviewDB/reviewDbApi"; import { cl } from "@plugins/reviewDB/utils"; -import { ModalCloseButton, ModalContent, ModalFooter, ModalHeader, ModalRoot, ModalSize, openModal } from "@utils/modal"; +import { ModalCloseButton, ModalContent, ModalFooter, ModalHeader, ModalRoot, ModalSize, openModalLazy } from "@utils/modal"; import { useForceUpdater } from "@utils/react"; -import { Paginator, useRef, useState } from "@webpack/common"; +import * as t from "@vencord/discord-types"; +import { DefaultExtractAndLoadChunksRegex, extractAndLoadChunksLazy, findComponentByCodeLazy } from "@webpack"; +import { useRef, useState } from "@webpack/common"; +import { ComponentProps } from "react"; import ReviewComponent from "./ReviewComponent"; import ReviewsView, { ReviewsInputComponent } from "./ReviewsView"; +const Paginator = findComponentByCodeLazy>('rel:"prev",children:'); +const requirePaginator = extractAndLoadChunksLazy(['name:"SearchResults"'], new RegExp(`${DefaultExtractAndLoadChunksRegex.source}.{0,30}?name:"SearchResults"`)); + function Modal({ modalProps, modalKey, discordId, name, type }: { modalProps: any; modalKey: string, discordId: string; name: string; type: ReviewType; }) { const [data, setData] = useState(); const [signal, refetch] = useForceUpdater(true); @@ -101,13 +107,15 @@ function Modal({ modalProps, modalKey, discordId, name, type }: { modalProps: an export function openReviewsModal(discordId: string, name: string, type: ReviewType) { const modalKey = "vc-rdb-modal-" + Date.now(); - openModal(props => ( - - ), { modalKey }); + openModalLazy(async () => { + await requirePaginator(); + return props => ( + + ); + }, { modalKey }); } diff --git a/src/plugins/shikiCodeblocks.desktop/index.ts b/src/plugins/shikiCodeblocks.desktop/index.ts index d42065c0e..e046609e3 100644 --- a/src/plugins/shikiCodeblocks.desktop/index.ts +++ b/src/plugins/shikiCodeblocks.desktop/index.ts @@ -29,6 +29,7 @@ import deviconStyle from "./devicon.css?managed"; import { settings } from "./settings"; import { DeviconSetting } from "./types"; import { clearStyles } from "./utils/createStyle"; +import { requireHljs } from "./utils/misc"; export default definePlugin({ name: "ShikiCodeblocks", @@ -74,6 +75,7 @@ export default definePlugin({ shiki, createHighlighter, renderHighlighter: ({ lang, content }: { lang: string; content: string; }) => { + requireHljs(); return createHighlighter({ lang, content, diff --git a/src/plugins/shikiCodeblocks.desktop/utils/misc.ts b/src/plugins/shikiCodeblocks.desktop/utils/misc.ts index 3fbac7b5f..70920fda1 100644 --- a/src/plugins/shikiCodeblocks.desktop/utils/misc.ts +++ b/src/plugins/shikiCodeblocks.desktop/utils/misc.ts @@ -20,14 +20,12 @@ import { resolveLang } from "@plugins/shikiCodeblocks.desktop/api/languages"; import { HighlighterProps } from "@plugins/shikiCodeblocks.desktop/components/Highlighter"; import { HljsSetting } from "@plugins/shikiCodeblocks.desktop/types"; import { classNameFactory } from "@utils/css"; -import { DefaultExtractAndLoadChunksRegex, extractAndLoadChunks, findByPropsLazy, proxyLazyWebpack } from "@webpack"; +import { DefaultExtractAndLoadChunksRegex, extractAndLoadChunksLazy, findByPropsLazy } from "@webpack"; export const cl = classNameFactory("vc-shiki-"); -export const hljs: typeof import("highlight.js").default = proxyLazyWebpack(() => { - extractAndLoadChunks(["codeBlock:{react("], new RegExp(`"hljs".+?${DefaultExtractAndLoadChunksRegex.source}`)); - return findByPropsLazy("highlight", "registerLanguage"); -}); +export const hljs: typeof import("highlight.js").default = findByPropsLazy("highlight", "registerLanguage"); +export const requireHljs = extractAndLoadChunksLazy(["codeBlock:{react("], new RegExp(`"hljs".+?${DefaultExtractAndLoadChunksRegex.source}`)); export const shouldUseHljs = ({ lang, diff --git a/src/webpack/common/components.ts b/src/webpack/common/components.ts index 0ec776516..f0f5610aa 100644 --- a/src/webpack/common/components.ts +++ b/src/webpack/common/components.ts @@ -56,15 +56,15 @@ export const Tooltip = waitForComponent("Tooltip", m => m.prototype?. /** @deprecated import from @vencord/components */ export const TooltipContainer = TooltipContainerComponent as never; -export const TextInput = waitForComponent("TextInput", filters.componentByCode("#{intl::MAXIMUM_LENGTH_ERROR}", '"input"')); -export const TextArea = waitForComponent("TextArea", filters.componentByCode('"data-mana-component":"text-area"')); +// FIXME: t.TextInput was for the old void components, and is not 100% correct for the mana component +export const TextInput = waitForComponent("TextInput", filters.componentByCode('setHasValue?.(""!==', '="text",')); +export const TextArea = waitForComponent("TextArea", filters.componentByCode("!0,rows:", "showRemainingCharacterCount:")); export const Select = waitForComponent("Select", filters.componentByCode('selectionMode:"single",onSelectionChange:', "isSelected:")); export const SearchableSelect = waitForComponent("SearchableSelect", filters.componentByCode('?"multiple":"single",required:')); export const Slider = waitForComponent("Slider", filters.componentByCode("markDash", "this.renderMark(")); export const Popout = waitForComponent("Popout", filters.componentByCode("ref:this.ref,", "renderPopout:this.renderPopout,")); export const Dialog = waitForComponent("Dialog", filters.componentByCode('role:"dialog",tabIndex:-1')); export const TabBar = waitForComponent("TabBar", filters.componentByCode("ref:this.tabBarRef,className:")); -export const Paginator = waitForComponent("Paginator", filters.componentByCode('rel:"prev",children:')); // TODO: remake this component export const Clickable = waitForComponent("Clickable", filters.componentByCode("this.context?this.renderNonInteractive():")); export const Avatar = waitForComponent("Avatar", filters.componentByCode(".size-1.375*"));