From f1d162a129da620fdf8d8e88ced8f0d87c36e4ae Mon Sep 17 00:00:00 2001 From: Sam Chau Date: Sun, 2 Feb 2025 01:46:58 +1030 Subject: [PATCH] fix: improve handling of unknown types in change table / row --- .../settings/git/status/ChangeRow.jsx | 27 ++++++++++++++----- .../settings/git/status/ChangeTable.jsx | 26 +++++++++++++----- 2 files changed, 39 insertions(+), 14 deletions(-) diff --git a/frontend/src/components/settings/git/status/ChangeRow.jsx b/frontend/src/components/settings/git/status/ChangeRow.jsx index b8b4299..d703f7c 100644 --- a/frontend/src/components/settings/git/status/ChangeRow.jsx +++ b/frontend/src/components/settings/git/status/ChangeRow.jsx @@ -60,7 +60,6 @@ const ChangeRow = ({ return ; } }; - const handleViewChanges = e => { e.stopPropagation(); setShowChanges(true); @@ -124,32 +123,46 @@ const ChangeRow = ({ <> Local:{' '} - {change.local_name || 'Unnamed'} + {change.local_name || + change.name || + 'Unnamed'} Incoming:{' '} - {change.incoming_name || 'Unnamed'} + {change.incoming_name || + change.name || + 'Unnamed'} ) : ( change.local_name || change.incoming_name || - 'Unnamed' + change.name || + (change.file_path + ? change.file_path.split('/').pop() + : 'Unnamed') ) ) : change.outgoing_name && change.outgoing_name !== change.prior_name ? ( <> Prior:{' '} - {change.prior_name || 'Unnamed'} + {change.prior_name || change.name || 'Unnamed'} Outgoing:{' '} - {change.outgoing_name || 'Unnamed'} + {change.outgoing_name || + change.name || + 'Unnamed'} ) : ( - change.outgoing_name || change.prior_name || 'Unnamed' + change.outgoing_name || + change.prior_name || + change.name || + (change.file_path + ? change.file_path.split('/').pop() + : 'Unnamed') )} diff --git a/frontend/src/components/settings/git/status/ChangeTable.jsx b/frontend/src/components/settings/git/status/ChangeTable.jsx index 52e0c43..eb0fbc9 100644 --- a/frontend/src/components/settings/git/status/ChangeTable.jsx +++ b/frontend/src/components/settings/git/status/ChangeTable.jsx @@ -17,15 +17,27 @@ const ChangeTable = ({ fetchGitStatus }) => { const sortedChanges = changesArray => { - // Filter out items with unknown status/type - const validChanges = changesArray.filter( - change => - change && change.type && change.type.toLowerCase() !== 'unknown' - ); + // Process changes to extract type from path for unknown types + const processedChanges = changesArray.map(change => { + if (!change) return change; - if (isMergeConflict || !sortConfig?.key) return validChanges; + // Only process items with unknown type + if (change.type?.toLowerCase() === 'unknown' && change.file_path) { + // Extract type from file path (assuming format: "type/name") + const pathParts = change.file_path.split('/'); + if (pathParts.length > 1) { + return { + ...change, + type: pathParts[0] + }; + } + } + return change; + }); - return [...validChanges].sort((a, b) => { + if (isMergeConflict || !sortConfig?.key) return processedChanges; + + return [...processedChanges].sort((a, b) => { if (a[sortConfig.key] < b[sortConfig.key]) { return sortConfig.direction === 'ascending' ? -1 : 1; }