54 Commits

Author SHA1 Message Date
Georges-Antoine Assi
7a5185fe22 complete rest of handler 2025-09-20 19:38:26 -04:00
Georges-Antoine Assi
8c33a95637 remove hartbeat from bh endpoint 2025-09-20 17:57:38 -04:00
Georges-Antoine Assi
3c4113f8a8 Merge branch 'master' into flashpoint-metadata-handler 2025-09-11 21:27:48 -04:00
Georges-Antoine Assi
d7e85ba633 [ROMM-1333] Use metadata tag in filename to match game 2025-09-07 14:12:30 -04:00
Georges-Antoine Assi
d1ecff395b [ROMM-2344] Ignore RA manuals on scan 2025-09-04 23:11:04 -04:00
Michael Manganiello
e4e3928d1b misc: Apply import sorting 2025-09-04 11:17:00 -03:00
Michael Manganiello
d216bad78b misc: Add MetadataHandler's is_enabled method
Convert `MetadataHandler` to an abstract base class and add an
`is_enabled` class method that allows every metadata handler to
independently report whether it is enabled based on its configuration.

This avoids the need for global variables in the config module, allowing
us to change the enabled state of a metadata handler at runtime if
needed.
2025-09-03 22:13:28 -03:00
Georges-Antoine Assi
ef2546ec08 fix base handler filename 2025-08-27 12:40:16 -04:00
Michael Manganiello
9cede7680f feat: Add incremental sync for RetroAchievements progression
This change makes the RetroAchievements progression sync endpoint to
optionally perform an incremental sync (when `incremental` is true),
by only fetching new achievements since the last sync.

This reduces the amount of data fetched and speeds up the sync
process for users who frequently sync their progression. It unblocks the
implementation of automatic periodic syncs in the future.

Frontend behavior:
- When the `Apply` button is clicked in the RetroAchievements settings,
  a full sync is performed (same as before). This is because a change to
  the RA username may have occurred.
- When the `Sync` button is clicked, an incremental sync is performed.
2025-08-27 10:41:51 -03:00
Michael Manganiello
f13d2198db fix: Make RetroAchievements hash matching case-insensitive
Fixes #2182.
2025-08-09 12:48:28 -03:00
Georges-Antoine Assi
1955da78f2 finish all the handlers 2025-07-24 17:05:39 -04:00
Georges-Antoine Assi
8a76528815 finish translating keys 2025-07-24 16:09:49 -04:00
Georges-Antoine Assi
b431aa4d7e manual fixes 2025-07-24 15:43:03 -04:00
Georges-Antoine Assi
39e6fd3579 use ups keys for all lists 2025-07-24 15:30:03 -04:00
Georges-Antoine Assi
973f42cd0b update watasra supervision 2025-07-23 22:20:18 -04:00
Georges-Antoine Assi
595c52bcab Unify singular slugs 2025-07-23 21:52:52 -04:00
Georges-Antoine Assi
51652d5084 make all path stuff async 2025-07-18 10:53:55 -04:00
Georges-Antoine Assi
4838bec0a6 fix rahasher days 2025-07-17 21:55:46 -04:00
Georges-Antoine Assi
0df4eb1985 fix some aggressive usage 2025-07-17 21:20:02 -04:00
Georges-Antoine Assi
0d95735351 finish updating endpoints 2025-07-17 14:44:13 -04:00
Georges-Antoine Assi
d351ad11b0 fix rahandler metadata generation 2025-07-15 16:06:44 -04:00
Georges-Antoine Assi
8049e47d82 change from code review 2025-07-14 11:22:56 -04:00
Georges-Antoine Assi
0224b0a124 fix url of cover art 2025-07-14 10:51:38 -04:00
Georges-Antoine Assi
5d6ae2c842 stop overwriting IDs on scan 2025-07-14 10:31:19 -04:00
Michael Manganiello
8647057e54 misc: Remove _request method from RAHandler
This logic was moved to the RetroAchievements service in #1951.
2025-06-20 12:41:29 -03:00
zurdi
e12114e9ef fix: update badge path handling and improve user progression refresh logic 2025-06-18 10:25:51 +00:00
Georges-Antoine Assi
da74354eed fix ra platform id 2025-06-17 18:50:25 -04:00
Georges-Antoine Assi
d39614e87a Merge pull request #1990 from rommapp/hasheous-matching
Hasheous matching
2025-06-17 16:24:58 -04:00
zurdi
b1aa232ed6 fix: RA metadata file from new platform 2025-06-17 09:40:20 +00:00
Georges-Antoine Assi
66cf16d386 use hasheous as a populator to igdb and ra 2025-06-16 22:29:30 -04:00
Georges-Antoine Assi
f91109da37 pass in ra_hash fully 2025-06-14 22:25:16 -04:00
Georges-Antoine Assi
90a059a600 fix allt he shit 2025-06-13 21:30:13 -04:00
Georges-Antoine Assi
15896566ca progress on reveritng parts 2025-06-13 19:46:07 -04:00
Georges-Antoine Assi
5b80e0ca39 Calculate hashes before fetching metadata 2025-06-12 20:55:49 -04:00
Georges-Antoine Assi
5e6229a59d Fix RA platform IDs for matching 2025-06-11 08:51:47 -04:00
Michael Manganiello
bdc5fa5c41 feat: Display achievements earned in hardcore mode
Differentiate between achievements earned in softcore and hardcore
modes, by using the characteristic gold color for hardcore ones.

