file-diff.ts 834 B

123456789101112131415161718192021222324252627282930
  1. import type {
  2. FileDiff,
  3. FileRemoved,
  4. FileRenamed,
  5. FileWithEditable,
  6. } from '../services/types/file'
  7. export function isFileRenamed(fileDiff: FileDiff): fileDiff is FileRenamed {
  8. return (fileDiff as FileRenamed).operation === 'renamed'
  9. }
  10. export function isFileRemoved(fileDiff: FileDiff): fileDiff is FileRemoved {
  11. return (fileDiff as FileRemoved).operation === 'removed'
  12. }
  13. function isFileWithEditable(fileDiff: FileDiff): fileDiff is FileWithEditable {
  14. return 'editable' in (fileDiff as FileWithEditable)
  15. }
  16. export function isFileEditable(fileDiff: FileDiff) {
  17. return isFileWithEditable(fileDiff)
  18. ? fileDiff.editable
  19. : fileDiff.operation === 'edited'
  20. }
  21. export function fileFinalPathname(fileDiff: FileDiff) {
  22. return (
  23. (isFileRenamed(fileDiff) ? fileDiff.newPathname : null) || fileDiff.pathname
  24. )
  25. }