2025-05-04 12:59:30 +00:00
using AIStudio.Tools.PluginSystem ;
2024-12-03 20:02:37 +00:00
namespace AIStudio.Settings.DataModel ;
2025-02-15 14:41:12 +00:00
public static class PreviewFeaturesExtensions
2024-12-03 20:02:37 +00:00
{
2025-05-04 12:59:30 +00:00
private static string TB ( string fallbackEN ) = > I18N . I . T ( fallbackEN , typeof ( PreviewFeaturesExtensions ) . Namespace , nameof ( PreviewFeaturesExtensions ) ) ;
2024-12-03 20:02:37 +00:00
public static string GetPreviewDescription ( this PreviewFeatures feature ) = > feature switch
{
2025-05-04 12:59:30 +00:00
PreviewFeatures . PRE_WRITER_MODE_2024 = > TB ( "Writer Mode: Experiments about how to write long texts using AI" ) ,
PreviewFeatures . PRE_RAG_2024 = > TB ( "RAG: Preview of our RAG implementation where you can refer your files or integrate enterprise data within your company" ) ,
2025-05-02 21:09:50 +00:00
2025-05-04 12:59:30 +00:00
PreviewFeatures . PRE_PLUGINS_2025 = > TB ( "Plugins: Preview of our plugin system where you can extend the functionality of the app" ) ,
PreviewFeatures . PRE_READ_PDF_2025 = > TB ( "Read PDF: Preview of our PDF reading system where you can read and extract text from PDF files" ) ,
2024-12-03 20:02:37 +00:00
2025-05-04 12:59:30 +00:00
_ = > TB ( "Unknown preview feature" )
2024-12-03 20:02:37 +00:00
} ;
2025-05-18 11:50:53 +00:00
/// <summary>
/// Check if the preview feature is released or not.
/// </summary>
/// <remarks>
/// This metadata is necessary because we cannot remove the enum values from the list.
/// Otherwise, we could not deserialize old settings files that may contain these values.
/// </remarks>
/// <param name="feature">The preview feature to check.</param>
/// <returns>True when the preview feature is released, false otherwise.</returns>
public static bool IsReleased ( this PreviewFeatures feature ) = > feature switch
{
PreviewFeatures . PRE_READ_PDF_2025 = > true ,
_ = > false
} ;
public static bool IsEnabled ( this PreviewFeatures feature , SettingsManager settingsManager )
{
if ( feature . IsReleased ( ) )
return true ;
return settingsManager . ConfigurationData . App . EnabledPreviewFeatures . Contains ( feature ) ;
}
2024-12-03 20:02:37 +00:00
}