Fix History tab crash: coerce Ivanti note fields to strings before rendering
PostgreSQL + Ivanti API enrichment can return non-string values (objects/arrays) for currentStateUserNotes and similar fields. React crashes silently (blank page, no console error) when trying to render non-string values as children. Same root cause pattern as Bug 3 in ivanti-panel-bugs-2026-05-12. Added safeText() wrapper that coerces any non-string truthy value to a JSON string before rendering in the History tab notes section.
This commit is contained in:
@@ -4087,11 +4087,16 @@ function FpEditModal({ open, onClose, submission, queueItems, onSuccess }) {
|
|||||||
<div>
|
<div>
|
||||||
{/* Ivanti reviewer notes (rework/approval/previous state feedback) */}
|
{/* Ivanti reviewer notes (rework/approval/previous state feedback) */}
|
||||||
{(() => {
|
{(() => {
|
||||||
|
const safeText = (val) => {
|
||||||
|
if (!val) return null;
|
||||||
|
if (typeof val === 'string') return val;
|
||||||
|
try { return JSON.stringify(val); } catch { return String(val); }
|
||||||
|
};
|
||||||
const notes = [
|
const notes = [
|
||||||
submission.ivanti_rework_note && { label: 'Rework Note', text: submission.ivanti_rework_note },
|
safeText(submission.ivanti_rework_note) && { label: 'Rework Note', text: safeText(submission.ivanti_rework_note) },
|
||||||
submission.ivanti_approval_note && { label: 'Approval Note', text: submission.ivanti_approval_note },
|
safeText(submission.ivanti_approval_note) && { label: 'Approval Note', text: safeText(submission.ivanti_approval_note) },
|
||||||
submission.ivanti_current_state_notes && { label: 'Current State Notes', text: submission.ivanti_current_state_notes },
|
safeText(submission.ivanti_current_state_notes) && { label: 'Current State Notes', text: safeText(submission.ivanti_current_state_notes) },
|
||||||
submission.ivanti_previous_state_notes && { label: 'Previous State Notes', text: submission.ivanti_previous_state_notes },
|
safeText(submission.ivanti_previous_state_notes) && { label: 'Previous State Notes', text: safeText(submission.ivanti_previous_state_notes) },
|
||||||
].filter(Boolean);
|
].filter(Boolean);
|
||||||
return notes.length > 0 ? notes.map((note, idx) => (
|
return notes.length > 0 ? notes.map((note, idx) => (
|
||||||
<div key={idx} style={{
|
<div key={idx} style={{
|
||||||
|
|||||||
Reference in New Issue
Block a user