create public layout and admin and fix escrow and refund

This commit is contained in:
arifal
2026-05-12 00:05:30 +07:00
parent a07942c4b4
commit 958514d575
48 changed files with 1928 additions and 18 deletions
+43
View File
@@ -0,0 +1,43 @@
"use server";
import { getServerSession } from "next-auth";
import { revalidatePath } from "next/cache";
import { authOptions } from "@/lib/auth";
import { isAdminEmail } from "@/lib/admin";
import { payoutService } from "@/server/services/payout.service";
import { payoutMarkPaidSchema } from "./schemas";
async function requireAdmin() {
const session = await getServerSession(authOptions);
if (!session?.user || !isAdminEmail(session.user.email)) {
return null;
}
return session.user;
}
export async function markPayoutPaidAction(formData: FormData) {
const admin = await requireAdmin();
if (!admin) return { error: "Tidak memiliki akses admin" };
const parsed = payoutMarkPaidSchema.safeParse({
payoutId: formData.get("payoutId") as string,
adminNote: (formData.get("adminNote") as string) ?? "",
});
if (!parsed.success) {
return { error: parsed.error.issues[0].message };
}
try {
await payoutService.markPaid({
payoutId: parsed.data.payoutId,
adminId: admin.id,
adminNote: parsed.data.adminNote,
});
revalidatePath("/admin/payouts");
revalidatePath("/admin");
revalidatePath("/profile");
return { success: true };
} catch (err) {
return { error: (err as Error).message };
}
}