From 7cc17710cdc423468e54e431f04e111a87b7df49 Mon Sep 17 00:00:00 2001 From: Rutherther Date: Wed, 15 Feb 2023 20:44:35 +0100 Subject: [PATCH] feat(client): accept optional PetManagerList in MateWalkCommand handler and return an error in case it's not present --- .../Walk/MateWalkCommandHandler.cs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/Core/NosSmooth.LocalClient/CommandHandlers/Walk/MateWalkCommandHandler.cs b/src/Core/NosSmooth.LocalClient/CommandHandlers/Walk/MateWalkCommandHandler.cs index 09b991b..adc6eef 100644 --- a/src/Core/NosSmooth.LocalClient/CommandHandlers/Walk/MateWalkCommandHandler.cs +++ b/src/Core/NosSmooth.LocalClient/CommandHandlers/Walk/MateWalkCommandHandler.cs @@ -10,6 +10,7 @@ using NosSmooth.Core.Commands; using NosSmooth.Core.Commands.Control; using NosSmooth.Core.Commands.Walking; using NosSmooth.LocalBinding; +using NosSmooth.LocalBinding.Errors; using NosSmooth.LocalBinding.Hooks; using NosSmooth.LocalBinding.Objects; using NosSmooth.LocalBinding.Structs; @@ -28,7 +29,7 @@ public class MateWalkCommandHandler : ICommandHandler public const string PetWalkControlGroup = "PetWalk"; private readonly IPetWalkHook _petWalkHook; - private readonly PetManagerList _petManagerList; + private readonly Optional _petManagerList; private readonly NosThreadSynchronizer _threadSynchronizer; private readonly UserActionDetector _userActionDetector; private readonly INostaleClient _nostaleClient; @@ -46,7 +47,7 @@ public class MateWalkCommandHandler : ICommandHandler public MateWalkCommandHandler ( IPetWalkHook petWalkHook, - PetManagerList petManagerList, + Optional petManagerList, NosThreadSynchronizer threadSynchronizer, UserActionDetector userActionDetector, INostaleClient nostaleClient, @@ -64,7 +65,16 @@ public class MateWalkCommandHandler : ICommandHandler /// public async Task HandleCommand(MateWalkCommand command, CancellationToken ct = default) { - PetManager? selectedPet = _petManagerList.FirstOrDefault(x => x.Pet.Id == command.MateId); + if (!_petManagerList.TryGet(out var petManagerList)) + { + return Result.FromError + ( + new NeededModulesNotInitializedError + ("The mate walk command cannot be executed as PetManagerList is not present.", "PetManagerList") + ); + } + + PetManager? selectedPet = petManagerList.FirstOrDefault(x => x.Pet.Id == command.MateId); if (selectedPet is null) { return new NotFoundError($"Mate with id {command.MateId} was not found in the pet manager list."); -- 2.48.1