Spaces:
Running
Running
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 ( | |
<Pressable | |
onPress={()=>{setShowOptions({type:"general",state:!showOptions.state})}} | |
style={{ | |
display:"flex", | |
width:"100%", | |
height:"auto", | |
alignItems:"center", | |
}} | |
> | |
{item.type === "image" && ( | |
<Image source={{type:"base64",data:item.image_data}} | |
contentFit="contain" | |
style={{ | |
width:Dimensions.width > 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" && ( | |
<View | |
style={{ | |
display:"flex", | |
flexDirection:"column", | |
alignItems:"center", | |
gap:12, | |
width:Dimensions.width > 720 | |
? 0.8 * Dimensions.width * (1 - zoom / 100) | |
: `${100 - zoom}%`, | |
height:"auto", | |
backgroundColor:"black", | |
padding:16, | |
}} | |
> | |
<Text selectable={false} | |
numberOfLines={1} | |
style={{ | |
color:Theme[themeTypeContext].text_color, | |
fontSize:(0.03 * ((Dimensions.width+Dimensions.height)/2)) * (1 - zoom/100), | |
fontFamily:"roboto-bold", | |
}} | |
> | |
End: {item.value.last} | |
</Text> | |
<Text selectable={false} | |
numberOfLines={1} | |
style={{ | |
color:Theme[themeTypeContext].text_color, | |
fontSize:(0.03 * ((Dimensions.width+Dimensions.height)/2)) * (1 - zoom/100), | |
fontFamily:"roboto-bold", | |
}} | |
> | |
Next: {item.value.next} | |
</Text> | |
</View> | |
)} | |
{item.type === "no-chapter-banner" && ( | |
<View | |
style={{ | |
display:"flex", | |
flexDirection:"column", | |
alignItems:"center", | |
gap:12, | |
width:Dimensions.width > 720 | |
? 0.8 * Dimensions.width * (1 - zoom / 100) | |
: `${100 - zoom}%`, | |
height:"auto", | |
backgroundColor:"black", | |
padding:16, | |
}} | |
> | |
<Text selectable={false} | |
numberOfLines={1} | |
style={{ | |
color:Theme[themeTypeContext].text_color, | |
fontSize:(0.03 * ((Dimensions.width+Dimensions.height)/2)) * (1 - zoom/100), | |
fontFamily:"roboto-bold", | |
}} | |
> | |
No more available chapters on local. | |
</Text> | |
<Text selectable={false} | |
numberOfLines={1} | |
style={{ | |
color:Theme[themeTypeContext].text_color, | |
fontSize:(0.03 * ((Dimensions.width+Dimensions.height)/2)) * (1 - zoom/100), | |
fontFamily:"roboto-bold", | |
}} | |
> | |
You can go back and download more. | |
</Text> | |
</View> | |
)} | |
</Pressable>) | |
} | |
export default ChapterImage |