import Express_diagnistika from '@/assets/images/Express_diagnistika.png'; import { useTheme } from '@/components/ThemeContext'; import { useQuery, useQueryClient } from '@tanstack/react-query'; import { Image } from 'expo-image'; import { router } from 'expo-router'; import { ChevronLeft, XIcon } from 'lucide-react-native'; import React, { useRef, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { ActivityIndicator, FlatList, Modal, Text, TouchableOpacity, View } from 'react-native'; import { RefreshControl } from 'react-native-gesture-handler'; import { SafeAreaView } from 'react-native-safe-area-context'; import { WebView } from 'react-native-webview'; import { eservices_api } from '../lib/api'; const dark = { bg: '#0f172a', card: '#1f2937', border: '#1e293b', muted: '#334155', text: '#f8fafc', subText: '#cbd5f5', }; export default function EServicesCategoryScreen() { const { isDark } = useTheme(); const { t } = useTranslation(); const [modalVisible, setModalVisible] = useState(false); const webviewRef = useRef(null); const [webUrl, setWebUrl] = React.useState(null); const [refreshing, setRefreshing] = useState(false); const queryClient = useQueryClient(); const { data, isLoading } = useQuery({ queryKey: ['goverment_category'], queryFn: () => eservices_api.category(), }); const onRefresh = async () => { setRefreshing(true); try { await queryClient.refetchQueries({ queryKey: ['goverment_category'] }); } finally { setRefreshing(false); } }; if (isLoading) { return ( ); } const staticCategory = { id: 0, name: 'Express Diagnostika', image: Express_diagnistika, url: 'https://myorg.uz/ru', }; const categories = [staticCategory, ...(data?.data?.data?.results ?? [])]; const handlePress = (item: any) => { if (item.id === 0 && item.url) { setWebUrl(item.url); setModalVisible(true); return; } router.push({ pathname: '/(dashboard)/e-service/e-services-category', params: { categoryId: item.id, categoryName: item.name, }, }); }; return ( `${item.id}-${item.name}`} contentContainerStyle={{ gap: 12 }} refreshControl={ } ListHeaderComponent={() => ( {t('Davlat xizmatlari kategoriyalari')} {t('Kerakli xizmat turini tanlang')} )} renderItem={({ item }) => ( handlePress(item)} style={{ backgroundColor: isDark ? dark.card : '#ffffff', padding: 14, borderRadius: 16, flexDirection: 'row', alignItems: 'center', borderWidth: isDark ? 1 : 0, borderColor: isDark ? dark.border : 'transparent', }} > {item.image ? ( ) : ( {item.name[0]} )} {item.name} {item.id === 0 && ( Tezkor va qulay xizmat )} )} /> {/* WebView Header */} webviewRef.current?.goBack()} hitSlop={{ top: 10, bottom: 10, left: 10, right: 10 }} > {webUrl} setModalVisible(false)} hitSlop={{ top: 10, bottom: 10, left: 10, right: 10 }} > {/* WebView */} {webUrl && ( { // iOS va Android uchun barcha URLlarni WebView ichida ochish return true; }} source={{ uri: webUrl }} style={{ flex: 1, backgroundColor: isDark ? '#0f172a' : '#f8fafc' }} startInLoadingState renderLoading={() => ( )} /> )} ); }