This commit is contained in:
Violet Caulfield
2025-01-16 13:08:48 -06:00
parent 0be88e4dc4
commit 5bdfcabce3
2 changed files with 18 additions and 5 deletions

View File

@@ -6,6 +6,7 @@ import { useApiClientContext } from "@/components/jellyfin-api-provider";
import { Api } from "@jellyfin/sdk";
import { getUserLibraryApi } from "@jellyfin/sdk/lib/utils/api";
import { useMutation } from "@tanstack/react-query";
import { isUndefined } from "lodash";
interface SetFavoriteMutation {
item: BaseItemDto,
@@ -25,7 +26,13 @@ export default function FavoriteHeaderButton({
const [
isFavorite,
setIsFavorite
] = useState<boolean>(isFavoriteItem ?? item.UserData?.IsFavorite ?? false);
] = useState<boolean>(
!isUndefined(isFavoriteItem) ?
isFavoriteItem :
!isUndefined(item.UserData) ?
item.UserData.IsFavorite ?? false :
false
);
const { apiClient } = useApiClientContext()

View File

@@ -4,7 +4,7 @@ import { storage } from "../constants/storage";
import { MMKVStorageKeys } from "../enums/mmkv-storage-keys";
import { findPlayQueueIndexStart } from "./helpers/index";
import TrackPlayer, { Event, Progress, State, usePlaybackState, useProgress, useTrackPlayerEvents } from "react-native-track-player";
import _, { isUndefined } from "lodash";
import _, { isEqual, isUndefined } from "lodash";
import { useApiClientContext } from "../components/jellyfin-api-provider";
import { getPlaystateApi } from "@jellyfin/sdk/lib/utils/api";
import { handlePlaybackProgressUpdated, handlePlaybackState } from "./handlers";
@@ -183,9 +183,15 @@ const PlayerContextInitializer = () => {
case (Event.PlaybackActiveTrackChanged) : {
if ((await TrackPlayer.getActiveTrack() as JellifyTrack | undefined) !== nowPlaying) {
setNowPlaying(await TrackPlayer.getActiveTrack() as JellifyTrack | undefined);
setNowPlayingIsFavorite((await fetchUserData(apiClient!, nowPlaying!.item.Id!)).IsFavorite ?? false);
const activeTrack = event.track as JellifyTrack | undefined;
if (activeTrack && !isEqual(activeTrack, nowPlaying)) {
setNowPlaying(activeTrack);
setNowPlayingIsFavorite((await fetchUserData(apiClient!, activeTrack!.item.Id!)).IsFavorite ?? false);
} else if (!!!activeTrack) {
setNowPlaying(undefined)
setNowPlayingIsFavorite(false);
} else {
// Do nothing
}
}
}