import Clipboard from '@react-native-clipboard/clipboard';
import { useQuery } from '@tanstack/react-query';
import { authApi } from 'api/auth';
import React from 'react';
import { useTranslation } from 'react-i18next';
import {
  Alert,
  FlatList,
  StyleSheet,
  Text,
  TouchableOpacity,
  useWindowDimensions,
  View,
} from 'react-native';
import Toast from 'react-native-toast-message';
import AntDesign from 'react-native-vector-icons/AntDesign';
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: '510440',
      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') {
      const textToCopy = info.join('\n');
      Clipboard.setString(textToCopy);
      Toast.show({
        type: 'success',
        text1: t('Nusxa olingan'),
        text2: t('Avia 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,
      });
    }
  };

  return (
    <FlatList
      data={addressList}
      horizontal
      keyExtractor={item => item.id.toString()}
      pagingEnabled
      showsHorizontalScrollIndicator={false}
      snapToInterval={cardWidth + 10} // +10: marginRight
      decelerationRate="fast"
      renderItem={({ item, index }) => {
        const isLast = index === addressList.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}>{item.title}</Text>
            </View>
            <View style={styles.infoId}>
              <View style={{ gap: 4 * scale }}>
                {item.addressInfo.map((line, idx) => (
                  <Text key={idx} style={styles.infoText}>
                    {line}
                  </Text>
                ))}
              </View>
              <TouchableOpacity onPress={() => handleCopy(item.addressInfo)}>
                <Copy color="#28A7E8" width={24 * scale} height={24 * scale} />
              </TouchableOpacity>
            </View>
            <View style={styles.postCodeWrapper}>
              <Text style={styles.postCodeText}>{t('Avia post kodi')}: </Text>
              <Text style={styles.postCode}>{item.postCode}</Text>
              <TouchableOpacity
                onPress={() => {
                  Clipboard.setString(item.postCode);
                  Alert.alert(t('Nusxa olindi'), t('Pochta kodi nusxalandi!'));
                }}
                style={{ marginLeft: 4 * scale }}
              >
                <AntDesign
                  name="pushpin"
                  color="red"
                  size={16 * scale}
                  style={{ transform: [{ rotateY: '180deg' }] }}
                />
              </TouchableOpacity>
            </View>
          </View>
        );
      }}
    />
  );
};

const makeStyles = (scale: number, cardWidth: number, screenWidth: number) =>
  StyleSheet.create({
    container: {
      height: 200,
      width: '95%',
      backgroundColor: '#28a8e82c',
      margin: 'auto',
      marginTop: 20,
      borderRadius: 12,
      padding: 12,
      gap: 10,
    },
    scrollContainer: {
      marginTop: 20,
      paddingHorizontal: (screenWidth - cardWidth) / 2,
    },
    postCodeWrapper: {
      flexDirection: 'row',
      alignItems: 'center',
    },
    card: {
      height: 220 * scale,
      width: cardWidth,
      backgroundColor: '#28a8e82c',
      borderRadius: 12 * scale,
      padding: 15 * scale,
      gap: 10 * scale,
    },
    titleCard: {
      flexDirection: 'row',
      gap: 8,
      alignItems: 'center',
    },
    title: {
      fontSize: 20,
      fontWeight: '600',
      color: '#101623CC',
    },
    infoId: {
      flexDirection: 'row',
      justifyContent: 'space-between',
    },
    infoText: {
      fontSize: 16,
      color: '#28A7E8',
    },
    postCodeText: {
      fontSize: 16,
      color: '#000000',
      fontWeight: '500',
    },
    postCode: {
      fontSize: 16,
      color: '#28A7E8',
      fontWeight: '400',
    },
  });

export default TabsAviaWarehouses;
