import React, { useEffect, useState, useCallback, useContext, useRef } from 'react'; import { Link, router, useLocalSearchParams, useNavigation, useFocusEffect } from 'expo-router'; import { Image as RNImage, StyleSheet, useWindowDimensions, ScrollView, Pressable, RefreshControl, Platform } from 'react-native'; import { SafeAreaView } from 'react-native-safe-area-context'; import { Icon, MD3Colors, Button, Text, TextInput, TouchableRipple } from 'react-native-paper'; import CircularProgress from 'react-native-circular-progress-indicator'; import { ActivityIndicator } from 'react-native-paper'; import uuid from 'react-native-uuid'; import Toast from 'react-native-toast-message'; import { View, AnimatePresence } from 'moti'; import * as Clipboard from 'expo-clipboard'; import * as FileSystem from 'expo-file-system'; import NetInfo from "@react-native-community/netinfo"; import JSZip from 'jszip'; import ChapterStorage from '@/constants/module/chapter_storage'; import Image from '@/components/Image'; import {CONTEXT} from '@/constants/module/context'; import {blobToBase64, base64ToBlob} from "@/constants/module/file_manager"; import Theme from '@/constants/theme'; const ChapterImage = ({item, zoom, showOptions,setShowOptions}:any)=>{ const SOURCE = useLocalSearchParams().source; const COMIC_ID = useLocalSearchParams().comic_id; const CHAPTER_IDX = Number(useLocalSearchParams().chapter_idx as string); const Dimensions = useWindowDimensions(); const {showMenuContext, setShowMenuContext}:any = useContext(CONTEXT) const {themeTypeContext, setThemeTypeContext}:any = useContext(CONTEXT) const {showCloudflareTurnstileContext, setShowCloudflareTurnstileContext}:any = useContext(CONTEXT) return ( {setShowOptions({type:"general",state:!showOptions.state})}} style={{ display:"flex", width:"100%", height:"auto", alignItems:"center", }} > {item.type === "image" && ( 720 ? 0.8 * Dimensions.width * (1 - zoom / 100) : `${100 - zoom}%`, aspectRatio: item.layout.width / item.layout.height, }} onLoadEnd={()=>{ // console.log("CLEANED") // delete images.current[image_key] }} /> )} {item.type === "chapter-info-banner" && ( 720 ? 0.8 * Dimensions.width * (1 - zoom / 100) : `${100 - zoom}%`, height:"auto", backgroundColor:"black", padding:16, }} > End: {item.value.last} Next: {item.value.next} )} {item.type === "no-chapter-banner" && ( 720 ? 0.8 * Dimensions.width * (1 - zoom / 100) : `${100 - zoom}%`, height:"auto", backgroundColor:"black", padding:16, }} > No more available chapters on local. You can go back and download more. )} ) } export default ChapterImage