From 84f47df6c16c0ba1c35f2bde0b1c26fbb0f07168 Mon Sep 17 00:00:00 2001 From: Kingkor Roy Tirtho Date: Sat, 10 Aug 2024 21:35:38 +0600 Subject: [PATCH] feat(discord): add listening activity type --- lib/provider/discord_provider.dart | 52 ++++++++++++++++-------------- pubspec.lock | 6 ++-- 2 files changed, 30 insertions(+), 28 deletions(-) diff --git a/lib/provider/discord_provider.dart b/lib/provider/discord_provider.dart index 23be0bc3..8f8cb375 100644 --- a/lib/provider/discord_provider.dart +++ b/lib/provider/discord_provider.dart @@ -17,31 +17,30 @@ class DiscordNotifier extends AsyncNotifier { var lastPosition = audioPlayer.position; - final subscriptions = - [ - FlutterDiscordRPC.instance.isConnectedStream.listen((connected) async { - final playback = ref.read(audioPlayerProvider); - if (connected && playback.activeTrack != null) { - await updatePresence(playback.activeTrack!); - } - }), - audioPlayer.playerStateStream.listen((state) async { - final playback = ref.read(audioPlayerProvider); - if (playback.activeTrack == null) return; + final subscriptions = [ + FlutterDiscordRPC.instance.isConnectedStream.listen((connected) async { + final playback = ref.read(audioPlayerProvider); + if (connected && playback.activeTrack != null) { + await updatePresence(playback.activeTrack!); + } + }), + audioPlayer.playerStateStream.listen((state) async { + final playback = ref.read(audioPlayerProvider); + if (playback.activeTrack == null) return; + await updatePresence(ref.read(audioPlayerProvider).activeTrack!); + }), + audioPlayer.positionStream.listen((position) async { + final playback = ref.read(audioPlayerProvider); + if (playback.activeTrack != null) { + final diff = position.inMilliseconds - lastPosition.inMilliseconds; + if (diff > 500 || diff < -500) { await updatePresence(ref.read(audioPlayerProvider).activeTrack!); - }), - audioPlayer.positionStream.listen((position) async { - final playback = ref.read(audioPlayerProvider); - if (playback.activeTrack != null) { - final diff = position.inMilliseconds - lastPosition.inMilliseconds; - if (diff > 500 || diff < -500) { - await updatePresence(ref.read(audioPlayerProvider).activeTrack!); - } - } - lastPosition = position; - }) - ]; + } + } + lastPosition = position; + }) + ]; ref.onDispose(() async { for (final subscription in subscriptions) { @@ -83,8 +82,11 @@ class DiscordNotifier extends AsyncNotifier { ), ], timestamps: RPCTimestamps( - start: isPlaying ? DateTime.now().millisecondsSinceEpoch - position.inMilliseconds : null, + start: isPlaying + ? DateTime.now().millisecondsSinceEpoch - position.inMilliseconds + : null, ), + activityType: ActivityType.listening, ), ); } @@ -99,4 +101,4 @@ class DiscordNotifier extends AsyncNotifier { } final discordProvider = - AsyncNotifierProvider(() => DiscordNotifier()); \ No newline at end of file + AsyncNotifierProvider(() => DiscordNotifier()); diff --git a/pubspec.lock b/pubspec.lock index cd96e007..0bc24dff 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -717,7 +717,7 @@ packages: description: path: "packages/flutter_discord_rpc" ref: cargokit - resolved-ref: "1b839bf02afd5dfa56b0dc25f60af04aa9bfc7c3" + resolved-ref: "331636d8e378e3ac9ad30a4b0d3eed17d5a85fe9" url: "https://github.com/KRTirtho/frb_plugins.git" source: git version: "0.1.0+1" @@ -1484,7 +1484,7 @@ packages: description: path: "packages/metadata_god" ref: cargokit - resolved-ref: "1b839bf02afd5dfa56b0dc25f60af04aa9bfc7c3" + resolved-ref: "331636d8e378e3ac9ad30a4b0d3eed17d5a85fe9" url: "https://github.com/KRTirtho/frb_plugins.git" source: git version: "0.5.3" @@ -1987,7 +1987,7 @@ packages: description: path: "packages/smtc_windows" ref: cargokit - resolved-ref: "1b839bf02afd5dfa56b0dc25f60af04aa9bfc7c3" + resolved-ref: "331636d8e378e3ac9ad30a4b0d3eed17d5a85fe9" url: "https://github.com/KRTirtho/frb_plugins.git" source: git version: "0.1.3"