You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.1 KiB
45 lines
1.1 KiB
1 year ago
|
using System.Diagnostics;
|
||
|
using System.Text.Json;
|
||
|
using StabilityMatrix.Core.Models.Api;
|
||
|
using StabilityMatrix.Core.Services;
|
||
|
|
||
|
namespace StabilityMatrix.Core.Models;
|
||
|
|
||
|
public class CivitPostDownloadContextAction : IContextAction
|
||
|
{
|
||
|
/// <inheritdoc />
|
||
|
public object? Context { get; set; }
|
||
|
|
||
|
public static CivitPostDownloadContextAction FromCivitFile(CivitFile file)
|
||
|
{
|
||
|
return new CivitPostDownloadContextAction
|
||
|
{
|
||
|
Context = file.Hashes.BLAKE3
|
||
|
};
|
||
|
}
|
||
|
|
||
|
public void Invoke(ISettingsManager settingsManager)
|
||
|
{
|
||
|
var result = Context as string;
|
||
|
|
||
|
if (Context is JsonElement jsonElement)
|
||
|
{
|
||
|
result = jsonElement.GetString();
|
||
|
}
|
||
|
|
||
|
if (result is null)
|
||
|
{
|
||
|
Debug.WriteLine($"Context {Context} is not a string.");
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
Debug.WriteLine($"Adding {result} to installed models.");
|
||
|
settingsManager.Transaction(
|
||
|
s =>
|
||
|
{
|
||
|
s.InstalledModelHashes ??= new HashSet<string>();
|
||
|
s.InstalledModelHashes.Add(result);
|
||
|
});
|
||
|
}
|
||
|
}
|