This commit is contained in:
Fredrik Burmester
2024-09-29 19:43:17 +02:00
parent 1c2578477a
commit 12cb6d4963
6 changed files with 72 additions and 24 deletions

View File

@@ -54,7 +54,7 @@ export type DefaultLanguageOption = {
label: string;
};
type Settings = {
export type Settings = {
autoRotate?: boolean;
forceLandscapeInVideoPlayer?: boolean;
usePopularPlugin?: boolean;

View File

@@ -1,6 +1,7 @@
import { Api } from "@jellyfin/sdk";
import { getAuthHeaders } from "../jellyfin";
import { postCapabilities } from "../session/capabilities";
import { Settings } from "@/utils/atoms/settings";
interface ReportPlaybackProgressParams {
api?: Api | null;
@@ -8,6 +9,7 @@ interface ReportPlaybackProgressParams {
itemId?: string | null;
positionTicks?: number | null;
IsPaused?: boolean;
deviceProfile?: Settings["deviceProfile"];
}
/**
@@ -22,6 +24,7 @@ export const reportPlaybackProgress = async ({
itemId,
positionTicks,
IsPaused = false,
deviceProfile,
}: ReportPlaybackProgressParams): Promise<void> => {
if (!api || !sessionId || !itemId || !positionTicks) {
return;
@@ -34,6 +37,7 @@ export const reportPlaybackProgress = async ({
api,
itemId,
sessionId,
deviceProfile,
});
} catch (error) {
console.error("Failed to post capabilities.", error);

View File

@@ -1,16 +1,17 @@
import { Settings } from "@/utils/atoms/settings";
import ios from "@/utils/profiles/ios";
import native from "@/utils/profiles/native";
import old from "@/utils/profiles/old";
import { Api } from "@jellyfin/sdk";
import {
SessionApi,
SessionApiPostCapabilitiesRequest,
} from "@jellyfin/sdk/lib/generated-client/api/session-api";
import { getSessionApi } from "@jellyfin/sdk/lib/utils/api";
import { AxiosError, AxiosResponse } from "axios";
import { useMemo } from "react";
import { getAuthHeaders } from "../jellyfin";
interface PostCapabilitiesParams {
api: Api | null | undefined;
itemId: string | null | undefined;
sessionId: string | null | undefined;
deviceProfile: Settings["deviceProfile"];
}
/**
@@ -23,16 +24,26 @@ export const postCapabilities = async ({
api,
itemId,
sessionId,
deviceProfile,
}: PostCapabilitiesParams): Promise<AxiosResponse> => {
if (!api || !itemId || !sessionId) {
throw new Error("Missing parameters for marking item as not played");
}
let profile: any = ios;
if (deviceProfile === "Native") {
profile = native;
}
if (deviceProfile === "Old") {
profile = old;
}
try {
const d = api.axiosInstance.post(
api.basePath + "/Sessions/Capabilities/Full",
{
playableMediaTypes: ["Audio", "Video", "Audio"],
playableMediaTypes: ["Audio", "Video"],
supportedCommands: [
"PlayState",
"Play",
@@ -45,6 +56,7 @@ export const postCapabilities = async ({
],
supportsMediaControl: true,
id: sessionId,
DeviceProfile: profile,
},
{
headers: getAuthHeaders(api),