From 608fc525fb4649ac7260a0dbcbbce6b1e380fbab Mon Sep 17 00:00:00 2001 From: Schnitzel5 Date: Wed, 6 Aug 2025 00:03:05 +0200 Subject: [PATCH] Discord RPC now shows correct position / duration --- lib/modules/anime/anime_player_view.dart | 14 +++++----- lib/utils/discord_rpc.dart | 34 ++++++------------------ 2 files changed, 16 insertions(+), 32 deletions(-) diff --git a/lib/modules/anime/anime_player_view.dart b/lib/modules/anime/anime_player_view.dart index 00556eb6..bc5b74bc 100644 --- a/lib/modules/anime/anime_player_view.dart +++ b/lib/modules/anime/anime_player_view.dart @@ -314,10 +314,7 @@ class _AnimeStreamPageState extends riv.ConsumerState .duration .listen((duration) { _currentTotalDuration.value = duration; - discordRpc?.startChapterTimestamp( - _currentPosition.value.inMilliseconds, - duration.inMilliseconds, - ); + discordRpc?.updateChapterTimestamp(_currentPosition.value, duration); }); bool get hasNextEpisode => _streamController.getEpisodeIndex().$1 != 0; @@ -785,8 +782,13 @@ mp.register_script_message('call_button_${button.id}_long', button${button.id}lo void _updateRpcTimestamp() { final now = DateTime.now().millisecondsSinceEpoch; - if (lastRpcTimestampUpdate + 10000 < now) { - discordRpc?.updateChapterTimestamp(_currentPosition.value.inMilliseconds); + if (lastRpcTimestampUpdate + 5000 < now) { + if (_currentTotalDuration.value != null) { + discordRpc?.updateChapterTimestamp( + _currentPosition.value, + _currentTotalDuration.value!, + ); + } lastRpcTimestampUpdate = now; } } diff --git a/lib/utils/discord_rpc.dart b/lib/utils/discord_rpc.dart index 5bb6cea6..05ee877f 100644 --- a/lib/utils/discord_rpc.dart +++ b/lib/utils/discord_rpc.dart @@ -18,12 +18,6 @@ class DiscordRPC { /// Start timestamp in millis final int startAt = DateTime.timestamp().millisecondsSinceEpoch; - /// Start timestamp in millis for the current chapter/episode - int chapterStartAt = 0; - - /// End timestamp in millis for the current chapter/episode - int chapterEndAt = 0; - /// Temp var late bool rpcShowReadingWatchingProgress; @@ -132,32 +126,20 @@ class DiscordRPC { await updateActivity(timestamps: RPCTimestamps(start: startAt)); } - Future startChapterTimestamp( - int offsetInMillis, - int durationInMillis, + Future updateChapterTimestamp( + Duration position, + Duration duration, ) async { if (!rpcShowReadingWatchingProgress) { return; } - chapterStartAt = DateTime.timestamp().millisecondsSinceEpoch; - chapterEndAt = - DateTime.timestamp().millisecondsSinceEpoch + durationInMillis; await updateActivity( timestamps: RPCTimestamps( - start: chapterStartAt, - end: chapterEndAt - offsetInMillis, - ), - ); - } - - Future updateChapterTimestamp(int newOffsetInMillis) async { - if (!rpcShowReadingWatchingProgress) { - return; - } - await updateActivity( - timestamps: RPCTimestamps( - start: chapterStartAt, - end: chapterEndAt - newOffsetInMillis, + start: DateTime.timestamp().subtract(position).millisecondsSinceEpoch, + end: DateTime.timestamp() + .subtract(position) + .add(duration) + .millisecondsSinceEpoch, ), ); }