Implement portrait prompt API and UI enhancements. Added a new endpoint to fetch portrait prompts, updated the client to handle prompt display, and improved localization for prompt-related text. Enhanced styling for prompt elements in the UI.
This commit is contained in:
@@ -270,6 +270,41 @@ internal static class SchoolEndpoints
|
||||
})
|
||||
.WithName("GetSchoolPersonPortrait");
|
||||
|
||||
schools.MapGet("/{id:int}/people/{personId}/portrait/prompt", async (
|
||||
int id,
|
||||
string personId,
|
||||
string? kind,
|
||||
string? promptExtra,
|
||||
PortraitService portraits,
|
||||
CancellationToken cancellationToken) =>
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(personId) || personId.Length > 64)
|
||||
{
|
||||
return Problem(StatusCodes.Status400BadRequest, "invalid-query", "The person id is not valid.");
|
||||
}
|
||||
|
||||
if (!PortraitKindParser.TryParse(kind, out var portraitKind))
|
||||
{
|
||||
return Problem(StatusCodes.Status400BadRequest, "invalid-query", "kind must be avatar, custom, or full.");
|
||||
}
|
||||
|
||||
var result = await portraits.BuildPromptAsync(id, personId, portraitKind, promptExtra, cancellationToken);
|
||||
return result.Outcome switch
|
||||
{
|
||||
PortraitPromptBuildOutcome.Succeeded => Results.Ok(new PortraitPromptResponse(
|
||||
PortraitKindParser.ToApiValue(result.Kind),
|
||||
result.Positive,
|
||||
result.Negative,
|
||||
result.PromptExtra)),
|
||||
PortraitPromptBuildOutcome.InvalidPrompt =>
|
||||
Problem(StatusCodes.Status400BadRequest, "invalid-body", "Custom portraits need a non-empty promptExtra up to 2000 characters."),
|
||||
PortraitPromptBuildOutcome.UnknownPerson =>
|
||||
Problem(StatusCodes.Status404NotFound, "unknown-person", "That person is not in the school."),
|
||||
_ => Problem(StatusCodes.Status404NotFound, "unknown-school", "That school does not exist."),
|
||||
};
|
||||
})
|
||||
.WithName("GetSchoolPersonPortraitPrompt");
|
||||
|
||||
schools.MapPost("/{id:int}/people/{personId}/portrait", async (
|
||||
int id,
|
||||
string personId,
|
||||
|
||||
Reference in New Issue
Block a user