From b6782c44939c0afa93c85ec2dd99979b999da97b Mon Sep 17 00:00:00 2001 From: Adrian Castro <22133246+castdrian@users.noreply.github.com> Date: Fri, 23 Feb 2024 16:08:36 +0100 Subject: [PATCH] fix: filter out duplicate audiotracks --- .../src/components/player/ScraperProcess.tsx | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/apps/expo/src/components/player/ScraperProcess.tsx b/apps/expo/src/components/player/ScraperProcess.tsx index 009e4c7..af8bbe1 100644 --- a/apps/expo/src/components/player/ScraperProcess.tsx +++ b/apps/expo/src/components/player/ScraperProcess.tsx @@ -113,17 +113,26 @@ export const ScraperProcess = ({ data }: ScraperProcessProps) => { }; if (tracks?.audio.length) { - const audioTracks: AudioTrack[] = tracks.audio.map((track) => ({ - uri: constructFullUrl( - (streamResult.stream as HlsBasedStream).playlist, - track.uri, - ), - name: (track.properties[0]?.attributes.name as string) ?? "Unknown", - language: - (track.properties[0]?.attributes.language as string) ?? "Unknown", - active: - (track.properties[0]?.attributes.default as boolean) ?? false, - })); + const audioTracks: AudioTrack[] = tracks.audio + .map((track) => ({ + uri: constructFullUrl( + (streamResult.stream as HlsBasedStream).playlist, + track.uri, + ), + name: + (track.properties[0]?.attributes.name as string) ?? "Unknown", + language: + (track.properties[0]?.attributes.language as string) ?? + "Unknown", + active: + (track.properties[0]?.attributes.default as boolean) ?? false, + })) + .filter((track, index, self) => { + const trackUriSet = new Set(self.map((t) => t.uri)); + return ( + !trackUriSet.has(track.uri) || trackUriSet.size === index + 1 + ); + }); setAudioTracks(audioTracks); } }