|
|
@@ -1,7 +1,9 @@
|
|
|
import { Key, SWRResponse } from 'swr';
|
|
|
|
|
|
import { RendererSettings } from '~/interfaces/services/renderer';
|
|
|
-import GrowiRenderer, { generateCommentPreviewRenderer, generatePreviewRenderer, generateViewRenderer } from '~/services/renderer/growi-renderer';
|
|
|
+import GrowiRenderer, {
|
|
|
+ generateCommentPreviewRenderer, generatePreviewRenderer, generateViewRenderer, RendererGenerator,
|
|
|
+} from '~/services/renderer/growi-renderer';
|
|
|
import { useStaticSWR } from '~/stores/use-static-swr';
|
|
|
|
|
|
import { useCurrentPagePath, useGrowiRendererConfig } from './context';
|
|
|
@@ -10,8 +12,9 @@ export const useRendererSettings = (initialData?: RendererSettings): SWRResponse
|
|
|
return useStaticSWR('rendererSettings', initialData);
|
|
|
};
|
|
|
|
|
|
-export const useViewRenderer = (): SWRResponse<GrowiRenderer, any> => {
|
|
|
- let key: Key = 'viewRenderer';
|
|
|
+// The base hook with common processes
|
|
|
+const _useRendererBase = (key: Key, generator: RendererGenerator): SWRResponse<GrowiRenderer, any> => {
|
|
|
+ let _key = key;
|
|
|
|
|
|
const { data: renderer, mutate: mutateRenderer } = useStaticSWR(key);
|
|
|
const { data: rendererSettings } = useRendererSettings();
|
|
|
@@ -19,133 +22,55 @@ export const useViewRenderer = (): SWRResponse<GrowiRenderer, any> => {
|
|
|
const { data: growiRendererConfig } = useGrowiRendererConfig();
|
|
|
|
|
|
if (rendererSettings == null || growiRendererConfig == null) {
|
|
|
- key = null;
|
|
|
+ _key = null;
|
|
|
}
|
|
|
// Initialize renderer
|
|
|
else if (renderer == null) {
|
|
|
- const generated = generateViewRenderer(rendererSettings, growiRendererConfig, currentPath);
|
|
|
+ const generated = generator(growiRendererConfig, rendererSettings, currentPath);
|
|
|
mutateRenderer(generated);
|
|
|
}
|
|
|
|
|
|
- return useStaticSWR(key);
|
|
|
+ return useStaticSWR(_key);
|
|
|
};
|
|
|
|
|
|
-export const usePreviewRenderer = (): SWRResponse<GrowiRenderer, any> => {
|
|
|
- let key: Key = 'previewRenderer';
|
|
|
+export const useViewRenderer = (): SWRResponse<GrowiRenderer, any> => {
|
|
|
+ const key: Key = 'viewRenderer';
|
|
|
|
|
|
- const { data: renderer, mutate: mutateRenderer } = useStaticSWR(key);
|
|
|
- const { data: rendererSettings } = useRendererSettings();
|
|
|
- const { data: currentPath } = useCurrentPagePath();
|
|
|
- const { data: growiRendererConfig } = useGrowiRendererConfig();
|
|
|
+ return _useRendererBase(key, generateViewRenderer);
|
|
|
+};
|
|
|
|
|
|
- if (rendererSettings == null || growiRendererConfig == null) {
|
|
|
- key = null;
|
|
|
- }
|
|
|
- // Initialize renderer
|
|
|
- else if (renderer == null) {
|
|
|
- const generated = generatePreviewRenderer(growiRendererConfig, currentPath);
|
|
|
- mutateRenderer(generated);
|
|
|
- }
|
|
|
+export const usePreviewRenderer = (): SWRResponse<GrowiRenderer, any> => {
|
|
|
+ const key: Key = 'previewRenderer';
|
|
|
|
|
|
- return useStaticSWR(key);
|
|
|
+ return _useRendererBase(key, generatePreviewRenderer);
|
|
|
};
|
|
|
|
|
|
export const useCommentPreviewRenderer = (): SWRResponse<GrowiRenderer, any> => {
|
|
|
- let key: Key = 'commentPreviewRenderer';
|
|
|
-
|
|
|
- const { data: renderer, mutate: mutateRenderer } = useStaticSWR(key);
|
|
|
- const { data: rendererSettings } = useRendererSettings();
|
|
|
- const { data: currentPath } = useCurrentPagePath();
|
|
|
- const { data: growiRendererConfig } = useGrowiRendererConfig();
|
|
|
-
|
|
|
- if (rendererSettings == null || growiRendererConfig == null) {
|
|
|
- key = null;
|
|
|
- }
|
|
|
- // Initialize renderer
|
|
|
- else if (renderer == null) {
|
|
|
- const generated = generateCommentPreviewRenderer(rendererSettings, growiRendererConfig, currentPath);
|
|
|
- mutateRenderer(generated);
|
|
|
- }
|
|
|
+ const key: Key = 'commentPreviewRenderer';
|
|
|
|
|
|
- return useStaticSWR(key);
|
|
|
+ return _useRendererBase(key, generateCommentPreviewRenderer);
|
|
|
};
|
|
|
|
|
|
export const useSearchResultRenderer = (): SWRResponse<GrowiRenderer, any> => {
|
|
|
- let key: Key = 'searchResultRenderer';
|
|
|
+ const key: Key = 'searchResultRenderer';
|
|
|
|
|
|
- const { data: renderer, mutate: mutateRenderer } = useStaticSWR(key);
|
|
|
- const { data: rendererSettings } = useRendererSettings();
|
|
|
- const { data: currentPath } = useCurrentPagePath();
|
|
|
- const { data: growiRendererConfig } = useGrowiRendererConfig();
|
|
|
-
|
|
|
- if (rendererSettings == null || growiRendererConfig == null) {
|
|
|
- key = null;
|
|
|
- }
|
|
|
- // Initialize renderer
|
|
|
- else if (renderer == null) {
|
|
|
- const generated = generateViewRenderer(rendererSettings, growiRendererConfig, currentPath);
|
|
|
- mutateRenderer(generated);
|
|
|
- }
|
|
|
-
|
|
|
- return useStaticSWR(key);
|
|
|
+ return _useRendererBase(key, generateViewRenderer);
|
|
|
};
|
|
|
|
|
|
export const useTimelineRenderer = (): SWRResponse<GrowiRenderer, any> => {
|
|
|
- let key: Key = 'timelineRenderer';
|
|
|
-
|
|
|
- const { data: renderer, mutate: mutateRenderer } = useStaticSWR(key);
|
|
|
- const { data: rendererSettings } = useRendererSettings();
|
|
|
- const { data: currentPath } = useCurrentPagePath();
|
|
|
- const { data: growiRendererConfig } = useGrowiRendererConfig();
|
|
|
+ const key: Key = 'timelineRenderer';
|
|
|
|
|
|
- if (rendererSettings == null || growiRendererConfig == null) {
|
|
|
- key = null;
|
|
|
- }
|
|
|
- // Initialize renderer
|
|
|
- else if (renderer == null) {
|
|
|
- const generated = generateViewRenderer(rendererSettings, growiRendererConfig, currentPath);
|
|
|
- mutateRenderer(generated);
|
|
|
- }
|
|
|
-
|
|
|
- return useStaticSWR(key);
|
|
|
+ return _useRendererBase(key, generateViewRenderer);
|
|
|
};
|
|
|
|
|
|
export const useDraftRenderer = (): SWRResponse<GrowiRenderer, any> => {
|
|
|
- let key: Key = 'draftRenderer';
|
|
|
+ const key: Key = 'draftRenderer';
|
|
|
|
|
|
- const { data: renderer, mutate: mutateRenderer } = useStaticSWR(key);
|
|
|
- const { data: rendererSettings } = useRendererSettings();
|
|
|
- const { data: currentPath } = useCurrentPagePath();
|
|
|
- const { data: growiRendererConfig } = useGrowiRendererConfig();
|
|
|
-
|
|
|
- if (rendererSettings == null || growiRendererConfig == null) {
|
|
|
- key = null;
|
|
|
- }
|
|
|
- // Initialize renderer
|
|
|
- else if (renderer == null) {
|
|
|
- const generated = generateViewRenderer(rendererSettings, growiRendererConfig, currentPath);
|
|
|
- mutateRenderer(generated);
|
|
|
- }
|
|
|
-
|
|
|
- return useStaticSWR(key);
|
|
|
+ return _useRendererBase(key, generateViewRenderer);
|
|
|
};
|
|
|
|
|
|
export const useCustomSidebarRenderer = (): SWRResponse<GrowiRenderer, any> => {
|
|
|
- let key: Key = 'customSidebarRenderer';
|
|
|
-
|
|
|
- const { data: renderer, mutate: mutateRenderer } = useStaticSWR(key);
|
|
|
- const { data: rendererSettings } = useRendererSettings();
|
|
|
- const { data: currentPath } = useCurrentPagePath();
|
|
|
- const { data: growiRendererConfig } = useGrowiRendererConfig();
|
|
|
-
|
|
|
- if (rendererSettings == null || growiRendererConfig == null) {
|
|
|
- key = null;
|
|
|
- }
|
|
|
- // Initialize renderer
|
|
|
- else if (renderer == null) {
|
|
|
- const generated = generateViewRenderer(rendererSettings, growiRendererConfig, currentPath);
|
|
|
- mutateRenderer(generated);
|
|
|
- }
|
|
|
+ const key: Key = 'customSidebarRenderer';
|
|
|
|
|
|
- return useStaticSWR(key);
|
|
|
+ return _useRendererBase(key, generateViewRenderer);
|
|
|
};
|