Merge pull request #420 from R0m1k3/1.1

1.1
This commit is contained in:
LogiFlow authored and GitHub committed 2025-09-09 11:26:35 +02:00
commit e91ef2d3ee
4 files changed
+39 -5

No files matched your search

Binary file not shown.

After

Width:  |  Height:  |  Size: 268 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 KiB

+8 -1
View File
@@ -98,7 +98,14 @@ export default function Layout({ children }: LayoutProps) {
// IMPORTANT FIX: Pour les rôles directeur/manager, forcer la sélection d'un magasin spécifique
// si aucun n'est sélectionné et qu'ils n'ont accès qu'à un seul magasin
if ((user.role === 'directeur' || user.role === 'manager') && !selectedStoreId && stores.length === 1 && !needsUpdate) {
console.log('🏪 Auto-selecting single available store for directeur/manager:', stores[0].id);
console.log('🏪 Auto-selecting single available store for directeur/manager:', {
storeId: stores[0].id,
storeName: stores[0].name,
userRole: user.role,
userId: user.id,
previousSelectedStoreId: selectedStoreId,
timestamp: new Date().toISOString()
});
const singleStoreId = stores[0].id;
setSelectedStoreId(singleStoreId);
localStorage.setItem('selectedStoreId', singleStoreId.toString());
+31 -4
View File
@@ -1,4 +1,4 @@
import { useState } from "react";
import { useState, useEffect } from "react";
import { useQuery, useQueryClient } from "@tanstack/react-query";
import { useAuthUnified } from "@/hooks/useAuthUnified";
import { useStore } from "@/components/Layout";
@@ -92,7 +92,7 @@ function TaskFormInline({ task, onClose, selectedStoreId, user }: any) {
method,
taskData,
selectedStoreId,
finalGroupId: taskData.groupId
finalGroupId: (taskData as any).groupId
});
const response = await fetch(url, {
@@ -317,6 +317,32 @@ export default function Tasks() {
const { toast } = useToast();
const queryClient = useQueryClient();
// Debug enablement condition for tasks query
const isQueryEnabled = !!user && (user.role === 'admin' || (user.role === 'directeur' || user.role === 'manager' ? !!selectedStoreId : true));
console.log('🔍 TASK QUERY ENABLEMENT DEBUG:', {
hasUser: !!user,
userRole: user?.role,
selectedStoreId,
isAdmin: user?.role === 'admin',
isDirecteurOrManager: user?.role === 'directeur' || user?.role === 'manager',
hasSelectedStore: !!selectedStoreId,
finalEnabled: isQueryEnabled,
storeInitialized,
timestamp: new Date().toISOString()
});
// Force refresh when selectedStoreId changes for directeur/manager
useEffect(() => {
if (user && (user.role === 'directeur' || user.role === 'manager') && selectedStoreId) {
console.log('🔄 FORCE REFRESH: selectedStoreId changed for directeur/manager:', {
userRole: user.role,
selectedStoreId,
timestamp: new Date().toISOString()
});
queryClient.invalidateQueries({ queryKey: ["/api/tasks"] });
}
}, [selectedStoreId, user, queryClient]);
// États locaux
const [searchTerm, setSearchTerm] = useState("");
const [statusFilter, setStatusFilter] = useState<string>("all");
@@ -348,7 +374,8 @@ export default function Tasks() {
url: `/api/tasks?${params.toString()}`,
willFilterByStore: !!selectedStoreId,
enabled: !!user,
timestamp: new Date().toISOString()
timestamp: new Date().toISOString(),
userGroups: user?.userGroups?.map((ug: any) => ug.groupId) || 'NONE'
});
const response = await fetch(`/api/tasks?${params.toString()}`, {
@@ -386,7 +413,7 @@ export default function Tasks() {
throw error;
}
},
enabled: !!user,
enabled: !!user && (user.role === 'admin' || (user.role === 'directeur' || user.role === 'manager' ? !!selectedStoreId : true)),
});
// Fetch users for task assignment - seulement pour admin/manager/directeur