From 7f64349ba9b8dcf816f8cabee4dad26bdf366ff7 Mon Sep 17 00:00:00 2001 From: Jolyon Suthers Date: Fri, 2 Jun 2023 21:07:13 +1000 Subject: [PATCH] Fix StoryArc & StoryArcNumber mismatch (#2018) * Ensure StoryArc and StoryArcNumber are max length * Trim StoryArc to remove excess spaces. * Replaced with cleaner approach. * Update with majora2007 recommendations --- API/Services/ReadingListService.cs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/API/Services/ReadingListService.cs b/API/Services/ReadingListService.cs index 24496e927..b987be1a1 100644 --- a/API/Services/ReadingListService.cs +++ b/API/Services/ReadingListService.cs @@ -513,23 +513,24 @@ public class ReadingListService : IReadingListService var data = new List>(); if (string.IsNullOrEmpty(storyArc)) return data; - var arcs = storyArc.Split(","); - var arcNumbers = storyArcNumbers.Split(","); + var arcs = storyArc.Split(",", StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries); + var arcNumbers = storyArcNumbers.Split(",", StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries); if (arcNumbers.Count(s => !string.IsNullOrEmpty(s)) != arcs.Length) { - _logger.LogWarning("There is a mismatch on StoryArc and StoryArcNumber for {FileName}. Def", filename); + _logger.LogWarning("There is a mismatch on StoryArc and StoryArcNumber for {FileName}", filename); } - var maxPairs = Math.Min(arcs.Length, arcNumbers.Length); + var maxPairs = Math.Max(arcs.Length, arcNumbers.Length); for (var i = 0; i < maxPairs; i++) { - // When there is a mismatch on arcs and arc numbers, then we should default to a high number - if (string.IsNullOrEmpty(arcNumbers[i]) && !string.IsNullOrEmpty(arcs[i])) + var arcNumber = int.MaxValue.ToString(); + if (arcNumbers.Length > i) { - arcNumbers[i] = int.MaxValue.ToString(); + arcNumber = arcNumbers[i]; } - if (string.IsNullOrEmpty(arcs[i]) || !int.TryParse(arcNumbers[i], out _)) continue; - data.Add(new Tuple(arcs[i], arcNumbers[i])); + + if (string.IsNullOrEmpty(arcs[i]) || !int.TryParse(arcNumber, out _)) continue; + data.Add(new Tuple(arcs[i], arcNumber)); } return data;