export const COMMENT_ERRORS: Record = { "sign-in-required": "กรุณาเข้าสู่ระบบเพื่อแสดงความคิดเห็น", "too-many-requests": "ทำรายการบ่อยเกินไป กรุณารอสักครู่แล้วลองใหม่", "uploads-busy": "ระบบอัปโหลดกำลังใช้งานมาก กรุณาลองใหม่อีกครั้ง", "image-too-large": "รูปภาพแต่ละรูปต้องมีขนาดไม่เกิน 10 MiB", "body-too-large": "แนบรูปภาพได้สูงสุด 5 รูป รูปละไม่เกิน 10 MiB", "unsupported-image-type": "รองรับรูปภาพ JPEG, PNG และ WebP ไม่รองรับวิดีโอ", "invalid-image": "ไม่สามารถอ่านรูปภาพได้ กรุณาเลือกไฟล์รูปภาพที่ถูกต้อง", "comment-image-upload-failed": "อัปโหลดรูปภาพไม่สำเร็จ กรุณาลองใหม่ ข้อความร่างและรูปภาพของคุณยังอยู่", "empty-comment": "เขียนความคิดเห็นหรือแนบรูปภาพ", "invalid-comment": "เขียนได้สูงสุด 4,000 ตัวอักษร และแนบรูปภาพได้ 5 รูป", "comment-edited-reload": "ความคิดเห็นนี้ถูกแก้ไขแล้ว กรุณาโหลดใหม่ก่อนบันทึก ข้อความร่างของคุณยังอยู่", "comment-unavailable": "ไม่สามารถทำรายการกับความคิดเห็นนี้ได้แล้ว", "comment-not-editable": "ไม่สามารถแก้ไขความคิดเห็นนี้ได้แล้ว", "guide-trashed": "ไกด์นี้อยู่ในถังขยะ จึงไม่สามารถแสดงความคิดเห็นได้", }; export async function commentRequest(url: string, options?: RequestInit): Promise { const response = await fetch(url, { cache: "no-store", ...options }); if (!response.ok) { const body = await response.json().catch(() => ({})); throw new Error(COMMENT_ERRORS[body.error] ?? "ไม่สามารถทำรายการได้ กรุณาลองใหม่"); } return response.status === 204 ? undefined as T : await response.json() as T; } export function commentSignInHref() { return `/auth/login?next=${encodeURIComponent(window.location.pathname + window.location.search + window.location.hash)}`; }