Skip to content
Extraits de code Groupes Projets
Valider f5b1082a rédigé par Mohamed Lemine BAILLAHI's avatar Mohamed Lemine BAILLAHI
Parcourir les fichiers

Merge branch 'feature/VSN-1155' into 'develop'

feature/VSN-1155 - fix UI rendring after folder fav action

Closes VSN-1155

See merge request !227
parents 5269f2ad 1c03f2af
Branches
Étiquettes v0.0.34
1 requête de fusion!227feature/VSN-1155 - fix UI rendring after folder fav action
Pipeline #19578 réussi avec l'étape
in 34 secondes
......@@ -14,8 +14,8 @@ export const documentEndpoints = {
bulkDelete: endpointPrefix + "/folders/bulk/delete",
bulkShare: endpointPrefix + "/folders/bulk/share",
share: endpointPrefix + "/folders/share",
favorite: (folderId: number) => `${endpointPrefix}/folders/favorite/${folderId}`,
unfavorite: (folderId: number) => `${endpointPrefix}/folders/unfavorite/${folderId}`,
favorite: (folderId: number, userId : number) => `${endpointPrefix}/folders/favorite/${folderId}?userId=${userId}`,
unfavorite: (folderId: number, userId : number) => `${endpointPrefix}/folders/cancel-favorite/${folderId}?userId=${userId}`,
getFavorites: (ownerId: number) => `${endpointPrefix}/folders/favorites/${ownerId}`,
search: endpointPrefix + "/folders/search",
advancedSearch: endpointPrefix + "/folders/advanced-search",
......
......@@ -138,10 +138,10 @@ export const useFolderStore = create<FolderStore>((set) => ({
}
},
toggleFavorite: async (folderId: number, userId: number) => {
await axiosInstance.post(documentEndpoints.Folder.favorite(folderId), { params: { userId },});
await axiosInstance.post(documentEndpoints.Folder.favorite(folderId, userId));
},
toggleUnfavorite: async (folderId: number, userId : number) => {
await axiosInstance.post(documentEndpoints.Folder.unfavorite(folderId), { params: { userId },});
await axiosInstance.delete(documentEndpoints.Folder.unfavorite(folderId, userId));
},
}))
......@@ -23,8 +23,8 @@ import { useFolderStore } from "@/shared/api/stores/document-service/folderStore
interface FolderProps {
folder: FolderDTO
onClick?: () => void
onMarkAsFavorite?: (id: number) => void
onUnmarkAsFavorite?: (id: number) => void
onMarkAsFavorite?: (folder : FolderDTO) => Promise<void>
onUnmarkAsFavorite?: (folder : FolderDTO) => void
loadingFolders?: Record<number, boolean>
onRename?: (folder: FolderDTO) => void;
onMove?: (folder: FolderDTO) => void;
......@@ -45,7 +45,7 @@ export default function FolderCard({
}: FolderProps) {
const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)
const [showCheckbox, setShowCheckbox] = useState(false)
const [isFavorite, setIsFavorite] = useState(folder.favorite || false)
const isFavorite = folder.favorite || false;
const open = Boolean(anchorEl)
const folderStore = useFolderStore();
const handleClick = (event: React.MouseEvent<HTMLElement>) => {
......@@ -61,22 +61,14 @@ export default function FolderCard({
e.stopPropagation()
handleClose()
}
const handleFavoriteClick = async (event: React.ChangeEvent<HTMLInputElement>) => {
event.stopPropagation();
try {
if (isFavorite) {
await folderStore.toggleUnfavorite(folder.id, 4);
onUnmarkAsFavorite?.(folder.id);
} else {
await folderStore.toggleFavorite(folder.id, 4);
onMarkAsFavorite?.(folder.id);
const handleFavoriteClick = (event: React.ChangeEvent<HTMLInputElement>) => {
event.stopPropagation();
if (isFavorite && onUnmarkAsFavorite) {
onUnmarkAsFavorite(folder);
} else if (!isFavorite && onMarkAsFavorite) {
onMarkAsFavorite(folder);
}
setIsFavorite(!isFavorite);
} catch (error) {
console.error("Erreur lors de la mise à jour des favoris :", error);
}
};
};
const fileCount = folder.documents?.length || 0
......
......@@ -77,7 +77,7 @@ export default function DocumentDrive({ onShowDemandes }: DocumentDriveProps) {
const [selectedFolderDetails, setSelectedFolderDetails] = useState<FolderDetails | null>(null);
const { createFolder, getRootFolders, renameFolder, moveFolder, searchFolders } = useFolderStore()
const { createFolder, getRootFolders, renameFolder, moveFolder, searchFolders, toggleFavorite, toggleUnfavorite } = useFolderStore()
useEffect(() => {
// Load real folders from backend
......@@ -270,6 +270,32 @@ export default function DocumentDrive({ onShowDemandes }: DocumentDriveProps) {
}
}
const handleToggleFavorite = async (folder: FolderDTO) => {
try {
if (folder.favorite) {
await toggleUnfavorite(folder.id, folder.ownerId);
} else {
await toggleFavorite(folder.id, folder.ownerId);
}
const updateFavoriteStatus = (list: FolderDTO[]) =>
list.map((f) => f.id === folder.id ? { ...f, favorite: !folder.favorite } : f);
setFolders(prev => updateFavoriteStatus(prev));
setFilteredFolders(prev => updateFavoriteStatus(prev));
if (currentFolder && currentFolder.subFolders) {
const updatedCurrent = {
...currentFolder,
subFolders: updateFavoriteStatus(currentFolder.subFolders),
};
setCurrentFolder(updatedCurrent);
}
} catch (error) {
console.error("Erreur lors de la mise à jour du favori", error);
}
};
const handleFileTypeFilterChange = (fileTypes: string[]) => {
......@@ -544,8 +570,10 @@ export default function DocumentDrive({ onShowDemandes }: DocumentDriveProps) {
}}
onMove={() => handleOpenMoveDialog(folder)}
onDelete={handleDeleteFolder}
onShowDetails={handleShowDetails}/>
onShowDetails={handleShowDetails}
onMarkAsFavorite={handleToggleFavorite}
onUnmarkAsFavorite={handleToggleFavorite}/>
</Grid>
))}
</Grid>
......
0% ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter