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.
44 lines
1.1 KiB
44 lines
1.1 KiB
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); |
|
}); |
|
} |
|
}
|
|
|