Files
App/helpers/mappings.ts
T
Violet Caulfield e09c71590c Add lodash
More backend for queuing, image retrieval, and completing mapping to JellifyTrack
2024-10-13 09:41:17 -05:00

33 lines
1.5 KiB
TypeScript

import { BaseItemDto, ImageType } from "@jellyfin/sdk/lib/generated-client/models"
import { PitchAlgorithm, RatingType, Track, TrackType } from "react-native-track-player"
import { JellifyTrack } from "../types/JellifyTrack"
import { useApi } from "../api/queries"
import _ from "lodash";
import { useImageByItemId } from "../api/queries/image";
import { QueuingType } from "../enums/queuing-type";
let clientName : string = require('root-require')('./package.json').name
export function mapDtoToJellifyTrack(item: BaseItemDto, queuingType: QueuingType) : JellifyTrack {
return {
url: `${useApi.data!.basePath}/Audio/${item.Id!}/universal`,
type: TrackType.HLS, // TODO: Confirm this
userAgent: clientName,
contentType: _.isNull(item.Container) ? undefined : item.Container,
pitchAlgorithm: PitchAlgorithm.Music,
headers: {
"Authorization": useApi.data?.authorizationHeader
},
title: _.isNull(item.Name) ? undefined : item.Name,
album: _.isNull(item.Album) ? undefined : item.Album,
artist: _.isNull(item.Artists) ? undefined : item.Artists?.join(", "),
duration: _.isNull(item.RunTimeTicks) ? undefined : item.RunTimeTicks,
artwork: useImageByItemId(item.Id!, ImageType.Primary).data,
genre: _.isNull(item.Genres) ? undefined : item.Genres?.join(", "),
date: _.isNull(item.PremiereDate) ? undefined : item.PremiereDate,
// rating
isLiveStream: false, // TODO: only for iOS
QueuingType: queuingType
}
}