Skip to content

Commit aecd2a0

Browse files
committed
fix: Address reviewer feedback - fix composition.utils.ts and remove console statements
- Add error handling to composition.utils.ts (third file with same bug) - Remove all 9 console.log/warn/error statements (codebase has zero console logs) - Keep only user-facing showToast notifications for actionable errors - Silent error recovery for corrupted storage data
1 parent 828abfb commit aecd2a0

File tree

3 files changed

+29
-25
lines changed

3 files changed

+29
-25
lines changed

src/cohort-builder.utils.ts

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,6 @@ export const addToHistory = (description: string, patients: Patient[], parameter
123123
try {
124124
// Validate inputs
125125
if (!Array.isArray(patients) || typeof parameters !== 'object') {
126-
console.warn('[Cohort Builder] Invalid input to addToHistory');
127126
return false;
128127
}
129128

@@ -139,7 +138,6 @@ export const addToHistory = (description: string, patients: Patient[], parameter
139138
const parsed = JSON.parse(storedData);
140139
oldHistory = Array.isArray(parsed) ? parsed : [];
141140
} catch (parseError) {
142-
console.error('[Cohort Builder] Corrupted history data, resetting:', parseError);
143141
// Reset corrupted data
144142
window.sessionStorage.removeItem(STORAGE_KEY);
145143
oldHistory = [];
@@ -161,17 +159,10 @@ export const addToHistory = (description: string, patients: Patient[], parameter
161159
try {
162160
const serialized = JSON.stringify(newHistory);
163161

164-
// Warn if approaching limits (~4MB threshold)
165-
if (serialized.length > 4 * 1024 * 1024) {
166-
console.warn('[Cohort Builder] Search history approaching storage limits');
167-
}
168-
169162
window.sessionStorage.setItem(STORAGE_KEY, serialized);
170163
return true;
171164
} catch (storageError) {
172165
if (storageError.name === 'QuotaExceededError') {
173-
console.error('[Cohort Builder] Storage quota exceeded, clearing old history');
174-
175166
// Fallback: Keep only last 10 items
176167
const reducedHistory = newHistory.slice(-10);
177168
try {
@@ -184,7 +175,6 @@ export const addToHistory = (description: string, patients: Patient[], parameter
184175
return true;
185176
} catch (retryError) {
186177
// Complete failure - disable history
187-
console.error('[Cohort Builder] Cannot save history, disabling feature', retryError);
188178
window.sessionStorage.removeItem(STORAGE_KEY);
189179
showToast({
190180
title: 'Search History Unavailable',
@@ -197,8 +187,7 @@ export const addToHistory = (description: string, patients: Patient[], parameter
197187
throw storageError; // Re-throw unexpected errors
198188
}
199189
} catch (error) {
200-
// Log and continue - don't break searching if history fails
201-
console.error('[Cohort Builder] Failed to add search to history:', error);
190+
// Don't break searching if history fails
202191
showToast({
203192
title: 'History Error',
204193
kind: 'error',

src/components/composition/composition.utils.ts

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,33 @@ export const createCompositionQuery = (compositionQuery: string) => {
2323

2424
searchTokens.forEach((eachToken) => {
2525
if (eachToken.match(/\d/)) {
26-
const history = JSON.parse(window.sessionStorage.getItem('openmrsHistory'));
27-
const operandQuery = history[parseInt(eachToken) - 1];
28-
29-
const jsonRequestObject = operandQuery.parameters;
30-
jsonRequestObject.customRowFilterCombination = formatFilterCombination(
31-
jsonRequestObject.customRowFilterCombination,
32-
query.rowFilters.length,
33-
);
34-
query.customRowFilterCombination += `(${jsonRequestObject.customRowFilterCombination})`;
35-
query.rowFilters = query.rowFilters.concat(jsonRequestObject.rowFilters);
26+
try {
27+
const storedData = window.sessionStorage.getItem('openmrsHistory');
28+
if (!storedData) {
29+
return;
30+
}
31+
32+
const history = JSON.parse(storedData);
33+
if (!Array.isArray(history)) {
34+
return;
35+
}
36+
37+
const operandQuery = history[parseInt(eachToken) - 1];
38+
if (!operandQuery?.parameters) {
39+
return;
40+
}
41+
42+
const jsonRequestObject = operandQuery.parameters;
43+
jsonRequestObject.customRowFilterCombination = formatFilterCombination(
44+
jsonRequestObject.customRowFilterCombination,
45+
query.rowFilters.length,
46+
);
47+
query.customRowFilterCombination += `(${jsonRequestObject.customRowFilterCombination})`;
48+
query.rowFilters = query.rowFilters.concat(jsonRequestObject.rowFilters);
49+
} catch (error) {
50+
// Skip invalid history entry
51+
return;
52+
}
3653
} else {
3754
query.customRowFilterCombination += ` ${eachToken} `;
3855
}

src/components/search-history/search-history.utils.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ export const getSearchHistory = (): SearchHistoryItem[] => {
1818

1919
// Validate that parsed data is an array
2020
if (!Array.isArray(history)) {
21-
console.warn('[Cohort Builder] Invalid history data format, resetting');
2221
window.sessionStorage.removeItem(STORAGE_KEY);
2322
return [];
2423
}
@@ -38,12 +37,11 @@ export const getSearchHistory = (): SearchHistoryItem[] => {
3837

3938
return searchHistory;
4039
} catch (error) {
41-
console.error('[Cohort Builder] Error reading search history:', error);
4240
// Clear corrupted data to prevent repeated errors
4341
try {
4442
window.sessionStorage.removeItem(STORAGE_KEY);
4543
} catch (removeError) {
46-
console.error('[Cohort Builder] Error clearing corrupted history:', removeError);
44+
// Silent failure - storage access denied
4745
}
4846
return [];
4947
}

0 commit comments

Comments
 (0)