2020-10-24 23:57:45 +05:30
|
|
|
import { DIFF_FILE_SYMLINK_MODE, DIFF_FILE_DELETED_MODE } from './constants';
|
|
|
|
|
|
|
|
function fileSymlinkInformation(file, fileList) {
|
|
|
|
const duplicates = fileList.filter(iteratedFile => iteratedFile.file_hash === file.file_hash);
|
|
|
|
const includesSymlink = duplicates.some(iteratedFile => {
|
|
|
|
return [iteratedFile.a_mode, iteratedFile.b_mode].includes(DIFF_FILE_SYMLINK_MODE);
|
|
|
|
});
|
|
|
|
const brokenSymlinkScenario = duplicates.length > 1 && includesSymlink;
|
|
|
|
|
|
|
|
return (
|
|
|
|
brokenSymlinkScenario && {
|
|
|
|
replaced: file.b_mode === DIFF_FILE_DELETED_MODE,
|
|
|
|
wasSymbolic: file.a_mode === DIFF_FILE_SYMLINK_MODE,
|
|
|
|
isSymbolic: file.b_mode === DIFF_FILE_SYMLINK_MODE,
|
|
|
|
wasReal: ![DIFF_FILE_SYMLINK_MODE, DIFF_FILE_DELETED_MODE].includes(file.a_mode),
|
|
|
|
isReal: ![DIFF_FILE_SYMLINK_MODE, DIFF_FILE_DELETED_MODE].includes(file.b_mode),
|
|
|
|
}
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2021-01-03 14:25:43 +05:30
|
|
|
function collapsed(file) {
|
|
|
|
const viewer = file.viewer || {};
|
|
|
|
|
|
|
|
return {
|
|
|
|
automaticallyCollapsed: viewer.automaticallyCollapsed || viewer.collapsed || false,
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
2020-10-24 23:57:45 +05:30
|
|
|
export function prepareRawDiffFile({ file, allFiles }) {
|
|
|
|
Object.assign(file, {
|
|
|
|
brokenSymlink: fileSymlinkInformation(file, allFiles),
|
2021-01-03 14:25:43 +05:30
|
|
|
viewer: {
|
|
|
|
...file.viewer,
|
|
|
|
...collapsed(file),
|
|
|
|
},
|
2020-10-24 23:57:45 +05:30
|
|
|
});
|
|
|
|
|
|
|
|
return file;
|
|
|
|
}
|