Skip to content

Commit 6df83dc

Browse files
committed
Refactor getAlbumArtFromReleaseMBID
Fetch the RG caover art as a fallback by default, and don't require passing an instance of APIService as an argument (create a global instance on load).
1 parent b910bfa commit 6df83dc

File tree

4 files changed

+23
-25
lines changed

4 files changed

+23
-25
lines changed

frontend/js/src/common/brainzplayer/MusicPlayer.tsx

+1-5
Original file line numberDiff line numberDiff line change
@@ -221,11 +221,7 @@ function MusicPlayer(props: MusicPlayerProps) {
221221
track: BrainzPlayerQueueItem,
222222
setCoverArt: React.Dispatch<React.SetStateAction<string>>
223223
) => {
224-
const coverArt = await getAlbumArtFromListenMetadata(
225-
track,
226-
spotifyAuth,
227-
APIService
228-
);
224+
const coverArt = await getAlbumArtFromListenMetadata(track, spotifyAuth);
229225
setCoverArt(coverArt ?? "");
230226
};
231227

frontend/js/src/common/listens/ListenCard.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -774,8 +774,7 @@ export default function ListenCardWrapper(props: ListenCardProps) {
774774
try {
775775
const albumArtURL = await getAlbumArtFromListenMetadata(
776776
listen,
777-
spotifyAuth,
778-
APIService
777+
spotifyAuth
779778
);
780779
return albumArtURL ?? "";
781780
} catch (error) {

frontend/js/src/explore/fresh-releases/components/ReleaseCard.tsx

+2-4
Original file line numberDiff line numberDiff line change
@@ -122,13 +122,11 @@ export default function ReleaseCard(props: ReleaseCardProps) {
122122
React.useEffect(() => {
123123
async function getCoverArt() {
124124
let coverartURL;
125-
if (releaseMBID) {
125+
if (releaseMBID || releaseGroupMBID) {
126126
coverartURL = await getAlbumArtFromReleaseMBID(
127127
releaseMBID,
128-
releaseGroupMBID ?? true
128+
releaseGroupMBID
129129
);
130-
} else if (releaseGroupMBID) {
131-
coverartURL = await getAlbumArtFromReleaseGroupMBID(releaseGroupMBID);
132130
}
133131
if (coverartURL) {
134132
setCoverartSrc(coverartURL);

frontend/js/src/utils/utils.tsx

+19-14
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ import { getCoverArtCache, setCoverArtCache } from "./coverArtCache";
1919
const originalFetch = window.fetch;
2020
const fetchWithRetry = require("fetch-retry")(originalFetch);
2121

22+
let APIServiceInstance = new APIServiceClass(`${window.location.origin}/1`);
23+
2224
const searchForSpotifyTrack = async (
2325
spotifyToken?: string,
2426
trackName?: string,
@@ -611,6 +613,7 @@ const getPageProps = async (): Promise<{
611613
const apiService = new APIServiceClass(
612614
api_url || `${window.location.origin}/1`
613615
);
616+
APIServiceInstance = apiService;
614617
globalAppContext = {
615618
APIService: apiService,
616619
websocketsUrl: websockets_url,
@@ -800,14 +803,13 @@ const getAlbumArtFromReleaseGroupMBID = async (
800803

801804
const getAlbumArtFromReleaseMBID = async (
802805
userSubmittedReleaseMBID: string | undefined | null,
803-
useReleaseGroupFallback: boolean | string = false,
804-
APIService?: APIServiceClass,
806+
userSubmittedReleaseGroupMBID: string | undefined | null,
805807
optionalSize?: CAAThumbnailSizes,
806808
frontOnly?: boolean
807809
): Promise<string | undefined> => {
808810
try {
809811
// Check cache first
810-
const cacheKey = `ca:${userSubmittedReleaseMBID}-${optionalSize}-${useReleaseGroupFallback}`;
812+
const cacheKey = `ca:${userSubmittedReleaseMBID}-${optionalSize}-${userSubmittedReleaseGroupMBID}`;
811813
const cachedCoverArt = await getCoverArtCache(cacheKey);
812814
if (cachedCoverArt) {
813815
return cachedCoverArt;
@@ -833,15 +835,20 @@ const getAlbumArtFromReleaseMBID = async (
833835
}
834836
}
835837

836-
if (useReleaseGroupFallback) {
837-
let releaseGroupMBID = useReleaseGroupFallback;
838+
/*
839+
Fallback to fetching cover art for the Release Group.
840+
If no RG MBID is available, first hit the MusicBrainz API
841+
with the release MBID to get the RG MBID
842+
*/
843+
if (userSubmittedReleaseMBID || userSubmittedReleaseGroupMBID) {
844+
let releaseGroupMBID = userSubmittedReleaseGroupMBID;
838845
if (
839-
_.isString(userSubmittedReleaseMBID) &&
840-
!_.isString(useReleaseGroupFallback) &&
841-
APIService
846+
!_.isString(userSubmittedReleaseGroupMBID) &&
847+
_.isString(userSubmittedReleaseMBID)
842848
) {
843-
const releaseGroupResponse = (await APIService.lookupMBRelease(
844-
userSubmittedReleaseMBID
849+
const releaseGroupResponse = (await APIServiceInstance.lookupMBRelease(
850+
userSubmittedReleaseMBID,
851+
"release-groups"
845852
)) as MusicBrainzRelease & WithReleaseGroup;
846853
releaseGroupMBID = releaseGroupResponse["release-group"].id;
847854
}
@@ -919,8 +926,7 @@ const getAlbumArtFromListenMetadataKey = (
919926

920927
const getAlbumArtFromListenMetadata = async (
921928
listen: BaseListenFormat,
922-
spotifyUser?: SpotifyUser,
923-
APIService?: APIServiceClass
929+
spotifyUser?: SpotifyUser
924930
): Promise<string | undefined> => {
925931
if (!listen) {
926932
return undefined;
@@ -954,8 +960,7 @@ const getAlbumArtFromListenMetadata = async (
954960
// release group cover art of the user submitted release mbid next
955961
const userSubmittedReleaseAlbumArt = await getAlbumArtFromReleaseMBID(
956962
userSubmittedReleaseMBID,
957-
userSubmittedReleaseGroupMBID ?? true,
958-
APIService,
963+
userSubmittedReleaseGroupMBID,
959964
undefined,
960965
true // we only want front images, otherwise skip
961966
);

0 commit comments

Comments
 (0)