nitropage
Version:
A free and open source, extensible visual page builder based on SolidStart.
40 lines (34 loc) • 1.02 kB
text/typescript
import { getUser } from "#lib/auth/server";
import { useDatabase } from "#lib/server/prisma";
import { getSettings as getSettings_ } from "#lib/server/settings";
import { createAsync, query, useParams } from "@solidjs/router";
export const getSettings = query(async function (
this: any,
params: { projectId?: string; pageId?: string; inherit?: boolean } = {
inherit: true,
},
) {
"use server";
await getUser({ assert: {} });
const db = useDatabase();
const page = params.pageId
? await db.nitroPage.findUniqueOrThrow({
where: {
id: params.pageId,
},
})
: undefined;
const projectId =
params.projectId || (params.inherit ? page?.projectId : undefined);
return await getSettings_({
inherit: params.inherit,
projectId,
pageId: params.pageId,
});
}, "np-settings");
export const useProjectSettings = () => {
const params = useParams();
return createAsync(() => getSettings({ projectId: params.project }), {
deferStream: true,
});
};