import Clipboard from '@react-native-clipboard/clipboard';
import { useQuery } from '@tanstack/react-query';
import { authApi } from 'api/auth';
import warhouses_api from 'api/warhouses';
import React from 'react';
import { useTranslation } from 'react-i18next';
import {
  FlatList,
  StyleSheet,
  Text,
  TouchableOpacity,
  useWindowDimensions,
  View,
} from 'react-native';
import Toast from 'react-native-toast-message';
import Copy from 'svg/Copy';
import Kitay from 'svg/Ki';

const TabsAviaWarehouses = () => {
  const { data: getMe, isLoading: getMeLoad } = useQuery({
    queryKey: ['getMe'],
    queryFn: authApi.getMe,
  });

  const addressList = [
    {
      id: 1,
      title: 'China (Avia)',
      postCode: ' 101399',
      addressInfo: [
        `收货人: ${getMe?.aviaCargoId}`,
        '手机号码: 18335530701',
        '北京市顺义区南法信旭辉空港中心C座',
        `1004 ${getMe?.aviaCargoId}`,
      ],
    },
    // {
    //   id: 2,
    //   title: 'Korea (Avia)',
    //   postCode: '510440',
    //   addressInfo: [
    //     '收货人: M312',
    //     '手机号码: 18335530701',
    //     '北京市顺义区南法信旭辉空港中心C座',
    //     '1004 N209',
    //   ],
    // },
  ];

  const { width: screenWidth } = useWindowDimensions();
  const scale = screenWidth < 360 ? 0.85 : 1;
  const cardWidth = screenWidth * 0.95;
  const styles = makeStyles(scale, cardWidth, screenWidth);
  const { t } = useTranslation();

  const handleCopy = (info: string[]) => {
    if (getMe?.status === 'ACTIVE') {
      Clipboard.setString(info.join('\n'));
      Toast.show({
        type: 'success',
        text1: t('Nusxa olingan'),
        text2: t('Avto manzili nusxalandi!'),
        position: 'top',
        visibilityTime: 2000,
      });
    } else {
      Toast.show({
        type: 'error',
        text1: t('Xatolik yuz berdi!'),
        text2: t('Akkaunt faol emas!'),
        position: 'top',
        visibilityTime: 2000,
      });
    }
  };

  const { data } = useQuery({
    queryKey: ['warhouses'],
    queryFn: () => warhouses_api.getWarhouses({ cargoType: 'AVIA' }),
  });

  const formattedData =
    data?.map((item: string | null) => {
      if (!item) return '';

      const withAutoCargo = item.replace('%s', getMe?.autoCargoId || '');

      const withAviaCargo = withAutoCargo.replace(
        '%s',
        getMe?.aviaCargoId || '',
      );

      return withAviaCargo;
    }) || [];

  return (
    <FlatList
      data={formattedData}
      horizontal
      keyExtractor={(_, index) => index.toString()}
      pagingEnabled
      showsHorizontalScrollIndicator={false}
      snapToInterval={cardWidth + 10}
      decelerationRate="fast"
      renderItem={({ item, index }) => {
        const isLast = index === formattedData.length - 1;
        return (
          <View style={[styles.card, { marginRight: isLast ? 0 : 10 }]}>
            <View style={styles.titleCard}>
              <Kitay width={24 * scale} height={24 * scale} />
              <Text style={styles.title}>China (Auto)</Text>
            </View>
            <View style={styles.infoId}>
              <View style={{ gap: 4 * scale, width: '90%' }}>
                <Text style={styles.infoText}>{item}</Text>
              </View>
              <TouchableOpacity onPress={() => handleCopy(item.addressInfo)}>
                <Copy color="#28A7E8" width={24 * scale} height={24 * scale} />
              </TouchableOpacity>
            </View>
          </View>
        );
      }}
    />
  );
};

const makeStyles = (scale: number, cardWidth: number, screenWidth: number) =>
  StyleSheet.create({
    card: {
      width: cardWidth,
      backgroundColor: '#28a8e82c',
      borderRadius: 12 * scale,
      padding: 15 * scale,
      gap: 10 * scale,
    },
    titleCard: {
      flexDirection: 'row',
      gap: 8 * scale,
      alignItems: 'center',
    },
    title: {
      fontSize: 20 * scale,
      fontWeight: '600',
      color: '#101623CC',
    },
    infoId: {
      flexDirection: 'row',
      justifyContent: 'space-between',
      marginVertical: 8 * scale,
    },
    infoText: {
      fontSize: 16 * scale,
      color: '#28A7E8',
    },
    postCodeWrapper: {
      flexDirection: 'row',
      alignItems: 'center',
    },
    postCodeText: {
      fontSize: 16 * scale,
      color: '#000000',
      fontWeight: '500',
    },
    postCode: {
      fontSize: 16 * scale,
      color: '#28A7E8',
      fontWeight: '400',
      marginLeft: 4 * scale,
    },
  });

export default TabsAviaWarehouses;
