Add page: offer the game's fixes right after a Fetch - #39
Conversation
Brings the branch proposed upstream (madoiscool#39) into the fork's main. The code was already identical: main carried the same work as three commits and the branch as two, and the translations were cherry-picked over earlier, so this merge only records the relationship between the two. The single conflict was the README intro. Kept the fork's wording ("This fork adds an Achievements page"), which is accurate here and would be wrong upstream - that is exactly why the PR branch phrases it as a plain feature.
|
@cheapmanga did you deadass take my contribution and open a pull request under your name ? what a shame lol |
|
you should debundle the feature that you took from noticyyy and only add the "add fixes to fetch" as its own pr. also a slightly more ideal version of this fixes button would adding the actual fix button to the games page inside the manage tab (given that the manifest needs to apply before the install, and the fix after) |
Fetching a game showed its manifest sources and stopped there, even when the game had published fixes a page away. A Fetch now also looks the game up in the fix listing and, when there is one, the page shows a banner naming what is waiting - "This game has 2 fix(es) available: SteamTools Achievements Fix, voices38 (crack)" - with a button that opens the Fixes page on that game. The kinds are named on purpose. The listing endpoint is called /api/denuvo/listings, but of the 1759 games it returns, 1621 are tagged "Online Fix" and no tag named "Denuvo" exists at all, so calling them Denuvo fixes would be wrong nearly every time. The tags come from the same field the Fixes page already renders as pills; a game whose fixes carry no tag falls back to a plain sentence. - FixLookupService loads the listing once per session and keeps an appid -> summary map, so the check costs nothing after the first lookup. A failed load isn't cached and shows no banner: it is never an error. - The lookup runs alongside the source check, not before it. Whether a fix exists has no bearing on fetching manifests, and the fetch shouldn't wait. - A result that lands after the user moved to another game is dropped, so the banner can't advertise the previous game's fixes. - Games only: a DLC's fetch is about its depots, and a fix belongs to the base game. - Both wordings are translated in all 29 languages.
824a67a to
2e784ba
Compare
|
@not1cyyy Your PR came first and that is what matters here, so I have dropped the achievements part from this one — it now only contains the Add-page fix banner, rebased on 1.3.0. Sorry again for the collision; I should have gone through the open PRs before opening mine, and I didn't. For the record, since I would rather say it plainly than leave it hanging: I wrote mine from gibbed's SAM sources, not from yours, and the two ended up looking alike because SAM's interop is what you vendor and the 32-bit DLL forces a separate worker on everybody. But you were first, your PR stands, and I am not going to argue over who reinvented which wheel. @Kirkland-Pickles Thanks — that is exactly what I did. And your other point is a better idea than what I built: the fix button belongs on the game's page in the Manage tab, since the manifest goes on before the install and the fix after. Happy to move it there if the maintainer wants it that way; say the word and I will. |
|
To be clear, since my fork's build might suggest otherwise: I removed the achievements tab from this PR, not from my fork — I still use it locally, and anyone downloading my build will see it there. What I'm proposing here is only the Add-page banner. |
After a Fetch on the Add page, when the game has published fixes, a banner names them and takes you there:
The button opens the Fixes page with that game already unfolded — the same route
luatools://fix/takes.Why it names the kind. The endpoint is
/api/denuvo/listings, but of the 1759 games it returns, 1621 are tagged "Online Fix" and no tag named "Denuvo" exists at all. Calling them Denuvo fixes would be wrong nearly every time, so the banner uses the tags the Fixes page already shows as pills. No tags on a game's fixes → plain sentence, no kinds.Three behaviours worth knowing:
FixLookupServicefetches the listing once per session and keeps an appid → summary map, so the check is free after the first lookup.Both strings are translated in all 29 languages;
scripts/check-i18n.pypasses. Rebased onmainat 1.3.0:dotnet build -c Releaseis 0 warnings, 0 errors.This PR previously also carried an Achievements page. That part is dropped — #37 was there first — so what is left is only the Add-page banner. The branch keeps its old name; its contents are just this.