mirror of
https://github.com/streamyfin/streamyfin.git
synced 2025-08-20 18:37:18 +02:00
Co-authored-by: lostb1t <coding-mosses0z@icloud.com> Co-authored-by: Fredrik Burmester <fredrik.burmester@gmail.com> Co-authored-by: Gauvain <68083474+Gauvino@users.noreply.github.com> Co-authored-by: Gauvino <uruknarb20@gmail.com> Co-authored-by: storm1er <le.storm1er@gmail.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Chris <182387676+whoopsi-daisy@users.noreply.github.com> Co-authored-by: arch-fan <55891793+arch-fan@users.noreply.github.com> Co-authored-by: Alex Kim <alexkim@Alexs-MacBook-Pro.local>
57 lines
1.5 KiB
TypeScript
57 lines
1.5 KiB
TypeScript
import type { Api } from "@jellyfin/sdk";
|
|
import type { AxiosResponse } from "axios";
|
|
import type { Settings } from "@/utils/atoms/settings";
|
|
import { generateDeviceProfile } from "@/utils/profiles/native";
|
|
import { getAuthHeaders } from "../jellyfin";
|
|
|
|
interface PostCapabilitiesParams {
|
|
api: Api | null | undefined;
|
|
itemId: string | null | undefined;
|
|
sessionId: string | null | undefined;
|
|
deviceProfile: Settings["deviceProfile"];
|
|
}
|
|
|
|
/**
|
|
* Marks a media item as not played for a specific user.
|
|
*
|
|
* @param params - The parameters for marking an item as not played
|
|
* @returns A promise that resolves to true if the operation was successful, false otherwise
|
|
*/
|
|
export const postCapabilities = async ({
|
|
api,
|
|
itemId,
|
|
sessionId,
|
|
}: PostCapabilitiesParams): Promise<AxiosResponse> => {
|
|
if (!api || !itemId || !sessionId) {
|
|
throw new Error("Missing parameters for marking item as not played");
|
|
}
|
|
|
|
try {
|
|
const d = api.axiosInstance.post(
|
|
`${api.basePath}/Sessions/Capabilities/Full`,
|
|
{
|
|
playableMediaTypes: ["Audio", "Video"],
|
|
supportedCommands: [
|
|
"PlayState",
|
|
"Play",
|
|
"ToggleFullscreen",
|
|
"DisplayMessage",
|
|
"Mute",
|
|
"Unmute",
|
|
"SetVolume",
|
|
"ToggleMute",
|
|
],
|
|
supportsMediaControl: true,
|
|
id: sessionId,
|
|
DeviceProfile: generateDeviceProfile(),
|
|
},
|
|
{
|
|
headers: getAuthHeaders(api),
|
|
},
|
|
);
|
|
return d;
|
|
} catch (_error) {
|
|
throw new Error("Failed to mark as not played");
|
|
}
|
|
};
|