Address types

This commit is contained in:
Arthur Belleville 2025-07-05 20:06:39 +02:00
parent fa95e7496e
commit 904482bced
No known key found for this signature in database
4 changed files with 24 additions and 17 deletions

View file

@ -1,8 +1,8 @@
import { ClickOutside } from "./ClickOutside";
import { Tablo } from "@ui/types/tablos.types";
import { UserTablo } from "@ui/types/tablos.types";
interface DeleteTabloModalProps {
tablo: Tablo | null;
tablo: UserTablo | null;
onClose: () => void;
onConfirm: (tabloId: string) => void;
isDeleting: boolean;

View file

@ -3,18 +3,18 @@ import { useState } from "react";
import { ImageColorPicker } from "./ImageColorPicker";
import { StatusPicker } from "./StatusPicker";
import { useInviteUser } from "@ui/hooks/invite";
import { Tablo } from "@ui/types/tablos.types";
import { TabloUpdate, UserTablo } from "@ui/types/tablos.types";
type StatusType = "todo" | "in_progress" | "done";
interface TabloModalProps {
tablo: Tablo | null;
onEdit: (updatedTablo: Tablo) => void;
tablo: UserTablo | null;
onEdit: (updatedTablo: TabloUpdate & { id: string }) => void;
onClose: () => void;
}
export const TabloModal = ({ tablo, onClose, onEdit }: TabloModalProps) => {
const [editData, setEditData] = useState<Tablo | null>(tablo);
const [editData, setEditData] = useState<UserTablo | null>(tablo);
const [isEditingName, setIsEditingName] = useState(false);
const [creationMode, setCreationMode] = useState<"image" | "color">("color");
@ -32,10 +32,12 @@ export const TabloModal = ({ tablo, onClose, onEdit }: TabloModalProps) => {
const handleSaveEdit = () => {
if (editData && onEdit) {
// Clear the unused field based on selection
const updatedTablo = {
...editData,
const updatedTablo: TabloUpdate & { id: string } = {
id: editData.id,
name: editData.name,
//TODO: image: creationMode === "image" ? editData.image : null,
color: creationMode === "color" ? selectedColor : null,
status: editData.status,
};
onEdit(updatedTablo);
}

View file

@ -10,13 +10,13 @@ import {
useDeleteTablo,
} from "@ui/hooks/tablos";
import { LoadingSpinner } from "@ui/components/LoadingSpinner";
import { Tablo } from "@ui/types/tablos.types";
import { TabloInsert, TabloUpdate, UserTablo } from "@ui/types/tablos.types";
export const TabloPage = () => {
const [contextMenuTablo, setContextMenuTablo] = useState<string | null>(null);
const [isCreateModalOpen, setIsCreateModalOpen] = useState(false);
const [viewingTablo, setViewingTablo] = useState<Tablo | null>(null);
const [deletingTablo, setDeletingTablo] = useState<Tablo | null>(null);
const [viewingTablo, setViewingTablo] = useState<UserTablo | null>(null);
const [deletingTablo, setDeletingTablo] = useState<UserTablo | null>(null);
const [isDeleting, setIsDeleting] = useState(false);
const { data: tablos, isLoading, error } = useTablosList();
@ -39,7 +39,7 @@ export const TabloPage = () => {
};
const createNewTablo = async (
tabloData: Pick<Tablo, "name" | "color" | "image" | "status">
tabloData: Pick<TabloInsert, "name" | "color" | "image" | "status">
) => {
try {
await createTabloMutation.mutateAsync(tabloData);
@ -110,7 +110,7 @@ export const TabloPage = () => {
}
};
const onEditTablo = (tablo: Tablo) => {
const onEditTablo = (tablo: TabloUpdate & { id: string }) => {
updateTablo(tablo, {
onSuccess: () => {
closeTabloModal();
@ -143,11 +143,11 @@ export const TabloPage = () => {
setIsDeleting(false);
};
const getUserRole = (tablo: Tablo) => {
const getUserRole = (tablo: UserTablo) => {
return tablo.is_admin ? "Admin" : "Invité";
};
const getRoleColor = (tablo: Tablo) => {
const getRoleColor = (tablo: UserTablo) => {
return tablo.is_admin
? "text-blue-600 dark:text-blue-400"
: "text-gray-500 dark:text-gray-400";
@ -246,7 +246,7 @@ export const TabloPage = () => {
);
}
const renderTablo = (tablo: Tablo) => {
const renderTablo = (tablo: UserTablo) => {
const isAdmin = tablo.is_admin;
return (

View file

@ -1,7 +1,7 @@
import { Database } from "@ui/types/database.types";
import { RemoveNullFromObject } from "@ui/types/removeNull";
export type Tablo = RemoveNullFromObject<
export type UserTablo = RemoveNullFromObject<
Database["public"]["Views"]["user_tablos"]["Row"],
| "id"
| "access_level"
@ -13,3 +13,8 @@ export type Tablo = RemoveNullFromObject<
| "name"
| "status"
>;
export type Tablo = Database["public"]["Tables"]["tablos"];
export type TabloInsert = Tablo["Insert"];
export type TabloUpdate = Tablo["Update"];