mirror of
https://github.com/Sonny93/my-links.git
synced 2025-12-08 14:43:24 +00:00
feat: remove SSR for dasboard page
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
import { isSSREnableForPage } from '#config/ssr';
|
||||
import {
|
||||
PREFER_DARK_THEME,
|
||||
DARK_THEME_DEFAULT_VALUE,
|
||||
PREFER_DARK_THEME,
|
||||
} from '#user/constants/theme';
|
||||
import logger from '@adonisjs/core/services/logger';
|
||||
import { defineConfig } from '@adonisjs/inertia';
|
||||
|
||||
export default defineConfig({
|
||||
@@ -32,5 +34,10 @@ export default defineConfig({
|
||||
ssr: {
|
||||
enabled: true,
|
||||
entrypoint: 'inertia/app/ssr.tsx',
|
||||
pages: (_, page) => {
|
||||
const ssrEnabled = isSSREnableForPage(page);
|
||||
logger.debug(`Page "${page}" SSR enabled: ${ssrEnabled}`);
|
||||
return ssrEnabled;
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
2
config/ssr.ts
Normal file
2
config/ssr.ts
Normal file
@@ -0,0 +1,2 @@
|
||||
export const CSR_ROUTES = ['dashboard'];
|
||||
export const isSSREnableForPage = (page: string) => !CSR_ROUTES.includes(page);
|
||||
@@ -1,8 +1,9 @@
|
||||
import { resolvePageComponent } from '@adonisjs/inertia/helpers';
|
||||
import { createInertiaApp } from '@inertiajs/react';
|
||||
import { isSSREnableForPage } from 'config-ssr';
|
||||
import 'dayjs/locale/en';
|
||||
import 'dayjs/locale/fr';
|
||||
import { hydrateRoot } from 'react-dom/client';
|
||||
import { createRoot, hydrateRoot } from 'react-dom/client';
|
||||
import '../i18n/index';
|
||||
|
||||
const appName = import.meta.env.VITE_APP_NAME || 'MyLinks';
|
||||
@@ -20,6 +21,13 @@ createInertiaApp({
|
||||
},
|
||||
|
||||
setup({ el, App, props }) {
|
||||
hydrateRoot(el, <App {...props} />);
|
||||
const componentName = props.initialPage.component;
|
||||
const isSSREnabled = isSSREnableForPage(componentName);
|
||||
console.debug(`Page "${componentName}" SSR enabled: ${isSSREnabled}`);
|
||||
if (isSSREnabled) {
|
||||
hydrateRoot(el, <App {...props} />);
|
||||
} else {
|
||||
createRoot(el).render(<App {...props} />);
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
@@ -6,8 +6,9 @@
|
||||
"jsx": "react-jsx",
|
||||
"resolveJsonModule": true,
|
||||
"paths": {
|
||||
"~/*": ["./*"]
|
||||
"~/*": ["./*"],
|
||||
"config-ssr": ["../config/ssr"]
|
||||
}
|
||||
},
|
||||
"include": ["./**/*.ts", "./**/*.tsx"]
|
||||
"include": ["./**/*.ts", "./**/*.tsx", "../config/ssr.ts"]
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { defineConfig } from 'vite';
|
||||
import { getDirname } from '@adonisjs/core/helpers';
|
||||
import inertia from '@adonisjs/inertia/client';
|
||||
import react from '@vitejs/plugin-react';
|
||||
import adonisjs from '@adonisjs/vite/client';
|
||||
import react from '@vitejs/plugin-react';
|
||||
import { defineConfig } from 'vite';
|
||||
|
||||
export default defineConfig({
|
||||
plugins: [
|
||||
@@ -21,6 +21,7 @@ export default defineConfig({
|
||||
resolve: {
|
||||
alias: {
|
||||
'~/': `${getDirname(import.meta.url)}/inertia/`,
|
||||
'config-ssr': `${getDirname(import.meta.url)}/config/ssr.ts`,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user