d2-checklist
d2-checklist copied to clipboard
Sync Locks is broken
I assume this is something to do with the Bungie API, but reloading the page makes things work, so I suspect it's something that can be fixed on the client side.
Anyhow, using the Shard Mode and Upgrade Mode has been difficult as of lately because the locks don't seem to unlock at all until after I reload d2-checklist in the browser. Then it works fine. Prior to reload, I'll click Sync Locks and it will tell me there is nothing to unlock, despite me looking at items that are locked and need to be unlocked. I reload d2-checklist in the browser, and it takes some time to load, but once it does, clicking "sync locks" operates as expected.
Also, and this might be another issue, it doesn't seem to want to unlock items in the vault, just in the inventory of the character. This results in these issues coming up more often, especially at the end of the season when I'm taking items I've tagged as upgrade and marked them for deletion.
So there's a long standing bug in the game where if two copies of the same item share the same bucket and one of them is locked, then both will become locked. I like to think of it as a locked item "infecting" its sibling. DIM has apparently cleverly solved this by anticipating when the bug will happen and proactively fixing it, but I'm not as smart as them =)
This, combined with stale API profile data (which often lags 30 seconds behind real things), can make locks wonky and also make sync locks appear to behave wrong (b/c the item may have become locked during a move to the vault that isn't reflected in the API yet)
I don't think it's that bug. Like I said, it works once I reload the whole page. I've waited several minutes in testing to see what the issue could be, and will get stale data from the API, but when I reload the page I will get accurate data, even if I do it immediately after making a change, so something is changing on the client side when I do a full reload of the page that is affecting how accurate the data is that is coming back from the API.