2024-05-03 00:52:01 -07:00

75 lines
1.7 KiB
TypeScript

"use server"
import { revalidatePath } from "next/cache"
export async function createSandbox(body: {
type: string
name: string
userId: string
visibility: string
}) {
const res = await fetch("http://localhost:8787/api/sandbox", {
method: "PUT",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(body),
})
return await res.text()
}
export async function updateSandbox(body: {
id: string
name?: string
visibility?: "public" | "private"
}) {
await fetch("http://localhost:8787/api/sandbox", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(body),
})
revalidatePath("/dashboard")
}
export async function deleteSandbox(id: string) {
await fetch(`http://localhost:8787/api/sandbox?id=${id}`, {
method: "DELETE",
})
revalidatePath("/dashboard")
}
export async function shareSandbox(sandboxId: string, email: string) {
const res = await fetch("http://localhost:8787/api/sandbox/share", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ sandboxId, email }),
})
const text = await res.text()
if (res.status !== 200) {
return { success: false, message: text }
}
revalidatePath(`/code/${sandboxId}`)
return { success: true, message: "Shared successfully." }
}
export async function unshareSandbox(sandboxId: string, userId: string) {
await fetch("http://localhost:8787/api/sandbox/share", {
method: "DELETE",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ sandboxId, userId }),
})
revalidatePath(`/code/${sandboxId}`)
}