This pull request aims to refactor the InsuranceController class to improve its code quality and maintainability. The changes include restructuring methods, adding detailed comments, and enhancing the overall logic for processing insured items.
Specific changes include:
- Updating the `findItemstoDelete()` method (and the entire class, really) to keep track of which items are tagged using a Set. This *ensures* that an item can only be attempted to be deleted once, as Sets cannot contain duplicates.
- Changing the method in which we remove insurance packages from the profile. We were iterating over them using a `for` in reverse order and then removing them with a splice and the current index. On paper this should work, but funny things were happening... Sometimes. I've created a new method that removes packages from a profile by matching against the package systemData date, time, and location. This should give us a specific insurance package (as we don't have an ID to use). In addition to this we're fetching a new instance of the profile to edit, instead of modifying packages that are being iterated over as they're being iterated over.
-----
I was unable to reproduce the issue where insurance packages were not being removed from the profile, but hopefully these simplified approaches lead to less funny business.
Co-authored-by: Refringe <brownelltyler@gmail.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/148
Co-authored-by: Refringe <refringe@noreply.dev.sp-tarkov.com>
Co-committed-by: Refringe <refringe@noreply.dev.sp-tarkov.com>
Replaced calls (where possible) to JSON.parse/stringify with use of `jsonUtil` functions
`VFS.ts` was tricky, it can't be updated as it'd create a circular dependency
Also add json5 to package.json for modders to have access to
Co-authored-by: Dev <dev@dev.sp-tarkov.com>
Reviewed-on: https://dev.sp-tarkov.com/SPT-AKI/Server/pulls/112
Add new function in dialog helper for getting dialogs frm profile - creates empty object if none found
Set gift collection time to 48 hours if none supplied
Added fail state to colleagues p3
Reworked loop inside `getQuestsFailedByCompletingQuest()` to use .some() instead
Reworked `failQuests()` to check all fail conditions instead of just the first one
Slight weapon variety improvement for PMCs
Only generate backpack loot if bot has backpack - reduces warnings during botgen
Move warning mesage to debug
Add sanitar medkit to pmc blacklist
Pass ur to warning message when endpoint body fails json validation
Pass sessionId into `locationController.generateAll()` to help modders when overriding function
Test - Added grizzly x5 to PMC secure containers to see if they heal more when damaged
Also allow money from sold flea offers to enter sorting table
Remove unused addItem() from InventoryController
Add optional param to inventoryHelper.addItem() to allow use of sorting table, default = off