Files
twenty_crm/packages/twenty-front/src/modules/spreadsheet-import/utils/setSubColumn.ts

40 lines
1.2 KiB
TypeScript

import {
SpreadsheetMatchedSelectColumn,
SpreadsheetMatchedSelectOptionsColumn,
} from '@/spreadsheet-import/types/SpreadsheetColumn';
import { SpreadsheetColumnType } from '@/spreadsheet-import/types/SpreadsheetColumnType';
import { SpreadsheetMatchedOptions } from '@/spreadsheet-import/types/SpreadsheetMatchedOptions';
export const setSubColumn = (
oldColumn:
| SpreadsheetMatchedSelectColumn
| SpreadsheetMatchedSelectOptionsColumn,
entry: string,
value: string,
): SpreadsheetMatchedSelectColumn | SpreadsheetMatchedSelectOptionsColumn => {
const shouldUnselectValue =
oldColumn.matchedOptions.find((option) => option.entry === entry)?.value ===
value;
const options = oldColumn.matchedOptions.map((option) =>
option.entry === entry
? { ...option, value: shouldUnselectValue ? undefined : value }
: option,
);
const allMatched = options.every(({ value }) => !!value);
if (allMatched) {
return {
...oldColumn,
matchedOptions: options as SpreadsheetMatchedOptions[],
type: SpreadsheetColumnType.matchedSelectOptions,
};
} else {
return {
...oldColumn,
matchedOptions: options as SpreadsheetMatchedOptions[],
type: SpreadsheetColumnType.matchedSelect,
};
}
};