Editor/git/models/FileChange.cs
namespace Sandbox.git.models;

/// <summary>
/// Encapsulates changes to a file associated with a commit.
/// </summary>
public class FileChange {
	public string Id { get; }
	public string Path { get; }
	public AppFileStatus Status { get; }

	public FileChange(string path, AppFileStatus status) {
		Path = path ?? string.Empty;
		Status = status;

		if ( status is CopiedOrRenamedFileStatus cr )
			Id = $"{status.Kind}+{path}+{cr.OldPath}";
		else
			Id = $"{status.Kind}+{path}";
	}

	public bool IsDeleted() => Status.Kind == AppFileStatusKind.Deleted;
	public bool IsNew() => Status.Kind == AppFileStatusKind.New;
	public bool IsModified() => Status.Kind == AppFileStatusKind.Modified;
	public bool IsUntracked() => Status.Kind == AppFileStatusKind.Untracked;
}