using System.ComponentModel;
using System.Runtime.CompilerServices;

namespace AxCopilot.ViewModels;

public class PromptTemplateRow : INotifyPropertyChanged
{
	private string _name = "";

	private string _content = "";

	private string _icon = "\ue8bd";

	public string Name
	{
		get
		{
			return _name;
		}
		set
		{
			_name = value;
			OnPropertyChanged("Name");
		}
	}

	public string Content
	{
		get
		{
			return _content;
		}
		set
		{
			_content = value;
			OnPropertyChanged("Content");
			OnPropertyChanged("Preview");
		}
	}

	public string Icon
	{
		get
		{
			return _icon;
		}
		set
		{
			_icon = value;
			OnPropertyChanged("Icon");
		}
	}

	public string Preview => (Content.Length > 60) ? (Content.Substring(0, 57).Replace("\n", " ") + "…") : Content.Replace("\n", " ");

	public event PropertyChangedEventHandler? PropertyChanged;

	protected void OnPropertyChanged([CallerMemberName] string? n = null)
	{
		this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(n));
	}
}
