From 77d5b3eb476794a0b3323aba13c9911029e597a1 Mon Sep 17 00:00:00 2001 From: paregi12 Date: Sat, 17 Jan 2026 19:53:17 +0530 Subject: [PATCH] feat(mal): use high-accuracy ARM/Jikan converter for manual scrobbles --- src/components/metadata/SeriesContent.tsx | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/components/metadata/SeriesContent.tsx b/src/components/metadata/SeriesContent.tsx index fc2046edd..ed3230f9b 100644 --- a/src/components/metadata/SeriesContent.tsx +++ b/src/components/metadata/SeriesContent.tsx @@ -585,7 +585,15 @@ const SeriesContentComponent: React.FC = ({ const malEnabled = mmkvStorage.getBoolean('mal_enabled') ?? true; if (malEnabled && metadata?.name) { const totalEpisodes = Object.values(groupedEpisodes).reduce((acc, curr) => acc + (curr?.length || 0), 0); - MalSync.scrobbleEpisode(metadata.name, episode.episode_number, totalEpisodes, 'series', episode.season_number, imdbId); + MalSync.scrobbleEpisode( + metadata.name, + episode.episode_number, + totalEpisodes, + 'series', + episode.season_number, + imdbId, + episode.air_date // Pass release date for ARM Sync converter + ); } // Reload to ensure consistency (e.g. if optimistic update was slightly off or for other effects) @@ -675,8 +683,18 @@ const SeriesContentComponent: React.FC = ({ const malEnabled = mmkvStorage.getBoolean('mal_enabled') ?? true; if (malEnabled && metadata?.name && episodeNumbers.length > 0) { const lastEp = Math.max(...episodeNumbers); + const lastEpisodeData = seasonEpisodes.find(e => e.episode_number === lastEp); const totalEpisodes = Object.values(groupedEpisodes).reduce((acc, curr) => acc + (curr?.length || 0), 0); - MalSync.scrobbleEpisode(metadata.name, lastEp, totalEpisodes, 'series', currentSeason, imdbId); + + MalSync.scrobbleEpisode( + metadata.name, + lastEp, + totalEpisodes, + 'series', + currentSeason, + imdbId, + lastEpisodeData?.air_date // Pass release date for accuracy + ); } // Re-sync with source of truth