Pushibus mit ImageMaster3000

This commit is contained in:
Simon Lübeß
2023-08-03 23:24:10 +02:00
parent e9b9275999
commit ff68594f03
4 changed files with 99 additions and 20 deletions

View File

@ -8,6 +8,8 @@
@inject TooltipService TooltipService
@inject DialogService DialogService
@inject IJSRuntime JSRuntime;
<PageTitle>AiArt</PageTitle>
<h1>Wunschbilder von KI nur für dich</h1>
@ -28,6 +30,7 @@
<RadzenText TextStyle="TextStyle.H2">Nenne uns deinen Wunsch:</RadzenText>
<RadzenTextBox @bind-Value=@request Placeholder="Dein Wunsch"/>
<RadzenPanel AllowCollapse="true" Style="width: 500px;" Text="Mehr Optionen">
<ChildContent>
<RadzenCard class="rz-mt-4">
@ -45,16 +48,35 @@
</ChildContent>
</RadzenPanel>
<RadzenButton Disabled=@_progressVisible Click=@DoStuff>Generate</RadzenButton>
<RadzenButton Visible=@_buttonVisible Click=@DoStuff>Generate</RadzenButton>
<RadzenPanel AllowCollapse="true" Style="width: 500px;" Text="Zeige Prompt">
<ChildContent>
<RadzenCard class="rz-mt-4">
<RadzenStack Orientation="Orientation.Horizontal"
MouseEnter="@(args => ShowTemperatureTooltip(args))"
MouseLeave="TooltipService.Close"
AlignItems="AlignItems.Center" Wrap="FlexWrap.Wrap">
<RadzenText>@_imagePrompt</RadzenText>
</RadzenStack>
</RadzenCard>
</ChildContent>
</RadzenPanel>
<RadzenText TextStyle="TextStyle.H4">Die Idee, die gemalt wird:</RadzenText>
<RadzenText>@_imageDescription</RadzenText>
<RadzenProgressBarCircular Visible=@_progressVisible ProgressBarStyle="ProgressBarStyle.Secondary" Value="100" ShowValue="false" Mode="ProgressBarMode.Indeterminate" />
<RadzenText Visible=@_progressVisible TextStyle="TextStyle.H6" Text=@BusyMessage></RadzenText>
<RadzenImage Path=@_imageUrl></RadzenImage>
</RadzenStack>
@code {
private bool _progressVisible = false;
private bool _buttonVisible = true;
public string BusyMessage { get; set; } = "Initial Message";
@ -108,6 +130,8 @@
private string _basePrompt;
private string _imageUrl;
//protected override async Task OnInitializedAsync()
//{
// _basePrompt = await File.ReadAllTextAsync($"{Directory.GetCurrentDirectory()}{@"\wwwroot\prompt.txt"}");
@ -146,19 +170,24 @@
BusyMessage = newMessage;
await InvokeAsync(StateHasChanged);
}
public async Task GenerateImage()
{
//await JSRuntime.InvokeVoidAsync("DoSexyStuffBridge", _imagePrompt);
_imageUrl = await JSRuntime.InvokeAsync<string>("DoSexyStuffBridge", _imagePrompt);
}
private async Task DoStuff()
{
// Der Dialog blokiert so lange, wie der er offen ist, deshalb dürfen wir hier nicht warten, da wir sonst nie mit der Arbeit anfangen...
//Task busyDialog = ShowBusyDialog();
_progressVisible = true;
_buttonVisible = false;
await UpdateBusyMessage("Kirstens Assistent zerbricht sich über deine Idee den Kopf...");
_basePrompt = await File.ReadAllTextAsync($"{Directory.GetCurrentDirectory()}{@"\wwwroot\prompt.txt"}");
//await Task.Delay(1000);
OpenAIAPI api = new OpenAIAPI("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");
ChatRequest chatRequest = new ChatRequest
@ -185,29 +214,22 @@
_imageDescription = response.Substring(lineBreak);
await UpdateBusyMessage("Kirstens Assistent hat eine Idee! Er wird sie nun malen...");
Task makeImagesTask = GenerateImage();
// TODO: Hier bilder generieren
//Task makeImagesTask = Task.Delay(10000);
CancellationTokenSource cancelFunnyMessages = new CancellationTokenSource();
Task funnyMessagesTask = FunnyMessageSwitcher_ImageGen(cancelFunnyMessages.Token);
//CancellationTokenSource cancelFunnyMessages = new CancellationTokenSource();
//Task funnyMessagesTask = FunnyMessageSwitcher_ImageGen(cancelFunnyMessages.Token);
// Wichtig, erst Bilder awaiten, dann die lustingen Sprüche, sonst warten wir ewig...
//await makeImagesTask;
await makeImagesTask;
cancelFunnyMessages.Cancel();
//cancelFunnyMessages.Cancel();
await funnyMessagesTask;
//DialogService.Close();//
// Wir warten auf den Task des Dialogs nach dem Schließen, weil das funktioniert.
//await busyDialog;
//await funnyMessagesTask;
_progressVisible = false;
_buttonVisible = true;
await InvokeAsync(StateHasChanged);
}
}