Files

102 lines
2.8 KiB
TypeScript

import { NextResponse } from 'next/server';
import { v0 } from 'v0-sdk';
export async function POST(request: Request) {
try {
const { chatId, chatUrl } = await request.json();
if (!chatId && !chatUrl) {
return NextResponse.json(
{ error: 'Either chatId or chatUrl is required' },
{ status: 400 }
);
}
// Check for API key
const apiKey = process.env.V0_API_KEY;
if (!apiKey) {
return NextResponse.json(
{ error: 'V0_API_KEY not configured' },
{ status: 500 }
);
}
// Extract chat ID from URL if provided
let extractedChatId = chatId;
if (chatUrl && !chatId) {
// v0.dev URLs look like: https://v0.dev/chat/abc123xyz
const match = chatUrl.match(/\/chat\/([^/?]+)/);
if (match) {
extractedChatId = match[1];
} else {
return NextResponse.json(
{ error: 'Invalid v0 chat URL format' },
{ status: 400 }
);
}
}
console.log(`[v0] Attempting to import chat: ${extractedChatId}`);
// The v0 SDK doesn't support retrieving individual chats by ID
// We'll store a reference to the chat URL for the user to access it
const fullChatUrl = chatUrl || `https://v0.dev/chat/${extractedChatId}`;
console.log(`[v0] Importing chat reference: ${extractedChatId}`);
const chatInfo = {
id: extractedChatId,
webUrl: fullChatUrl,
message: 'Chat link saved. You can access it via the web URL.',
note: 'The v0 API does not currently support retrieving chat history via API. Use the web URL to view and continue the conversation.'
};
return NextResponse.json({
success: true,
chat: chatInfo,
message: 'Chat reference saved successfully'
});
} catch (error) {
console.error('[v0] Error importing chat:', error);
return NextResponse.json(
{
error: 'Failed to import chat',
details: error instanceof Error ? error.message : 'Unknown error'
},
{ status: 500 }
);
}
}
// Also support GET for testing
export async function GET(request: Request) {
const { searchParams } = new URL(request.url);
const chatId = searchParams.get('chatId');
const chatUrl = searchParams.get('chatUrl');
if (!chatId && !chatUrl) {
return NextResponse.json({
message: 'Import a v0 chat',
usage: 'POST /api/v0/import-chat with { "chatId": "abc123" } or { "chatUrl": "https://v0.dev/chat/abc123" }',
example: {
method: 'POST',
body: {
chatUrl: 'https://v0.dev/chat/your-chat-id'
}
}
});
}
// Forward to POST handler
const body = JSON.stringify({ chatId, chatUrl });
const req = new Request(request.url, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body,
});
return POST(req);
}