mirror of
https://github.com/felipegcoutinho/openmonetis.git
synced 2026-05-09 11:01:45 +00:00
66 lines
1.6 KiB
TypeScript
66 lines
1.6 KiB
TypeScript
"use client";
|
|
|
|
import { useMemo, useState } from "react";
|
|
import type { Note } from "@/components/anotacoes/types";
|
|
import type { DashboardNote } from "@/lib/dashboard/notes";
|
|
import { mapDashboardNotesToNotes } from "@/lib/dashboard/notes-mappers";
|
|
|
|
export type NotesWidgetController = {
|
|
mappedNotes: Note[];
|
|
noteToEdit: Note | null;
|
|
isEditOpen: boolean;
|
|
noteDetails: Note | null;
|
|
isDetailsOpen: boolean;
|
|
openEdit: (note: Note) => void;
|
|
openDetails: (note: Note) => void;
|
|
handleEditOpenChange: (open: boolean) => void;
|
|
handleDetailsOpenChange: (open: boolean) => void;
|
|
};
|
|
|
|
export function useNotesWidgetController(
|
|
notes: DashboardNote[],
|
|
): NotesWidgetController {
|
|
const [noteToEdit, setNoteToEdit] = useState<Note | null>(null);
|
|
const [isEditOpen, setIsEditOpen] = useState(false);
|
|
const [noteDetails, setNoteDetails] = useState<Note | null>(null);
|
|
const [isDetailsOpen, setIsDetailsOpen] = useState(false);
|
|
|
|
const mappedNotes = useMemo(() => mapDashboardNotesToNotes(notes), [notes]);
|
|
|
|
const openEdit = (note: Note) => {
|
|
setNoteToEdit(note);
|
|
setIsEditOpen(true);
|
|
};
|
|
|
|
const openDetails = (note: Note) => {
|
|
setNoteDetails(note);
|
|
setIsDetailsOpen(true);
|
|
};
|
|
|
|
const handleEditOpenChange = (open: boolean) => {
|
|
setIsEditOpen(open);
|
|
if (!open) {
|
|
setNoteToEdit(null);
|
|
}
|
|
};
|
|
|
|
const handleDetailsOpenChange = (open: boolean) => {
|
|
setIsDetailsOpen(open);
|
|
if (!open) {
|
|
setNoteDetails(null);
|
|
}
|
|
};
|
|
|
|
return {
|
|
mappedNotes,
|
|
noteToEdit,
|
|
isEditOpen,
|
|
noteDetails,
|
|
isDetailsOpen,
|
|
openEdit,
|
|
openDetails,
|
|
handleEditOpenChange,
|
|
handleDetailsOpenChange,
|
|
};
|
|
}
|