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>
26 lines
892 B
TypeScript
26 lines
892 B
TypeScript
import type { BaseItemDto } from "@jellyfin/sdk/lib/generated-client/models";
|
|
import { useHaptic } from "./useHaptic";
|
|
import { usePlaybackManager } from "./usePlaybackManager";
|
|
import { useInvalidatePlaybackProgressCache } from "./useRevalidatePlaybackProgressCache";
|
|
|
|
export const useMarkAsPlayed = (items: BaseItemDto[]) => {
|
|
const lightHapticFeedback = useHaptic("light");
|
|
const { markItemPlayed, markItemUnplayed } = usePlaybackManager();
|
|
const invalidatePlaybackProgressCache = useInvalidatePlaybackProgressCache();
|
|
|
|
const toggle = async (played: boolean) => {
|
|
lightHapticFeedback();
|
|
// Process all items
|
|
await Promise.all(
|
|
items.map((item) => {
|
|
if (!item.Id) return Promise.resolve();
|
|
return played ? markItemPlayed(item.Id) : markItemUnplayed(item.Id);
|
|
}),
|
|
);
|
|
|
|
await invalidatePlaybackProgressCache();
|
|
};
|
|
|
|
return toggle;
|
|
};
|