From 7fa4d20da009776a08605ce12e581008c923a499 Mon Sep 17 00:00:00 2001 From: CrissZollo Date: Mon, 29 Sep 2025 21:16:05 +0200 Subject: [PATCH] Fix for mark as watched disappearing on restart --- src/components/home/ContentItem.tsx | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/components/home/ContentItem.tsx b/src/components/home/ContentItem.tsx index a63dd2c4..86eb7769 100644 --- a/src/components/home/ContentItem.tsx +++ b/src/components/home/ContentItem.tsx @@ -6,6 +6,7 @@ import { useTheme } from '../../contexts/ThemeContext'; import { useSettings } from '../../hooks/useSettings'; import { catalogService, StreamingContent } from '../../services/catalogService'; import { DropUpMenu } from './DropUpMenu'; +import AsyncStorage from '@react-native-async-storage/async-storage'; interface ContentItemProps { item: StreamingContent; @@ -70,6 +71,12 @@ const ContentItem = ({ item, onPress, shouldLoadImage: shouldLoadImageProp, defe }); return () => unsubscribe(); }, [item.id, item.type]); + + // Load watched state from AsyncStorage when item changes + useEffect(() => { + AsyncStorage.getItem(`watched_${item.id}`).then(val => setIsWatched(val === 'true')); + }, [item.id]); + const [menuVisible, setMenuVisible] = useState(false); const [isWatched, setIsWatched] = useState(false); const [imageLoaded, setImageLoaded] = useState(false); @@ -111,9 +118,15 @@ const ContentItem = ({ item, onPress, shouldLoadImage: shouldLoadImageProp, defe catalogService.addToLibrary(item); } break; - case 'watched': - setIsWatched(prev => !prev); + case 'watched': { + setIsWatched(prevWatched => { + const newWatched = !prevWatched; + AsyncStorage.setItem(`watched_${item.id}`, newWatched ? 'true' : 'false'); + return newWatched; + }); + setMenuVisible(false); break; + } case 'playlist': break; case 'share':