Selaa lähdekoodia

fix register renderer options

Yuki Takei 3 vuotta sitten
vanhempi
sitoutus
03f17aca54

+ 11 - 19
apps/app/src/client/services/activate-plugin.ts

@@ -1,11 +1,6 @@
-import { isClient } from '@growi/core/dist/utils/browser-utils';
-
 import { initializeGrowiFacade, registerGrowiFacade } from '~/utils/growi-facade';
 import { initializeGrowiFacade, registerGrowiFacade } from '~/utils/growi-facade';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
-import { generateViewOptions, generatePreviewOptions } from './renderer/renderer';
-
-
 declare global {
 declare global {
   // eslint-disable-next-line vars-on-top, no-var
   // eslint-disable-next-line vars-on-top, no-var
   var pluginActivators: {
   var pluginActivators: {
@@ -21,10 +16,19 @@ const logger = loggerFactory('growi:cli:ActivatePluginService');
 
 
 export class ActivatePluginService {
 export class ActivatePluginService {
 
 
-  static activateAll(): void {
+  static async activateAll(): Promise<void> {
     initializeGrowiFacade();
     initializeGrowiFacade();
 
 
-    const { pluginActivators } = window;
+    // register renderer options to facade
+    const { generateViewOptions, generatePreviewOptions } = await import('./renderer/renderer');
+    registerGrowiFacade({
+      markdownRenderer: {
+        optionsGenerators: {
+          generateViewOptions,
+          generatePreviewOptions,
+        },
+      },
+    });
 
 
     if (pluginActivators == null) {
     if (pluginActivators == null) {
       return;
       return;
@@ -36,15 +40,3 @@ export class ActivatePluginService {
   }
   }
 
 
 }
 }
-
-// register to facade
-if (isClient()) {
-  registerGrowiFacade({
-    markdownRenderer: {
-      optionsGenerators: {
-        generateViewOptions,
-        generatePreviewOptions,
-      },
-    },
-  });
-}

+ 2 - 1
apps/app/src/client/services/renderer/renderer.tsx

@@ -1,5 +1,6 @@
 import assert from 'assert';
 import assert from 'assert';
 
 
+import { isClient } from '@growi/core/dist/utils/browser-utils';
 import * as drawioPlugin from '@growi/remark-drawio';
 import * as drawioPlugin from '@growi/remark-drawio';
 // eslint-disable-next-line import/extensions
 // eslint-disable-next-line import/extensions
 import * as lsxGrowiPlugin from '@growi/remark-lsx/dist/client/index.mjs';
 import * as lsxGrowiPlugin from '@growi/remark-lsx/dist/client/index.mjs';
@@ -38,7 +39,7 @@ import loggerFactory from '~/utils/logger';
 const logger = loggerFactory('growi:cli:services:renderer');
 const logger = loggerFactory('growi:cli:services:renderer');
 
 
 
 
-// assert(isClient(), 'This module must be loaded only from client modules.');
+assert(isClient(), 'This module must be loaded only from client modules.');
 
 
 
 
 export const generateViewOptions = (
 export const generateViewOptions = (

+ 1 - 12
apps/app/src/components/Page/PageView.tsx

@@ -14,7 +14,6 @@ import {
 import { useSWRxCurrentPage } from '~/stores/page';
 import { useSWRxCurrentPage } from '~/stores/page';
 import { useViewOptions } from '~/stores/renderer';
 import { useViewOptions } from '~/stores/renderer';
 import { useIsMobile } from '~/stores/ui';
 import { useIsMobile } from '~/stores/ui';
-import { registerGrowiFacade } from '~/utils/growi-facade';
 
 
 
 
 import type { CommentsProps } from '../Comments';
 import type { CommentsProps } from '../Comments';
@@ -67,22 +66,12 @@ export const PageView = (props: Props): JSX.Element => {
   const { data: isMobile } = useIsMobile();
   const { data: isMobile } = useIsMobile();
 
 
   const { data: pageBySWR } = useSWRxCurrentPage();
   const { data: pageBySWR } = useSWRxCurrentPage();
-  const { data: viewOptions, mutate: mutateRendererOptions } = useViewOptions();
+  const { data: viewOptions } = useViewOptions();
 
 
   const page = pageBySWR ?? initialPage;
   const page = pageBySWR ?? initialPage;
   const isNotFound = isNotFoundMeta || page?.revision == null;
   const isNotFound = isNotFoundMeta || page?.revision == null;
   const isUsersHomePagePath = isUsersHomePage(pagePath);
   const isUsersHomePagePath = isUsersHomePage(pagePath);
 
 
-  // register to facade
-  useEffect(() => {
-    registerGrowiFacade({
-      markdownRenderer: {
-        optionsMutators: {
-          viewOptionsMutator: mutateRendererOptions,
-        },
-      },
-    });
-  }, [mutateRendererOptions]);
 
 
   // ***************************  Auto Scroll  ***************************
   // ***************************  Auto Scroll  ***************************
   useEffect(() => {
   useEffect(() => {

+ 1 - 14
apps/app/src/components/PageEditor.tsx

@@ -47,7 +47,6 @@ import {
   useEditorMode, useSelectedGrant,
   useEditorMode, useSelectedGrant,
 } from '~/stores/ui';
 } from '~/stores/ui';
 import { useGlobalSocket } from '~/stores/websocket';
 import { useGlobalSocket } from '~/stores/websocket';
-import { registerGrowiFacade } from '~/utils/growi-facade';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
 
 
@@ -103,7 +102,7 @@ const PageEditor = React.memo((): JSX.Element => {
   const { mutate: mutateRemoteRevisionLastUpdatedAt } = useRemoteRevisionLastUpdatedAt();
   const { mutate: mutateRemoteRevisionLastUpdatedAt } = useRemoteRevisionLastUpdatedAt();
   const { mutate: mutateRemoteRevisionLastUpdateUser } = useRemoteRevisionLastUpdateUser();
   const { mutate: mutateRemoteRevisionLastUpdateUser } = useRemoteRevisionLastUpdateUser();
 
 
-  const { data: rendererOptions, mutate: mutateRendererOptions } = usePreviewOptions();
+  const { data: rendererOptions } = usePreviewOptions();
   const { mutate: mutateIsEnabledUnsavedWarning } = useIsEnabledUnsavedWarning();
   const { mutate: mutateIsEnabledUnsavedWarning } = useIsEnabledUnsavedWarning();
   const saveOrUpdate = useSaveOrUpdate();
   const saveOrUpdate = useSaveOrUpdate();
 
 
@@ -179,18 +178,6 @@ const PageEditor = React.memo((): JSX.Element => {
     return optionsToSave;
     return optionsToSave;
   }, [grantData, isSlackEnabled, pageTags]);
   }, [grantData, isSlackEnabled, pageTags]);
 
 
-  // register to facade
-  useEffect(() => {
-    // for markdownRenderer
-    registerGrowiFacade({
-      markdownRenderer: {
-        optionsMutators: {
-          previewOptionsMutator: mutateRendererOptions,
-        },
-      },
-    });
-  }, [mutateRendererOptions]);
-
   const setMarkdownWithDebounce = useMemo(() => debounce(100, throttle(150, (value: string, isClean: boolean) => {
   const setMarkdownWithDebounce = useMemo(() => debounce(100, throttle(150, (value: string, isClean: boolean) => {
     markdownToSave.current = value;
     markdownToSave.current = value;
     setMarkdownToPreview(value);
     setMarkdownToPreview(value);

+ 1 - 13
apps/app/src/components/ShareLink/ShareLinkPageView.tsx

@@ -8,7 +8,6 @@ import type { IShareLinkHasId } from '~/interfaces/share-link';
 import { generateSSRViewOptions } from '~/services/renderer/renderer';
 import { generateSSRViewOptions } from '~/services/renderer/renderer';
 import { useIsNotFound } from '~/stores/context';
 import { useIsNotFound } from '~/stores/context';
 import { useViewOptions } from '~/stores/renderer';
 import { useViewOptions } from '~/stores/renderer';
-import { registerGrowiFacade } from '~/utils/growi-facade';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
 import { MainPane } from '../Layout/MainPane';
 import { MainPane } from '../Layout/MainPane';
@@ -42,18 +41,7 @@ export const ShareLinkPageView = (props: Props): JSX.Element => {
 
 
   const { data: isNotFoundMeta } = useIsNotFound();
   const { data: isNotFoundMeta } = useIsNotFound();
 
 
-  const { data: viewOptions, mutate: mutateRendererOptions } = useViewOptions();
-
-  // register to facade
-  useEffect(() => {
-    registerGrowiFacade({
-      markdownRenderer: {
-        optionsMutators: {
-          viewOptionsMutator: mutateRendererOptions,
-        },
-      },
-    });
-  }, [mutateRendererOptions]);
+  const { data: viewOptions } = useViewOptions();
 
 
   const isNotFound = isNotFoundMeta || page == null || shareLink == null;
   const isNotFound = isNotFoundMeta || page == null || shareLink == null;