From fb6c935e7e88403aa9f6e14d1384ce88cbbfbe5d Mon Sep 17 00:00:00 2001 From: Robert Paciorek Date: Sun, 27 Jul 2025 10:34:28 +0000 Subject: [PATCH] fix upcoming missions in GetUserMissionState * this is bugfix for upcoming missions issue in SoD 2.9 after 60cc00d * also removed TODO because ProductGroupID is not related to mission.GroupID and ProductGroupID filtering is covered by gameVersion --- src/Controllers/Common/ContentController.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Controllers/Common/ContentController.cs b/src/Controllers/Common/ContentController.cs index 6c72812..1c2e6eb 100644 --- a/src/Controllers/Common/ContentController.cs +++ b/src/Controllers/Common/ContentController.cs @@ -1109,14 +1109,17 @@ public class ContentController : Controller { foreach (var m in filterV2.MissionPair) if (m.MissionID != null) result.Missions.Add(missionService.GetMissionWithProgress((int)m.MissionID, viking.Id, gameVersion)); - // TODO: probably should also check for mission based on filterV2.ProductGroupID vs mission.GroupID } else { if (filterV2.GetCompletedMission ?? false) { foreach (var mission in viking.MissionStates.Where(x => x.MissionStatus == MissionStatus.Completed)) result.Missions.Add(missionService.GetMissionWithProgress(mission.MissionId, viking.Id, gameVersion)); } else { - foreach (var mission in viking.MissionStates.Where(x => x.MissionStatus != MissionStatus.Completed)) - result.Missions.Add(missionService.GetMissionWithProgress(mission.MissionId, viking.Id, gameVersion)); + var missionStatesById = viking.MissionStates.Where(x => x.MissionStatus != MissionStatus.Completed).ToDictionary(ms => ms.MissionId); + HashSet upcomingMissionIds = new(missionStore.GetUpcomingMissions(gameVersion)); + var combinedMissionIds = new HashSet(missionStatesById.Keys); + combinedMissionIds.UnionWith(upcomingMissionIds); + foreach (var missionId in combinedMissionIds) + result.Missions.Add(missionService.GetMissionWithProgress(missionId, viking.Id, gameVersion)); } }