feat: remove SSR for dasboard page

This commit is contained in:
Sonny
2024-11-15 18:42:42 +01:00
parent eac0c135d6
commit 6005374340
5 changed files with 26 additions and 7 deletions

View File

@@ -1,7 +1,9 @@
import { isSSREnableForPage } from '#config/ssr';
import { import {
PREFER_DARK_THEME,
DARK_THEME_DEFAULT_VALUE, DARK_THEME_DEFAULT_VALUE,
PREFER_DARK_THEME,
} from '#user/constants/theme'; } from '#user/constants/theme';
import logger from '@adonisjs/core/services/logger';
import { defineConfig } from '@adonisjs/inertia'; import { defineConfig } from '@adonisjs/inertia';
export default defineConfig({ export default defineConfig({
@@ -32,5 +34,10 @@ export default defineConfig({
ssr: { ssr: {
enabled: true, enabled: true,
entrypoint: 'inertia/app/ssr.tsx', 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
View File

@@ -0,0 +1,2 @@
export const CSR_ROUTES = ['dashboard'];
export const isSSREnableForPage = (page: string) => !CSR_ROUTES.includes(page);

View File

@@ -1,8 +1,9 @@
import { resolvePageComponent } from '@adonisjs/inertia/helpers'; import { resolvePageComponent } from '@adonisjs/inertia/helpers';
import { createInertiaApp } from '@inertiajs/react'; import { createInertiaApp } from '@inertiajs/react';
import { isSSREnableForPage } from 'config-ssr';
import 'dayjs/locale/en'; import 'dayjs/locale/en';
import 'dayjs/locale/fr'; import 'dayjs/locale/fr';
import { hydrateRoot } from 'react-dom/client'; import { createRoot, hydrateRoot } from 'react-dom/client';
import '../i18n/index'; import '../i18n/index';
const appName = import.meta.env.VITE_APP_NAME || 'MyLinks'; const appName = import.meta.env.VITE_APP_NAME || 'MyLinks';
@@ -20,6 +21,13 @@ createInertiaApp({
}, },
setup({ el, App, props }) { 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} />);
}
}, },
}); });

View File

@@ -6,8 +6,9 @@
"jsx": "react-jsx", "jsx": "react-jsx",
"resolveJsonModule": true, "resolveJsonModule": true,
"paths": { "paths": {
"~/*": ["./*"] "~/*": ["./*"],
"config-ssr": ["../config/ssr"]
} }
}, },
"include": ["./**/*.ts", "./**/*.tsx"] "include": ["./**/*.ts", "./**/*.tsx", "../config/ssr.ts"]
} }

View File

@@ -1,8 +1,8 @@
import { defineConfig } from 'vite';
import { getDirname } from '@adonisjs/core/helpers'; import { getDirname } from '@adonisjs/core/helpers';
import inertia from '@adonisjs/inertia/client'; import inertia from '@adonisjs/inertia/client';
import react from '@vitejs/plugin-react';
import adonisjs from '@adonisjs/vite/client'; import adonisjs from '@adonisjs/vite/client';
import react from '@vitejs/plugin-react';
import { defineConfig } from 'vite';
export default defineConfig({ export default defineConfig({
plugins: [ plugins: [
@@ -21,6 +21,7 @@ export default defineConfig({
resolve: { resolve: {
alias: { alias: {
'~/': `${getDirname(import.meta.url)}/inertia/`, '~/': `${getDirname(import.meta.url)}/inertia/`,
'config-ssr': `${getDirname(import.meta.url)}/config/ssr.ts`,
}, },
}, },
}); });