Files
stripstream/src/lib/providers/provider.factory.ts
Froidefond Julien 7e4c48469a feat: enhance Stripstream configuration handling
- Introduced a new resolver function to streamline fetching Stripstream configuration from the database or environment variables.
- Updated various components and API routes to utilize the new configuration resolver, improving code maintainability and reducing direct database calls.
- Added optional environment variables for Stripstream URL and token in the .env.example file.
- Refactored image loading logic in the reader components to improve performance and error handling.
2026-03-11 21:25:58 +01:00

54 lines
1.6 KiB
TypeScript

import prisma from "@/lib/prisma";
import { getCurrentUser } from "@/lib/auth-utils";
import { getResolvedStripstreamConfig } from "./stripstream/stripstream-config-resolver";
import type { IMediaProvider } from "./provider.interface";
export async function getProvider(): Promise<IMediaProvider | null> {
const user = await getCurrentUser();
if (!user) return null;
const userId = parseInt(user.id, 10);
const dbUser = await prisma.user.findUnique({
where: { id: userId },
select: {
activeProvider: true,
config: { select: { url: true, authHeader: true } },
stripstreamConfig: { select: { id: true } },
},
});
if (!dbUser) return null;
const activeProvider = dbUser.activeProvider ?? "komga";
if (activeProvider === "stripstream") {
const resolved = await getResolvedStripstreamConfig(userId);
if (resolved) {
const { StripstreamProvider } = await import("./stripstream/stripstream.provider");
return new StripstreamProvider(resolved.url, resolved.token);
}
}
if (activeProvider === "komga" || !dbUser.activeProvider) {
if (!dbUser.config) return null;
const { KomgaProvider } = await import("./komga/komga.provider");
return new KomgaProvider(dbUser.config.url, dbUser.config.authHeader);
}
return null;
}
export async function getActiveProviderType(): Promise<string | null> {
const user = await getCurrentUser();
if (!user) return null;
const userId = parseInt(user.id, 10);
const dbUser = await prisma.user.findUnique({
where: { id: userId },
select: { activeProvider: true },
});
return dbUser?.activeProvider ?? "komga";
}