refactor(dokploy): add ssr for settings to show instantly the sidebar

This commit is contained in:
Mauricio Siu
2024-10-25 23:56:33 -06:00
parent 742e5a244d
commit e3b20268d5
13 changed files with 63 additions and 11 deletions

View File

@@ -45,6 +45,13 @@ export async function getServerSideProps(
await helpers.settings.isCloud.prefetch(); await helpers.settings.isCloud.prefetch();
await helpers.auth.get.prefetch();
if (user?.rol === "user") {
await helpers.user.byAuthId.prefetch({
authId: user.authId,
});
}
if (!user) { if (!user) {
return { return {
redirect: { redirect: {

View File

@@ -55,6 +55,8 @@ export async function getServerSideProps(
transformer: superjson, transformer: superjson,
}); });
await helpers.auth.get.prefetch();
await helpers.settings.isCloud.prefetch(); await helpers.settings.isCloud.prefetch();
return { return {

View File

@@ -49,7 +49,7 @@ export async function getServerSideProps(
}, },
transformer: superjson, transformer: superjson,
}); });
await helpers.auth.get.prefetch();
await helpers.settings.isCloud.prefetch(); await helpers.settings.isCloud.prefetch();
return { return {

View File

@@ -1,9 +1,12 @@
import { ShowNodes } from "@/components/dashboard/settings/cluster/nodes/show-nodes"; import { ShowNodes } from "@/components/dashboard/settings/cluster/nodes/show-nodes";
import { DashboardLayout } from "@/components/layouts/dashboard-layout"; import { DashboardLayout } from "@/components/layouts/dashboard-layout";
import { SettingsLayout } from "@/components/layouts/settings-layout"; import { SettingsLayout } from "@/components/layouts/settings-layout";
import { appRouter } from "@/server/api/root";
import { IS_CLOUD, validateRequest } from "@dokploy/server"; import { IS_CLOUD, validateRequest } from "@dokploy/server";
import { createServerSideHelpers } from "@trpc/react-query/server";
import type { GetServerSidePropsContext } from "next"; import type { GetServerSidePropsContext } from "next";
import React, { type ReactElement } from "react"; import React, { type ReactElement } from "react";
import superjson from "superjson";
const Page = () => { const Page = () => {
return ( return (
@@ -25,6 +28,7 @@ Page.getLayout = (page: ReactElement) => {
export async function getServerSideProps( export async function getServerSideProps(
ctx: GetServerSidePropsContext<{ serviceId: string }>, ctx: GetServerSidePropsContext<{ serviceId: string }>,
) { ) {
const { req, res } = ctx;
if (IS_CLOUD) { if (IS_CLOUD) {
return { return {
redirect: { redirect: {
@@ -42,8 +46,22 @@ export async function getServerSideProps(
}, },
}; };
} }
const helpers = createServerSideHelpers({
router: appRouter,
ctx: {
req: req as any,
res: res as any,
db: null as any,
session: session,
user: user,
},
transformer: superjson,
});
await helpers.auth.get.prefetch();
return { return {
props: {}, props: {
trpcState: helpers.dehydrate(),
},
}; };
} }

View File

@@ -50,7 +50,7 @@ export async function getServerSideProps(
}, },
transformer: superjson, transformer: superjson,
}); });
await helpers.auth.get.prefetch();
await helpers.settings.isCloud.prefetch(); await helpers.settings.isCloud.prefetch();
return { return {

View File

@@ -49,7 +49,7 @@ export async function getServerSideProps(
}, },
transformer: superjson, transformer: superjson,
}); });
await helpers.auth.get.prefetch();
try { try {
await helpers.project.all.prefetch(); await helpers.project.all.prefetch();
await helpers.settings.isCloud.prefetch(); await helpers.settings.isCloud.prefetch();

View File

@@ -50,7 +50,7 @@ export async function getServerSideProps(
}, },
transformer: superjson, transformer: superjson,
}); });
await helpers.auth.get.prefetch();
await helpers.settings.isCloud.prefetch(); await helpers.settings.isCloud.prefetch();
return { return {

View File

@@ -56,6 +56,13 @@ export async function getServerSideProps(
}); });
await helpers.settings.isCloud.prefetch(); await helpers.settings.isCloud.prefetch();
await helpers.auth.get.prefetch();
if (user?.rol === "user") {
await helpers.user.byAuthId.prefetch({
authId: user.authId,
});
}
if (!user) { if (!user) {
return { return {
redirect: { redirect: {

View File

@@ -49,7 +49,7 @@ export async function getServerSideProps(
}, },
transformer: superjson, transformer: superjson,
}); });
await helpers.auth.get.prefetch();
await helpers.settings.isCloud.prefetch(); await helpers.settings.isCloud.prefetch();
return { return {

View File

@@ -2,9 +2,12 @@ import { WebDomain } from "@/components/dashboard/settings/web-domain";
import { WebServer } from "@/components/dashboard/settings/web-server"; import { WebServer } from "@/components/dashboard/settings/web-server";
import { DashboardLayout } from "@/components/layouts/dashboard-layout"; import { DashboardLayout } from "@/components/layouts/dashboard-layout";
import { SettingsLayout } from "@/components/layouts/settings-layout"; import { SettingsLayout } from "@/components/layouts/settings-layout";
import { appRouter } from "@/server/api/root";
import { IS_CLOUD, validateRequest } from "@dokploy/server"; import { IS_CLOUD, validateRequest } from "@dokploy/server";
import { createServerSideHelpers } from "@trpc/react-query/server";
import type { GetServerSidePropsContext } from "next"; import type { GetServerSidePropsContext } from "next";
import React, { type ReactElement } from "react"; import React, { type ReactElement } from "react";
import superjson from "superjson";
const Page = () => { const Page = () => {
return ( return (
@@ -27,6 +30,7 @@ Page.getLayout = (page: ReactElement) => {
export async function getServerSideProps( export async function getServerSideProps(
ctx: GetServerSidePropsContext<{ serviceId: string }>, ctx: GetServerSidePropsContext<{ serviceId: string }>,
) { ) {
const { req, res } = ctx;
if (IS_CLOUD) { if (IS_CLOUD) {
return { return {
redirect: { redirect: {
@@ -35,7 +39,7 @@ export async function getServerSideProps(
}, },
}; };
} }
const { user } = await validateRequest(ctx.req, ctx.res); const { user, session } = await validateRequest(ctx.req, ctx.res);
if (!user) { if (!user) {
return { return {
redirect: { redirect: {
@@ -53,7 +57,22 @@ export async function getServerSideProps(
}; };
} }
const helpers = createServerSideHelpers({
router: appRouter,
ctx: {
req: req as any,
res: res as any,
db: null as any,
session: session,
user: user,
},
transformer: superjson,
});
await helpers.auth.get.prefetch();
return { return {
props: {}, props: {
trpcState: helpers.dehydrate(),
},
}; };
} }

View File

@@ -58,7 +58,7 @@ export async function getServerSideProps(
}, },
transformer: superjson, transformer: superjson,
}); });
await helpers.auth.get.prefetch();
await helpers.settings.isCloud.prefetch(); await helpers.settings.isCloud.prefetch();
return { return {

View File

@@ -52,7 +52,6 @@ export async function getServerSideProps(
try { try {
await helpers.project.all.prefetch(); await helpers.project.all.prefetch();
const auth = await helpers.auth.get.fetch(); const auth = await helpers.auth.get.fetch();
await helpers.settings.isCloud.prefetch(); await helpers.settings.isCloud.prefetch();

View File

@@ -50,7 +50,7 @@ export async function getServerSideProps(
}, },
transformer: superjson, transformer: superjson,
}); });
await helpers.auth.get.prefetch();
await helpers.settings.isCloud.prefetch(); await helpers.settings.isCloud.prefetch();
return { return {