Also, update the progress bar to show both softcore and hardcore
completion percentages.
2025-06-10 22:19:41 -03:00
Michael Manganiello
a44db9767a fix: Iterate through user completion progress in RetroAchievements
Iterate through all pages of user completion progress in the
RetroAchievements service, instead of limiting the data retrieval to the
first 500 results.
2025-06-09 19:19:39 -03:00
Michael Manganiello
e885586edb misc: Create RetroAchievements service adapter
Add a new service adapter for the RetroAchievements API, to separate
concerns with RomM's handler for metadata. This adapter is agnostic
to the handler and only provides methods to interact with the
API, and correctly return typed responses.

The API authorization was also improved to be handled by a specific
`httpx.Auth` class that sets the `y` parameter for each request.
2025-06-09 00:47:05 -03:00
Michael Manganiello
3f8baed220 misc: Add typing to RetroAchievements API responses
Include detailed type information for RetroAchievements API responses,
based on the official API documentation.
2025-06-07 17:56:29 -03:00
zurdi
5f1d39c8f8 refactor: remove RETROACHIEVEMENTS_USERNAME from docker env variables 2025-05-13 09:31:06 +00:00
zurdi
14dbafff79 refactor: Update RAUserGameProgression to use structured EarnedAchievement type 2025-04-23 23:40:36 +00:00
zurdi
53d2cfedb9 refactor: Update RAUserGameProgression to use earned achievements structure 2025-04-23 22:40:17 +00:00
zurdi
e17f6b44de feat: Add RetroAchievements integration and user profile syncing
- Implemented RA hash handling in ROM processing.
- Added functionality to refresh RetroAchievements data for users.
- Updated user model to store RA progression data.
- Created a new component for managing RetroAchievements settings in user profiles.
- Enhanced ROM metadata to include merged RA achievements and badge paths.
- Refactored API calls to accommodate new RA features and removed unused API key handling.
- Updated frontend components to reflect changes in RA metadata and user settings.
- Adjusted Docker configuration for database service naming.
2025-04-22 21:08:10 +00:00
zurdi
15d630ef54 fix: ra cache files path 2025-04-15 16:12:46 +00:00
zurdi
574e16cadd feat: fetch all achievements for a game 2025-04-14 16:29:03 +00:00
zurdi
716dd023c0 added ra_id for platforms and roms 2025-04-11 13:12:38 +00:00
Georges-Antoine Assi
8177a0c8ae merge user and settings endpoints 2024-12-14 22:11:42 -05:00
SaraVieira
9b298d46eb use env & reuse request 2024-09-10 21:00:20 +01:00
SaraVieira
2d39949aa0 show info on frontend 2024-09-08 16:35:30 +01:00
SaraVieira
6479536d0c get user info from the frontend 2024-09-07 21:04:54 +01:00