mirror of
https://github.com/streamyfin/streamyfin.git
synced 2026-07-18 18:24:18 +01:00
wip
This commit is contained in:
@@ -38,6 +38,8 @@ import { AppState, AppStateStatus } from "react-native";
|
||||
import { toast } from "sonner-native";
|
||||
import { apiAtom } from "./JellyfinProvider";
|
||||
import * as Notifications from "expo-notifications";
|
||||
import { getItemImage } from "@/utils/getItemImage";
|
||||
import useImageStorage from "@/hooks/useImageStorage";
|
||||
|
||||
function onAppStateChange(status: AppStateStatus) {
|
||||
focusManager.setFocused(status === "active");
|
||||
@@ -53,6 +55,9 @@ function useDownloadProvider() {
|
||||
const router = useRouter();
|
||||
const [api] = useAtom(apiAtom);
|
||||
|
||||
const { loadImage, saveImage, image2Base64, saveBase64Image } =
|
||||
useImageStorage();
|
||||
|
||||
const [processes, setProcesses] = useState<JobStatus[]>([]);
|
||||
|
||||
const authHeader = useMemo(() => {
|
||||
@@ -294,11 +299,30 @@ function useDownloadProvider() {
|
||||
|
||||
const startBackgroundDownload = useCallback(
|
||||
async (url: string, item: BaseItemDto, fileExtension: string) => {
|
||||
if (!api || !item.Id || !authHeader)
|
||||
throw new Error("startBackgroundDownload ~ Missing required params");
|
||||
|
||||
try {
|
||||
const deviceId = await getOrSetDeviceId();
|
||||
const itemImage = getItemImage({
|
||||
item,
|
||||
api,
|
||||
variant: "Primary",
|
||||
quality: 90,
|
||||
width: 500,
|
||||
});
|
||||
|
||||
await saveImage(item.Id, itemImage?.uri);
|
||||
|
||||
const response = await axios.post(
|
||||
settings?.optimizedVersionsServerUrl + "optimize-version",
|
||||
{ url, fileExtension, deviceId, itemId: item.Id, item },
|
||||
{
|
||||
url,
|
||||
fileExtension,
|
||||
deviceId,
|
||||
itemId: item.Id,
|
||||
item,
|
||||
},
|
||||
{
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
|
||||
@@ -11,6 +11,7 @@ import React, {
|
||||
|
||||
import { useSettings } from "@/utils/atoms/settings";
|
||||
import { getDeviceId } from "@/utils/device";
|
||||
import { SubtitleTrack } from "@/utils/hls/parseM3U8ForSubtitles";
|
||||
import { reportPlaybackProgress } from "@/utils/jellyfin/playstate/reportPlaybackProgress";
|
||||
import { reportPlaybackStopped } from "@/utils/jellyfin/playstate/reportPlaybackStopped";
|
||||
import { postCapabilities } from "@/utils/jellyfin/session/capabilities";
|
||||
@@ -20,16 +21,12 @@ import {
|
||||
} from "@jellyfin/sdk/lib/generated-client/models";
|
||||
import { getMediaInfoApi } from "@jellyfin/sdk/lib/utils/api";
|
||||
import * as Linking from "expo-linking";
|
||||
import { useRouter } from "expo-router";
|
||||
import { useAtom } from "jotai";
|
||||
import { debounce } from "lodash";
|
||||
import { Alert } from "react-native";
|
||||
import { OnProgressData, type VideoRef } from "react-native-video";
|
||||
import { apiAtom, userAtom } from "./JellyfinProvider";
|
||||
import {
|
||||
parseM3U8ForSubtitles,
|
||||
SubtitleTrack,
|
||||
} from "@/utils/hls/parseM3U8ForSubtitles";
|
||||
import { useRouter } from "expo-router";
|
||||
|
||||
export type CurrentlyPlayingState = {
|
||||
url: string;
|
||||
|
||||
Reference in New Issue
Block a user