using System.ComponentModel;
using System.Runtime.Versioning;

namespace ElectronNET.API.Entities
{
    /// <summary>
    /// Names for app.getPath(name). Aligned with Electron docs.
    /// </summary>
    /// <remarks>Up-to-date with Electron API 39.2</remarks>
    public enum PathName
    {
        /// <summary>
        /// User's home directory.
        /// </summary>
        Home,

        /// <summary>
        /// Per-user application data directory.
        /// </summary>
        AppData,

        /// <summary>
        /// The directory for storing your app's configuration files, which by default is the appData directory appended with your app's name.
        /// </summary>
        UserData,

        /// <summary>
        /// The directory for storing data generated by Session, such as localStorage, cookies, disk cache, downloaded dictionaries, network state, devtools files.
        /// By default this points to userData.
        /// </summary>
        SessionData,

        /// <summary>
        /// Temporary directory.
        /// </summary>
        Temp,

        /// <summary>
        /// The current executable file.
        /// </summary>
        Exe,

        /// <summary>
        /// The location of the Chromium module. By default this is synonymous with exe.
        /// </summary>
        Module,

        /// <summary>
        /// The current user's Desktop directory.
        /// </summary>
        Desktop,

        /// <summary>
        /// Directory for a user's "My Documents".
        /// </summary>
        Documents,

        /// <summary>
        /// Directory for a user's downloads.
        /// </summary>
        Downloads,

        /// <summary>
        /// Directory for a user's music.
        /// </summary>
        Music,

        /// <summary>
        /// Directory for a user's pictures.
        /// </summary>
        Pictures,

        /// <summary>
        /// Directory for a user's videos.
        /// </summary>
        Videos,

        /// <summary>
        /// Directory for the user's recent files. Windows only.
        /// </summary>
        [SupportedOSPlatform("windows")]
        Recent,

        /// <summary>
        /// Directory for your app's log folder.
        /// </summary>
        Logs,

        /// <summary>
        /// Directory where crash dumps are stored.
        /// </summary>
        CrashDumps,

        /// <summary>
        /// The directory where app assets such as resources.pak are stored.
        /// Available on Windows and Linux only.
        /// </summary>
        [SupportedOSPlatform("windows")]
        [SupportedOSPlatform("linux")]
        Assets
    }
}