fix: useEffect anti-patterns, attendance permissions, and received-invoices schema mismatch
- Remove ref-mirror useEffect in AuthContext (cachedUserRef already written at mutation sites) - Replace useEffect slide direction in ReceivedInvoices with render-time computation - Fix Login.tsx useEffect dependency array (mount-only alert should have [] deps) - Move "project created" alert to navigation source in ProjectCreate, remove useEffect in ProjectDetail - Move companySettings defaults into fetch callbacks in InvoiceDetail and OfferDetail - Replace due_date useEffect with useMemo in InvoiceDetail - Capture initial snapshots from API data instead of useEffect in InvoiceDetail, OfferDetail, OrderDetail - Replace localStorage draft useEffect with lazy useState initializer in OfferDetail - Fix attendance dropdown to filter by attendance.record permission only - Fix clock-out 404 on update-address (remove departure_time filter for departure action) - Fix received-invoices stats endpoint referencing non-existent is_deleted and amount_czk columns Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -192,18 +192,14 @@ export default function ReceivedInvoices({
|
||||
};
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
const prev = prevYear.current * 12 + prevMonth.current;
|
||||
const curr = statsYear * 12 + statsMonth;
|
||||
if (curr > prev) {
|
||||
slideDirection.current = 1;
|
||||
}
|
||||
if (curr < prev) {
|
||||
slideDirection.current = -1;
|
||||
}
|
||||
prevMonth.current = statsMonth;
|
||||
prevYear.current = statsYear;
|
||||
}, [statsMonth, statsYear]);
|
||||
// Compute slide direction during render (not in effect) so it's
|
||||
// available for the current frame instead of one render late.
|
||||
const prevTotal = prevYear.current * 12 + prevMonth.current;
|
||||
const currTotal = statsYear * 12 + statsMonth;
|
||||
if (currTotal > prevTotal) slideDirection.current = 1;
|
||||
else if (currTotal < prevTotal) slideDirection.current = -1;
|
||||
prevMonth.current = statsMonth;
|
||||
prevYear.current = statsYear;
|
||||
|
||||
const fetchList = useCallback(async () => {
|
||||
if (!hasLoadedOnce.current) setLoading(true);
|
||||
|
||||
Reference in New Issue
Block a user