mirror of
https://github.com/felipegcoutinho/openmonetis.git
synced 2026-05-09 11:01:45 +00:00
refactor(dashboard): reorganiza widgets e remove magnet-lines
This commit is contained in:
65
lib/dashboard/use-notes-widget-controller.ts
Normal file
65
lib/dashboard/use-notes-widget-controller.ts
Normal file
@@ -0,0 +1,65 @@
|
||||
"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,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user