mirror of
https://github.com/streamyfin/streamyfin.git
synced 2025-08-20 18:37:18 +02:00
Signed-off-by: Lance Chant <13349722+lancechant@users.noreply.github.com> Signed-off-by: lancechant <13349722+lancechant@users.noreply.github.com> Co-authored-by: Fredrik Burmester <fredrik.burmester@gmail.com> Co-authored-by: Uruk <contact@uruk.dev> Co-authored-by: Gauvain <68083474+Gauvino@users.noreply.github.com>
61 lines
1.6 KiB
TypeScript
61 lines
1.6 KiB
TypeScript
import type { Api } from "@jellyfin/sdk";
|
|
import { getPlaystateApi } from "@jellyfin/sdk/lib/utils/api";
|
|
import type { Settings } from "@/utils/atoms/settings";
|
|
|
|
interface ReportPlaybackProgressParams {
|
|
api?: Api | null;
|
|
sessionId?: string | null;
|
|
itemId?: string | null;
|
|
positionTicks?: number | null;
|
|
IsPaused?: boolean;
|
|
deviceProfile?: Settings["deviceProfile"];
|
|
}
|
|
|
|
/**
|
|
* Reports playback progress to the Jellyfin server.
|
|
*
|
|
* @param params - The parameters for reporting playback progress
|
|
* @throws {Error} If any required parameter is missing
|
|
*/
|
|
export const reportPlaybackProgress = async ({
|
|
api,
|
|
sessionId,
|
|
itemId,
|
|
positionTicks,
|
|
IsPaused = false,
|
|
}: ReportPlaybackProgressParams): Promise<void> => {
|
|
if (!api || !sessionId || !itemId || !positionTicks) {
|
|
return;
|
|
}
|
|
|
|
console.info("reportPlaybackProgress ~ IsPaused", IsPaused);
|
|
|
|
try {
|
|
await getPlaystateApi(api).onPlaybackProgress({
|
|
itemId,
|
|
audioStreamIndex: 0,
|
|
subtitleStreamIndex: 0,
|
|
mediaSourceId: itemId,
|
|
positionTicks: Math.round(positionTicks),
|
|
isPaused: IsPaused,
|
|
isMuted: false,
|
|
playMethod: "Transcode",
|
|
});
|
|
// await api.axiosInstance.post(
|
|
// `${api.basePath}/Sessions/Playing/Progress`,
|
|
// {
|
|
// ItemId: itemId,
|
|
// PlaySessionId: sessionId,
|
|
// IsPaused,
|
|
// PositionTicks: Math.round(positionTicks),
|
|
// CanSeek: true,
|
|
// MediaSourceId: itemId,
|
|
// EventName: "timeupdate",
|
|
// },
|
|
// { headers: getAuthHeaders(api) }
|
|
// );
|
|
} catch (error) {
|
|
console.error(error);
|
|
}
|
|
};
|