From 882d0ea188f26d1fde1c00643089bfcf46628ab9 Mon Sep 17 00:00:00 2001 From: herrrta <73949927+herrrta@users.noreply.github.com> Date: Thu, 9 Jan 2025 08:51:53 -0500 Subject: [PATCH] api augmentations & added streamyfin plugin id --- augmentations/api.ts | 30 ++++++++++++++++++++++++++++++ utils/atoms/settings.ts | 16 ++++++++-------- 2 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 augmentations/api.ts diff --git a/augmentations/api.ts b/augmentations/api.ts new file mode 100644 index 00000000..72b8c45f --- /dev/null +++ b/augmentations/api.ts @@ -0,0 +1,30 @@ +import {Api, AUTHORIZATION_HEADER} from "@jellyfin/sdk"; +import {AxiosRequestConfig, AxiosResponse} from "axios"; +import {StreamyfinPluginConfig} from "@/utils/atoms/settings"; + +declare module '@jellyfin/sdk' { + interface Api { + get(url: string, config?: AxiosRequestConfig): Promise> + post(url: string, data: D, config?: AxiosRequestConfig): Promise> + getStreamyfinPluginConfig(): Promise> + } +} + +Api.prototype.get = function (url: string, config: AxiosRequestConfig = {}): Promise> { + return this.axiosInstance.get(url, { + ...(config ?? {}), + headers: { [AUTHORIZATION_HEADER]: this.authorizationHeader } + }) +} + +Api.prototype.post = function (url: string, data: D, config: AxiosRequestConfig): Promise> { + return this.axiosInstance.get(`${this.basePath}${url}`, { + ...(config || {}), + data, + headers: { [AUTHORIZATION_HEADER]: this.authorizationHeader }} + ) +} + +Api.prototype.getStreamyfinPluginConfig = function (): Promise> { + return this.get("/Streamyfin/config") +} \ No newline at end of file diff --git a/utils/atoms/settings.ts b/utils/atoms/settings.ts index eac6826e..becb1ea8 100644 --- a/utils/atoms/settings.ts +++ b/utils/atoms/settings.ts @@ -11,8 +11,8 @@ import { import {apiAtom} from "@/providers/JellyfinProvider"; import {getPluginsApi} from "@jellyfin/sdk/lib/utils/api"; import {writeErrorLog} from "@/utils/log"; -import {AUTHORIZATION_HEADER} from "@jellyfin/sdk"; +const STREAMYFIN_PLUGIN_ID = "1e9e5d38-6e67-4615-8719-e98a5c34f004" const STREAMYFIN_PLUGIN_SETTINGS = "STREAMYFIN_PLUGIN_SETTINGS" export type DownloadQuality = "original" | "high" | "low"; @@ -105,6 +105,9 @@ export interface Lockable { } export type PluginLockableSettings = { [K in keyof Settings]: Lockable }; +export type StreamyfinPluginConfig = { + settings: PluginLockableSettings +} const loadSettings = (): Settings => { const defaultValues: Settings = { @@ -193,9 +196,9 @@ export const useSettings = () => { const plugins = await getPluginsApi(api).getPlugins().then(({data}) => data); if (plugins && plugins.length > 0) { - const streamyfinPlugin = plugins.find(plugin => plugin.Name === "Streamyfin"); + const streamyfinPlugin = plugins.find(plugin => plugin.Id === STREAMYFIN_PLUGIN_ID); - if (streamyfinPlugin?.Status != PluginStatus.Active) { + if (!streamyfinPlugin || streamyfinPlugin.Status != PluginStatus.Active) { writeErrorLog( "Streamyfin plugin is currently not active.\n" + `Current status is: ${streamyfinPlugin?.Status}` @@ -204,11 +207,8 @@ export const useSettings = () => { return; } - const settings = await api.axiosInstance - .get(`${api.basePath}/Streamyfin/config`, { headers: { [AUTHORIZATION_HEADER]: api.authorizationHeader } }) - .then(response => { - return response.data['settings'] as PluginLockableSettings - }) + const settings = await api.getStreamyfinPluginConfig() + .then(({data}) => data.settings) setPluginSettings(settings); return settings;