feat: filter out invalid changes in ChangeTable and useChangeParser

This commit is contained in:
Sam Chau
2025-01-18 17:54:46 +10:30
parent 3cba1472e6
commit fc6c18b591
2 changed files with 32 additions and 14 deletions

View File

@@ -17,8 +17,15 @@ const ChangeTable = ({
fetchGitStatus
}) => {
const sortedChanges = changesArray => {
if (isMergeConflict || !sortConfig?.key) return changesArray;
return [...changesArray].sort((a, b) => {
// Filter out items with unknown status/type
const validChanges = changesArray.filter(
change =>
change && change.type && change.type.toLowerCase() !== 'unknown'
);
if (isMergeConflict || !sortConfig?.key) return validChanges;
return [...validChanges].sort((a, b) => {
if (a[sortConfig.key] < b[sortConfig.key]) {
return sortConfig.direction === 'ascending' ? -1 : 1;
}

View File

@@ -98,19 +98,30 @@ export default function useChangeParser(changes) {
const parsedChanges = useMemo(() => {
if (!Array.isArray(changes)) return [];
return changes.map((item, index) => {
const changeType =
item.change.charAt(0).toUpperCase() +
item.change.slice(1).toLowerCase();
// Filter out entries without a valid change property before mapping
return changes
.filter(
item =>
item &&
typeof item.change === 'string' &&
item.change.length > 0
)
.map((item, index) => {
const changeType =
item.change.charAt(0).toUpperCase() +
item.change.slice(1).toLowerCase();
return {
id: `${item.key}-${index}-${item.change}`,
changeType,
key: formatKey(item.key),
from: parseValue(item.from),
to: parseValue(item.to ?? item.value)
};
});
return {
id: `${item.key}-${index}-${item.change}`,
changeType,
key:
typeof item.key === 'string'
? formatKey(item.key)
: String(item.key || ''),
from: parseValue(item.from),
to: parseValue(item.to ?? item.value)
};
});
}, [changes]);
return parsedChanges;