feat: steam import rework#519
Open
Rast1234 wants to merge 1 commit into
Open
Conversation
Contributor
Author
|
Prebuilt plugin for quick testing SteamLibrary_Builtin_2_40.zip
|
Contributor
Author
|
Ideally, playnite backend can also be improved:
But let's discuss it separately, after the pull request Details about legit and unwanted "tools" in discord after this message |
Owner
|
I didn't forget about this, but it's a lot of changes for me to review right now. So just heads up that it will take some time. Probably even after I do alpha 2 of Playnite 11, which will have current Steam plugin version ported to P11 SDK. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

This started as an attempt to allow importing non-game extras like i did with GOG and Humble. Head-on approach failed, because steam import uses different places (installed files, multiple endpoints), there are a lot of content types that are hard to reason about, and also family sharing. So i decided to take a closer look on actual data from different places and figure out how to cook it all together. End result is rework of UI, settings, types, what APIs are used. Hope it helps keeping steam import sane for any future changes.
Main ideas: call only endpoints that return most info, have types with actual data until final import step, filter them all in one place, enrich all entries with details from playnite backend, provide settings that are close as possible to steam, avoid mixing up some things as steam does.
Steam data from different APIs is inconsistent, i spent a lot of time making it make sense in code. If it's not clear why something is the way it is, ask me. There are some comments and TODOs in the code where things are really not obvious or where discussion is needed. Localization strings are TODO after everything else is figured out.
Start with
SteamLibrarySettingsView.xaml, i guess. Most important code is inSteamServiceAggregator. Then check out API clients and models.Oh and code from master didn't compile for me after clean checkout, i had to fix some dll references. Did not include these changes here.