adjust player provider so that we aren't updating components LITERALLY EVERYWHERE

This commit is contained in:
Violet Caulfield
2025-02-18 22:00:48 -06:00
parent 965b473bd0
commit c3fd86f04d
4 changed files with 10 additions and 14 deletions

View File

@@ -24,13 +24,14 @@ const HomeContextInitializer = () => {
});
const onRefresh = async () => {
setRefreshing(true);
await Promise.all([
refetchRecentTracks(),
refetchRecentArtists()
])
.then(() => {
setRefreshing(false);
})
setRefreshing(false);
}
return {

View File

@@ -18,6 +18,8 @@ import { trigger } from "react-native-haptic-feedback";
import { Gesture, GestureDetector } from "react-native-gesture-handler";
import { BaseItemDto } from "@jellyfin/sdk/lib/generated-client/models";
import { useIsFocused } from "@react-navigation/native";
import { useProgress } from "react-native-track-player";
import { UPDATE_INTERVAL } from "../../../player/config";
const scrubGesture = Gesture.Pan();
@@ -31,7 +33,6 @@ export default function PlayerScreen({
nowPlayingIsFavorite,
setNowPlayingIsFavorite,
nowPlaying,
progress,
useSeekTo,
useSkip,
usePrevious,
@@ -39,6 +40,8 @@ export default function PlayerScreen({
queue
} = usePlayerContext();
const progress = useProgress(UPDATE_INTERVAL);
const [seeking, setSeeking] = useState<boolean>(false);
/**

View File

@@ -3,7 +3,7 @@ import { JellifyTrack } from "../types/JellifyTrack";
import { PlaystateApi } from "@jellyfin/sdk/lib/generated-client/api/playstate-api";
import { convertSecondsToRunTimeTicks } from "../helpers/runtimeticks";
export async function handlePlaybackState(sessionId: string, playstateApi: PlaystateApi, track: JellifyTrack, state: State, progress: Progress) {
export async function handlePlaybackState(sessionId: string, playstateApi: PlaystateApi, track: JellifyTrack, state: State) {
switch (state) {
case (State.Playing) : {
console.debug("Report playback started")
@@ -11,7 +11,6 @@ export async function handlePlaybackState(sessionId: string, playstateApi: Plays
playbackStartInfo: {
SessionId: sessionId,
ItemId: track.item.Id,
PositionTicks: convertSecondsToRunTimeTicks(progress.position)
}
});
break;
@@ -25,7 +24,6 @@ export async function handlePlaybackState(sessionId: string, playstateApi: Plays
playbackStopInfo: {
SessionId: sessionId,
ItemId: track.item.Id,
PositionTicks: convertSecondsToRunTimeTicks(progress.position)
}
});
break;

View File

@@ -40,7 +40,6 @@ interface PlayerContext {
usePrevious: UseMutationResult<void, Error, void, unknown>;
usePlayNewQueue: UseMutationResult<void, Error, QueueMutation, unknown>;
playbackState: State | undefined;
progress: Progress | undefined;
}
const PlayerContextInitializer = () => {
@@ -244,7 +243,6 @@ const PlayerContextInitializer = () => {
//#region RNTP Setup
const { state: playbackState } = usePlaybackState();
const progress = useProgress(UPDATE_INTERVAL);
useTrackPlayerEvents([
Event.RemoteLike,
@@ -268,7 +266,7 @@ const PlayerContextInitializer = () => {
}
case (Event.PlaybackState) : {
handlePlaybackState(Client.sessionId, playStateApi, await TrackPlayer.getActiveTrack() as JellifyTrack, event.state, progress);
handlePlaybackState(Client.sessionId, playStateApi, await TrackPlayer.getActiveTrack() as JellifyTrack, event.state);
break;
}
case (Event.PlaybackProgressUpdated) : {
@@ -363,7 +361,6 @@ const PlayerContextInitializer = () => {
usePrevious,
usePlayNewQueue,
playbackState,
progress,
}
//#endregion return
}
@@ -540,7 +537,6 @@ export const PlayerContext = createContext<PlayerContext>({
submittedAt: 0
},
playbackState: undefined,
progress: undefined,
});
//#endregion Create PlayerContext
@@ -563,7 +559,6 @@ export const PlayerProvider: ({ children }: { children: ReactNode }) => React.JS
usePrevious,
usePlayNewQueue,
playbackState,
progress
} = PlayerContextInitializer();
return <PlayerContext.Provider value={{
@@ -584,7 +579,6 @@ export const PlayerProvider: ({ children }: { children: ReactNode }) => React.JS
usePrevious,
usePlayNewQueue,
playbackState,
progress
}}>
{ children }
</PlayerContext.Provider>