using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using MPF.Core.Data;
using MPF.Core.UI.ComboBoxItems;
using SabreTools.RedumpLib.Web;
namespace MPF.Core.UI.ViewModels
{
public class OptionsViewModel
{
#region Fields
///
/// Current set of options
///
public Options Options { get; }
///
/// Flag for if settings were saved or not
///
public bool SavedSettings { get; set; }
#endregion
#region Lists
///
/// List of available internal programs
///
public List> InternalPrograms => PopulateInternalPrograms();
///
/// Current list of supported system profiles
///
public List Systems => RedumpSystemComboBoxItem.GenerateElements().ToList();
#endregion
///
/// Constructor
///
public OptionsViewModel(Options baseOptions)
{
Options = new Options(baseOptions);
}
#region Population
///
/// Get a complete list of supported internal programs
///
private static List> PopulateInternalPrograms()
{
var internalPrograms = new List { InternalProgram.DiscImageCreator, InternalProgram.Aaru, InternalProgram.Redumper };
return internalPrograms.Select(ip => new Element(ip)).ToList();
}
#endregion
#region UI Commands
///
/// Test Redump login credentials
///
#if NET48
public (bool?, string) TestRedumpLogin(string username, string password)
#else
public async Task<(bool?, string?)> TestRedumpLogin(string username, string password)
#endif
{
#if NET48
return RedumpWebClient.ValidateCredentials(username, password);
#else
return await RedumpHttpClient.ValidateCredentials(username, password);
#endif
}
#endregion
}
}