summaryrefslogtreecommitdiff
path: root/src/SMAPI.Web/Controllers/JsonValidatorController.cs
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2020-06-20 11:36:22 -0400
committerJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2020-06-20 11:36:22 -0400
commited3309e7bb8d5f3f6c3d08df3475bd811d5b16d0 (patch)
treed9053f37494199c9218322cea1f7c8ead72014d6 /src/SMAPI.Web/Controllers/JsonValidatorController.cs
parentd02a40de997edf493354e85eb018ded84eb8f782 (diff)
downloadSMAPI-ed3309e7bb8d5f3f6c3d08df3475bd811d5b16d0.tar.gz
SMAPI-ed3309e7bb8d5f3f6c3d08df3475bd811d5b16d0.tar.bz2
SMAPI-ed3309e7bb8d5f3f6c3d08df3475bd811d5b16d0.zip
remember selected schema when editing a file
Diffstat (limited to 'src/SMAPI.Web/Controllers/JsonValidatorController.cs')
-rw-r--r--src/SMAPI.Web/Controllers/JsonValidatorController.cs25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/SMAPI.Web/Controllers/JsonValidatorController.cs b/src/SMAPI.Web/Controllers/JsonValidatorController.cs
index b76d41a3..5f83eafd 100644
--- a/src/SMAPI.Web/Controllers/JsonValidatorController.cs
+++ b/src/SMAPI.Web/Controllers/JsonValidatorController.cs
@@ -58,16 +58,22 @@ namespace StardewModdingAPI.Web.Controllers
/// <summary>Render the schema validator UI.</summary>
/// <param name="schemaName">The schema name with which to validate the JSON, or 'edit' to return to the edit screen.</param>
/// <param name="id">The stored file ID.</param>
+ /// <param name="operation">The operation to perform for the selected log ID. This can be 'edit', or any other value to view.</param>
[HttpGet]
[Route("json")]
[Route("json/{schemaName}")]
[Route("json/{schemaName}/{id}")]
- public async Task<ViewResult> Index(string schemaName = null, string id = null)
+ [Route("json/{schemaName}/{id}/{operation}")]
+ public async Task<ViewResult> Index(string schemaName = null, string id = null, string operation = null)
{
+ // parse arguments
schemaName = this.NormalizeSchemaName(schemaName);
+ bool hasId = !string.IsNullOrWhiteSpace(id);
+ bool isEditView = !hasId || operation?.Trim().ToLower() == "edit";
- var result = new JsonValidatorModel(id, schemaName, this.SchemaFormats);
- if (string.IsNullOrWhiteSpace(id))
+ // build result model
+ var result = this.GetModel(id, schemaName, isEditView);
+ if (!hasId)
return this.View("Index", result);
// fetch raw JSON
@@ -77,7 +83,7 @@ namespace StardewModdingAPI.Web.Controllers
result.SetContent(file.Content, expiry: file.Expiry, uploadWarning: file.Warning);
// skip parsing if we're going to the edit screen
- if (schemaName?.ToLower() == "edit")
+ if (isEditView)
return this.View("Index", result);
// parse JSON
@@ -131,7 +137,7 @@ namespace StardewModdingAPI.Web.Controllers
public async Task<ActionResult> PostAsync(JsonValidatorRequestModel request)
{
if (request == null)
- return this.View("Index", this.GetModel(null, null).SetUploadError("The request seems to be invalid."));
+ return this.View("Index", this.GetModel(null, null, isEditView: true).SetUploadError("The request seems to be invalid."));
// normalize schema name
string schemaName = this.NormalizeSchemaName(request.SchemaName);
@@ -139,12 +145,12 @@ namespace StardewModdingAPI.Web.Controllers
// get raw text
string input = request.Content;
if (string.IsNullOrWhiteSpace(input))
- return this.View("Index", this.GetModel(null, schemaName).SetUploadError("The JSON file seems to be empty."));
+ return this.View("Index", this.GetModel(null, schemaName, isEditView: true).SetUploadError("The JSON file seems to be empty."));
// upload file
UploadResult result = await this.Storage.SaveAsync(input);
if (!result.Succeeded)
- return this.View("Index", this.GetModel(result.ID, schemaName).SetUploadError(result.UploadError));
+ return this.View("Index", this.GetModel(result.ID, schemaName, isEditView: true).SetContent(input, null).SetUploadError(result.UploadError));
// redirect to view
return this.Redirect(this.Url.PlainAction("Index", "JsonValidator", new { schemaName = schemaName, id = result.ID }));
@@ -157,9 +163,10 @@ namespace StardewModdingAPI.Web.Controllers
/// <summary>Build a JSON validator model.</summary>
/// <param name="pasteID">The stored file ID.</param>
/// <param name="schemaName">The schema name with which the JSON was validated.</param>
- private JsonValidatorModel GetModel(string pasteID, string schemaName)
+ /// <param name="isEditView">Whether to show the edit view.</param>
+ private JsonValidatorModel GetModel(string pasteID, string schemaName, bool isEditView)
{
- return new JsonValidatorModel(pasteID, schemaName, this.SchemaFormats);
+ return new JsonValidatorModel(pasteID, schemaName, this.SchemaFormats, isEditView);
}
/// <summary>Get a normalized schema name, or the <see cref="DefaultSchemaID"/> if blank.</summary>