overleaf/services/web/frontend/js/features/history/utils/file-diff.ts

31 lines
834 B
TypeScript
Raw Normal View History

import type {
FileDiff,
FileRemoved,
FileRenamed,
FileWithEditable,
} from '../services/types/file'
export function isFileRenamed(fileDiff: FileDiff): fileDiff is FileRenamed {
return (fileDiff as FileRenamed).operation === 'renamed'
}
export function isFileRemoved(fileDiff: FileDiff): fileDiff is FileRemoved {
return (fileDiff as FileRemoved).operation === 'removed'
}
function isFileWithEditable(fileDiff: FileDiff): fileDiff is FileWithEditable {
return 'editable' in (fileDiff as FileWithEditable)
}
export function isFileEditable(fileDiff: FileDiff) {
return isFileWithEditable(fileDiff)
? fileDiff.editable
: fileDiff.operation === 'edited'
}
export function fileFinalPathname(fileDiff: FileDiff) {
return (
(isFileRenamed(fileDiff) ? fileDiff.newPathname : null) || fileDiff.pathname
)
}