37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import { requireAuth } from '~/server/utils/auth'
|
|
import { saveCanvasToGitea } from '~/server/utils/giteaApi'
|
|
import { canvases } from '~/server/utils/db'
|
|
|
|
export default defineEventHandler(async (event) => {
|
|
const user = requireAuth(event)
|
|
const body = await readBody(event)
|
|
const { canvasId, autoSync = true } = body
|
|
|
|
if (!canvasId) {
|
|
throw createError({ statusCode: 400, message: 'Canvas ID is required' })
|
|
}
|
|
|
|
// Check if canvas exists and user has access
|
|
const canvas = canvases.get(canvasId)
|
|
if (!canvas) {
|
|
throw createError({ statusCode: 404, message: 'Canvas not found' })
|
|
}
|
|
|
|
// Check permissions
|
|
if (canvas.ownerId !== user.id && !canvas.isPublic) {
|
|
throw createError({ statusCode: 403, message: 'Access denied' })
|
|
}
|
|
|
|
try {
|
|
const ok = await saveCanvasToGitea(canvasId, canvas, `Auto-sync: ${canvas.name}`)
|
|
return {
|
|
success: ok,
|
|
message: ok ? 'Canvas synchronized with Gitea' : 'Gitea sync failed',
|
|
autoSyncEnabled: autoSync
|
|
}
|
|
} catch (error) {
|
|
console.error('Failed to sync canvas to Gitea:', error)
|
|
throw createError({ statusCode: 500, message: 'Failed to sync canvas to Gitea' })
|
|
}
|
|
})
|