From f2bf1d8df77d963ff978d2c5e61f18022b5b9986 Mon Sep 17 00:00:00 2001 From: Violet Caulfield Date: Sat, 28 Dec 2024 09:53:18 -0600 Subject: [PATCH] queuing helper work --- player/{mutators => }/helpers/index.ts | 4 ++-- player/helpers/queue.ts | 18 ++++++++++++++++++ player/provider.tsx | 10 +++------- 3 files changed, 23 insertions(+), 9 deletions(-) rename player/{mutators => }/helpers/index.ts (86%) create mode 100644 player/helpers/queue.ts diff --git a/player/mutators/helpers/index.ts b/player/helpers/index.ts similarity index 86% rename from player/mutators/helpers/index.ts rename to player/helpers/index.ts index 2d939637..902035dc 100644 --- a/player/mutators/helpers/index.ts +++ b/player/helpers/index.ts @@ -1,6 +1,6 @@ import { isEmpty } from "lodash"; -import { QueuingType } from "../../../enums/queuing-type"; -import { JellifyTrack } from "../../../types/JellifyTrack"; +import { QueuingType } from "../../enums/queuing-type"; +import { JellifyTrack } from "../../types/JellifyTrack"; /** * Finds and returns the index of the player queue to insert additional tracks into diff --git a/player/helpers/queue.ts b/player/helpers/queue.ts new file mode 100644 index 00000000..0c3e01cb --- /dev/null +++ b/player/helpers/queue.ts @@ -0,0 +1,18 @@ +import _ from "lodash"; +import { JellifyTrack } from "../../types/JellifyTrack"; + +export function buildNewQueue(existingQueue: JellifyTrack[], tracksToInsert: JellifyTrack[], insertIndex: number) { + + + let newQueue : JellifyTrack[] = []; + + if (_.isEmpty(existingQueue)) + newQueue = tracksToInsert; + else { + newQueue = _.cloneDeep(existingQueue).splice(insertIndex, 0, ...tracksToInsert); + } + + console.debug(`Setting queue: ${newQueue}`) + + return newQueue; +} \ No newline at end of file diff --git a/player/provider.tsx b/player/provider.tsx index 67fb1126..a5b4ac1d 100644 --- a/player/provider.tsx +++ b/player/provider.tsx @@ -2,9 +2,10 @@ import { createContext, ReactNode, SetStateAction, useContext, useEffect, useSta import { JellifyTrack } from "../types/JellifyTrack"; import { storage } from "../constants/storage"; import { MMKVStorageKeys } from "../enums/mmkv-storage-keys"; -import { findPlayQueueIndexStart } from "./mutators/helpers"; +import { findPlayQueueIndexStart } from "./helpers"; import { add, reset, setupPlayer } from "react-native-track-player/lib/src/trackPlayer"; import _ from "lodash"; +import { buildNewQueue } from "./helpers/queue"; interface PlayerContext { showPlayer: boolean; @@ -43,12 +44,7 @@ const PlayerContextInitializer = () => { await add(tracks, insertIndex); - let newQueue : JellifyTrack[] = - _.cloneDeep(queue).splice(insertIndex, 0, ...tracks); - - console.debug(`Setting queue: ${newQueue}`) - - setQueue(newQueue) + setQueue(buildNewQueue(queue, tracks, insertIndex)) } // Hide miniplayer if the queue is empty