diff --git a/Dockerfile.dev b/Dockerfile.dev
index 89c2b6a8..7f168f4a 100644
--- a/Dockerfile.dev
+++ b/Dockerfile.dev
@@ -24,7 +24,7 @@ ENV TEMP_DIRECTORY=/tmp/presenton
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium
# Install ollama
-RUN curl -fsSL http://ollama.com/install.sh | sh
+# RUN curl -fsSL http://ollama.com/install.sh | sh
# Install dependencies for FastAPI
RUN pip install aiohttp aiomysql aiosqlite asyncpg fastapi[standard] \
diff --git a/servers/nextjs/app/(presentation-generator)/presentation/components/Header.tsx b/servers/nextjs/app/(presentation-generator)/presentation/components/Header.tsx
index 591f5493..fc11296c 100644
--- a/servers/nextjs/app/(presentation-generator)/presentation/components/Header.tsx
+++ b/servers/nextjs/app/(presentation-generator)/presentation/components/Header.tsx
@@ -4,9 +4,9 @@ import {
SquareArrowOutUpRight,
Play,
Loader2,
- Redo2 ,
+ Redo2,
Undo2,
- RefreshCcw,
+
} from "lucide-react";
import React, { useState } from "react";
import Wrapper from "@/components/Wrapper";
@@ -73,8 +73,6 @@ const Header = ({
// Save the presentation data before exporting
trackEvent(MixpanelEvent.Header_UpdatePresentationContent_API_Call);
await PresentationGenerationApi.updatePresentationContent(presentationData);
-
-
trackEvent(MixpanelEvent.Header_GetPptxModel_API_Call);
const pptx_model = await get_presentation_pptx_model(presentation_id);
if (!pptx_model) {
@@ -188,28 +186,28 @@ const Header = ({
{/* undo redo */}
-
-
+
- {
- onRedo();
- }}>
-
-
-
-
+
+
+
+
+ {
+ onRedo();
+ }}>
+
+
+
+
diff --git a/servers/nextjs/app/api/export-as-pdf/route.ts b/servers/nextjs/app/api/export-as-pdf/route.ts
index 99111a4b..8ea9023a 100644
--- a/servers/nextjs/app/api/export-as-pdf/route.ts
+++ b/servers/nextjs/app/api/export-as-pdf/route.ts
@@ -81,8 +81,15 @@ export async function POST(req: NextRequest) {
browser.close();
const sanitizedTitle = sanitizeFilename(title ?? "presentation");
+ const appDataDirectory = process.env.APP_DATA_DIRECTORY!;
+ if (!appDataDirectory) {
+ return NextResponse.json({
+ error: "App data directory not found",
+ status: 500,
+ });
+ }
const destinationPath = path.join(
- process.env.APP_DATA_DIRECTORY!,
+ appDataDirectory,
"exports",
`${sanitizedTitle}.pdf`
);
diff --git a/servers/nextjs/app/api/upload-image/route.ts b/servers/nextjs/app/api/upload-image/route.ts
index b66b3fc4..5bcafdab 100644
--- a/servers/nextjs/app/api/upload-image/route.ts
+++ b/servers/nextjs/app/api/upload-image/route.ts
@@ -21,10 +21,16 @@ export async function POST(request: NextRequest) {
const bytes = await file.arrayBuffer();
const buffer = Buffer.from(bytes);
+ if (!userDataDir) {
+ return NextResponse.json(
+ { error: "User data directory not found" },
+ { status: 500 }
+ );
+ }
// Create uploads directory if it doesn't exist
const uploadsDir = path.join(userDataDir, "uploads");
fs.mkdirSync(uploadsDir, { recursive: true });
-
+
// Generate unique filename
const filename = `${crypto.randomBytes(16).toString("hex")}.png`;
diff --git a/servers/nextjs/app/api/user-config/route.ts b/servers/nextjs/app/api/user-config/route.ts
index 03b801e3..1939175e 100644
--- a/servers/nextjs/app/api/user-config/route.ts
+++ b/servers/nextjs/app/api/user-config/route.ts
@@ -4,11 +4,18 @@ import { LLMConfig } from "@/types/llm_config";
const userConfigPath = process.env.USER_CONFIG_PATH!;
const canChangeKeys = process.env.CAN_CHANGE_KEYS !== "false";
-console.log("UserConfigPath:", userConfigPath);
+
export async function GET() {
if (!canChangeKeys) {
return NextResponse.json({
error: "You are not allowed to access this resource",
+ status: 403,
+ });
+ }
+ if (!userConfigPath) {
+ return NextResponse.json({
+ error: "User config path not found",
+ status: 500,
});
}