feat : use manual save

This commit is contained in:
2026-10-10 02:56:59 +07:00 Unverified
parent 8a16b09ba6
commit 5e75da41c5
18 changed files with 752 additions and 490 deletions
+12 -11
View File
@@ -7,7 +7,7 @@ import { closestCenter, DndContext, KeyboardSensor, PointerSensor, useSensor, us
import { arrayMove, SortableContext, sortableKeyboardCoordinates, useSortable, verticalListSortingStrategy } from "@dnd-kit/sortable";
import { CSS } from "@dnd-kit/utilities";
import { saveWeaponSection } from "@/app/admin/actions";
import { AutosaveStatus } from "@/components/admin/autosave-status";
import { SaveStatus } from "@/components/admin/save-status";
import { DeleteConfirmationDialog } from "@/components/admin/ui/delete-confirmation-dialog";
import { WeaponSelect } from "@/components/admin/ui/catalog-select";
import { Button } from "@/components/ui/button";
@@ -16,7 +16,7 @@ import { Field, FieldGroup, FieldLabel } from "@/components/ui/field";
import { ClearableInput as Input } from "@/components/admin/ui/clearable-input";
import { Textarea } from "@/components/ui/textarea";
import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group";
import { useAutosave } from "@/hooks/use-autosave";
import { useManualSave } from "@/hooks/use-manual-save";
import { adminDraftKey } from "@/lib/editor/local-draft";
import { weaponSectionSchema } from "@/lib/guides/schemas";
import { supportsWeaponType } from "@/lib/catalog/lunaris";
@@ -129,7 +129,7 @@ export function WeaponEditor({ guide, weapons, characters, initial }: EditorBase
const weaponIssue = (...path: (string | number)[]) =>
!validation.success && hasIssuePrefix(validation.error.issues, ...path);
const localDraft = { note, groups, activeGroupIndex };
const autosave = useAutosave({
const manualSave = useManualSave({
guideId: guide.id,
scope: "weapon",
value,
@@ -161,7 +161,7 @@ export function WeaponEditor({ guide, weapons, characters, initial }: EditorBase
<CardTitle>Weapon tier list</CardTitle>
<CardDescription>
ลากเพื่อเรียงอาวุธจากดีที่สุดลงมา และกรอกเปอร์เซ็นต์อย่างน้อยหนึ่งช่อง
ระบบจะบันทึกอัตโนมัติ
กดปุ่มบันทึกเพื่อบันทึกการเปลี่ยนแปลง
</CardDescription>
</CardHeader>
<CardContent className="flex flex-col gap-4">
@@ -487,18 +487,19 @@ export function WeaponEditor({ guide, weapons, characters, initial }: EditorBase
<PlusIcon data-icon="inline-start" />
เพิ่มอาวุธ
</Button>
<AutosaveStatus
state={autosave.state}
conflictVersion={autosave.conflictVersion}
canOverwrite={autosave.canOverwrite}
onReloadLatest={autosave.reloadLatest}
onOverwrite={autosave.overwrite}
<SaveStatus
state={manualSave.state}
conflictVersion={manualSave.conflictVersion}
canOverwrite={manualSave.canOverwrite}
onReloadLatest={manualSave.reloadLatest}
onOverwrite={manualSave.overwrite}
issues={
validation.success
? []
: formatGuideValidationIssues("weapon", validation.error.issues)
}
onSave={autosave.saveNow}
onSave={manualSave.saveNow}
canSave={manualSave.canSave}
/>
</CardFooter>
</Card>