Skip to content

Commit 34416d1

Browse files
committed
fix: removed comments and debugging
1 parent 27d0714 commit 34416d1

File tree

2 files changed

+52
-219
lines changed

2 files changed

+52
-219
lines changed

src/features/statements/components/StatementItem.tsx

Lines changed: 22 additions & 209 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ import {
3030
} from '@/components/ui/better-tooltip';
3131
import statementsCategories from '@/data/statementsCategories.json';
3232
import { formatCategoryName } from '@/lib/utils';
33-
import { EntriesContext } from '../context/EntriesContext';
3433

3534
export interface StatementItemProps {
3635
statement: Entry;
@@ -58,6 +57,7 @@ export interface StatementItemProps {
5857
onReset?: (statementId: string) => void;
5958
onToggleResolved?: (statementId: string) => void;
6059
onToggleActionResolved?: (actionId: string) => void;
60+
originalCategory?: string; // Add prop for original category from parent
6161
}
6262

6363
// Helper function to normalize category ID for comparison
@@ -109,6 +109,7 @@ const StatementItem: React.FC<StatementItemProps> = ({
109109
onReset,
110110
onToggleResolved = () => {},
111111
onToggleActionResolved = () => {},
112+
originalCategory: externalOriginalCategory, // Get original category from parent
112113
}) => {
113114
const [isActionsExpanded, setIsActionsExpanded] = React.useState(false);
114115

@@ -126,151 +127,48 @@ const StatementItem: React.FC<StatementItemProps> = ({
126127
// Local state to track if we are currently saving the draft
127128
const [isSaving, setIsSaving] = React.useState(false);
128129

129-
// DEBUG LOGGER - Create a unique ID for this component instance
130-
const componentId = React.useRef(`StatementItem_${statement.id}_${Date.now()}`).current;
131-
132-
// DEBUG LOGGER - Track all calls to setOriginalCategory
133-
const debugSetOriginalCategory = (value: string | null, source: string) => {
134-
console.log(`[CATEGORY TRACKER] SET ORIGINAL CATEGORY from ${source}:`, {
135-
componentId,
136-
statementId: statement.id,
137-
from: originalCategory,
138-
to: value,
139-
statement: statement.category,
140-
callStack: new Error().stack?.split('\n').slice(2, 5).join('\n')
141-
});
142-
setOriginalCategory(value);
143-
};
144-
145-
// LOG EACH RENDER
146-
console.log(`[RENDER] StatementItem ${componentId}:`, {
147-
statementId: statement.id,
148-
isEditing,
149-
category: statement.category,
150-
originalCategory
151-
});
152-
153-
// Track statement changes via ref
154-
const prevStatementRef = React.useRef(statement);
155-
156-
// Log statement changes between renders
157-
if (prevStatementRef.current !== statement) {
158-
console.log(`[STATEMENT CHANGED] ${componentId}:`, {
159-
prevCategory: prevStatementRef.current.category,
160-
newCategory: statement.category,
161-
originalCategory,
162-
statementObjectChanged: prevStatementRef.current !== statement
163-
});
164-
prevStatementRef.current = statement;
165-
}
166-
167-
// Import the EntriesContext to access the global original categories store
168-
const entriesContext = React.useContext(EntriesContext);
169-
170130
// Effect for edit mode changes - only runs when isEditing changes
171131
useEffect(() => {
172-
console.log(`[EDIT MODE EFFECT] ${componentId}:`, {
173-
isEditing,
174-
id: statement.id,
175-
category: statement.category,
176-
originalCategory,
177-
globalOriginalCategory: entriesContext?.data.originalCategories[statement.id]
178-
});
179-
180132
if (isEditing) {
181133
// Entering edit mode - capture original values if not already set
182134
if (originalCategory === null) {
183-
console.log(`[CAPTURE ORIGINAL VALUES] ${componentId}`);
184-
185-
// Check if we already have an original category stored in the global context
186-
const globalOriginalCategory = entriesContext?.data.originalCategories[statement.id];
187-
188-
// Use the stored original category if available, otherwise use the current category
189-
const originalCategoryValue = globalOriginalCategory || (statement.category ? String(statement.category) : '');
190-
191-
console.log(`[FREEZING ORIGINAL CATEGORY] ${componentId}:`, {
192-
originalCategoryValue,
193-
statementCategory: statement.category,
194-
fromGlobalStore: !!globalOriginalCategory
195-
});
196-
197-
// If the original category isn't already in the global store, save it there
198-
if (!globalOriginalCategory && entriesContext) {
199-
entriesContext.setData({
200-
type: 'SET_ORIGINAL_CATEGORY',
201-
payload: {
202-
statementId: statement.id,
203-
category: originalCategoryValue
204-
}
205-
});
206-
}
207-
208-
// Also set it in the local state for immediate use in comparison
209-
debugSetOriginalCategory(originalCategoryValue, 'EDIT_MODE_START');
135+
// Use the external original category from parent if available, otherwise use the current category
136+
const originalCategoryValue =
137+
externalOriginalCategory ||
138+
(statement.category ? String(statement.category) : "");
139+
140+
// Set it in the local state for immediate use in comparison
141+
setOriginalCategory(originalCategoryValue);
210142
setOriginalSubject(statement.atoms.subject);
211143
setOriginalVerb(statement.atoms.verb);
212144
setOriginalObject(statement.atoms.object);
213145
setOriginalPrivacy(statement.isPublic);
214-
} else {
215-
console.log(`[EDIT CONTINUING - NOT CAPTURING] ${componentId}`, {
216-
statementCategory: statement.category,
217-
originalCategory,
218-
globalOriginalCategory: entriesContext?.data.originalCategories[statement.id]
219-
});
220146
}
221147

222148
// Always keep draft updated with latest statement value
223149
setDraft(JSON.parse(JSON.stringify(statement)));
224150
} else {
225151
// Exiting edit mode - reset everything
226-
console.log(`[EXIT EDIT MODE] ${componentId} - clearing original values`);
227-
228-
// Clear the original category from the global store
229-
if (entriesContext) {
230-
entriesContext.setData({
231-
type: 'CLEAR_ORIGINAL_CATEGORY',
232-
payload: statement.id
233-
});
234-
}
235-
236-
// Clear local state
237-
debugSetOriginalCategory(null, 'EDIT_MODE_EXIT');
152+
setOriginalCategory(null);
238153
setOriginalSubject(null);
239154
setOriginalVerb(null);
240155
setOriginalObject(null);
241156
setOriginalPrivacy(null);
242-
157+
243158
setDraft(JSON.parse(JSON.stringify(statement)));
244159
}
245-
// Only depend on isEditing to prevent loops when the entriesContext changes
246-
// eslint-disable-next-line react-hooks/exhaustive-deps
160+
// Only depend on isEditing to prevent loops
161+
// eslint-disable-next-line react-hooks/exhaustive-deps
247162
}, [isEditing]);
248-
249-
// Log every time originalCategory changes
250-
useEffect(() => {
251-
console.log(`[ORIGINAL CATEGORY CHANGED] ${componentId}:`, {
252-
originalCategory,
253-
statementCategory: statement.category
254-
});
255-
}, [originalCategory, componentId, statement.category]);
256-
163+
257164
// Separate effect to keep draft updated when statement changes
258165
useEffect(() => {
259166
if (isEditing) {
260167
// Keep draft updated with latest changes from the statement
261-
console.log(`[STATEMENT UPDATE EFFECT] ${componentId}:`, {
262-
currentCategory: statement.category,
263-
originalCategory: originalCategory,
264-
globalOriginalCategory: entriesContext?.data.originalCategories[statement.id],
265-
different: statement.category !== originalCategory,
266-
editingStatementId: statement.id
267-
});
268-
269168
setDraft(JSON.parse(JSON.stringify(statement)));
270169
}
271-
// We need statement in the deps array, but we'll exclude entriesContext to avoid loops
272-
// eslint-disable-next-line react-hooks/exhaustive-deps
273-
}, [statement, isEditing, componentId]);
170+
// eslint-disable-next-line react-hooks/exhaustive-deps
171+
}, [statement, isEditing]);
274172

275173
// Helper function to normalize category values for comparison
276174
const normalizeCategoryForComparison = (
@@ -288,7 +186,7 @@ const StatementItem: React.FC<StatementItemProps> = ({
288186
return categoryStr;
289187
};
290188

291-
// Calculate changes based on primitive values and global store
189+
// Calculate changes based on primitive values
292190
// If we're not in edit mode or don't have original values, no changes to detect
293191
let hasSubjectChanged = false;
294192
let hasVerbChanged = false;
@@ -298,11 +196,11 @@ const StatementItem: React.FC<StatementItemProps> = ({
298196
let hasChanged = false;
299197

300198
if (isEditing) {
301-
// Use the global store's original category if available, otherwise use the local state
302-
// This ensures we always compare against the true original, even after remounting
303-
const effectiveOriginalCategory = entriesContext?.data.originalCategories[statement.id] || originalCategory;
199+
// Use the external original category if available, otherwise use local state
200+
// This ensures consistent comparison even after component remounts
201+
const effectiveOriginalCategory = externalOriginalCategory || originalCategory;
304202

305-
if (effectiveOriginalCategory !== null) {
203+
if (effectiveOriginalCategory !== null || originalCategory !== null) {
306204
// Compare current draft with original primitive values
307205
hasSubjectChanged = draft.atoms.subject !== originalSubject;
308206
hasVerbChanged = draft.atoms.verb !== originalVerb;
@@ -316,89 +214,16 @@ const StatementItem: React.FC<StatementItemProps> = ({
316214
// Compare normalized categories
317215
hasCategoryChanged = draftCategory !== originalCategoryNormalized;
318216

319-
// Log changes for debugging
320-
console.log('[CHANGE DETECTION]', {
321-
subject: {
322-
draft: draft.atoms.subject,
323-
original: originalSubject,
324-
changed: hasSubjectChanged,
325-
},
326-
verb: {
327-
draft: draft.atoms.verb,
328-
original: originalVerb,
329-
changed: hasVerbChanged,
330-
},
331-
object: {
332-
draft: draft.atoms.object,
333-
original: originalObject,
334-
changed: hasObjectChanged,
335-
},
336-
privacy: {
337-
draft: draft.isPublic,
338-
original: originalPrivacy,
339-
changed: hasPrivacyChanged,
340-
},
341-
category: {
342-
draft: draft.category,
343-
local: originalCategory,
344-
global: entriesContext?.data.originalCategories[statement.id],
345-
effective: effectiveOriginalCategory,
346-
draftNormalized: draftCategory,
347-
originalNormalized: originalCategoryNormalized,
348-
changed: hasCategoryChanged,
349-
},
350-
});
351-
352217
// Calculate overall change status
353218
hasChanged =
354219
hasSubjectChanged ||
355220
hasVerbChanged ||
356221
hasObjectChanged ||
357222
hasPrivacyChanged ||
358223
hasCategoryChanged;
359-
360-
console.log('[OVERALL CHANGE STATUS]', {
361-
hasChanged,
362-
hasSubjectChanged,
363-
hasVerbChanged,
364-
hasObjectChanged,
365-
hasPrivacyChanged,
366-
hasCategoryChanged
367-
});
368224
}
369225
}
370226

371-
// Uncomment for debugging if needed
372-
// console.log('StatementItem change detection:', {
373-
// subject: {
374-
// draft: draft.atoms.subject,
375-
// initial: initialDraft.atoms.subject,
376-
// changed: hasSubjectChanged
377-
// },
378-
// verb: {
379-
// draft: draft.atoms.verb,
380-
// initial: initialDraft.atoms.verb,
381-
// changed: hasVerbChanged
382-
// },
383-
// object: {
384-
// draft: draft.atoms.object,
385-
// initial: initialDraft.atoms.object,
386-
// changed: hasObjectChanged
387-
// },
388-
// privacy: {
389-
// draft: draft.isPublic,
390-
// initial: initialDraft.isPublic,
391-
// changed: hasPrivacyChanged
392-
// },
393-
// category: {
394-
// draft: draft.category,
395-
// initial: initialDraft.category,
396-
// changed: hasCategoryChanged
397-
// }
398-
// });
399-
400-
// Enable save button when any part of the statement has been changed
401-
402227
if (isEditing) {
403228
return (
404229
<div className='bg-gray-100 p-3 rounded-lg shadow'>
@@ -475,10 +300,6 @@ const StatementItem: React.FC<StatementItemProps> = ({
475300
draft.atoms.subject
476301
} ${getVerbName(draft.atoms.verb)} ${draft.atoms.object}`;
477302

478-
console.log(
479-
'SAVE BUTTON CLICKED - submitting draft:',
480-
updatedDraft
481-
);
482303
await onLocalSave(updatedDraft);
483304
setIsSaving(false);
484305
}}
@@ -649,10 +470,6 @@ const StatementItem: React.FC<StatementItemProps> = ({
649470
draft.atoms.verb
650471
)} ${draft.atoms.object}`;
651472

652-
console.log(
653-
'SAVE BUTTON CLICKED (tablet) - submitting draft:',
654-
updatedDraft
655-
);
656473
await onLocalSave(updatedDraft);
657474
setIsSaving(false);
658475
}}
@@ -778,10 +595,6 @@ const StatementItem: React.FC<StatementItemProps> = ({
778595
draft.atoms.verb
779596
)} ${draft.atoms.object}`;
780597

781-
console.log(
782-
'SAVE BUTTON CLICKED (mobile) - submitting draft:',
783-
updatedDraft
784-
);
785598
await onLocalSave(updatedDraft);
786599
setIsSaving(false);
787600
}}
@@ -937,4 +750,4 @@ const StatementItem: React.FC<StatementItemProps> = ({
937750
);
938751
};
939752

940-
export default StatementItem;
753+
export default StatementItem;

0 commit comments

Comments
 (0)