import {
faArrowLeft,
faDeleteLeft,
faTrash,
} from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-native-fontawesome";
import { createMaterialTopTabNavigator } from "@react-navigation/material-top-tabs";
import { useIsFocused, useNavigation } from "@react-navigation/native";
import React, { useEffect, useState } from "react";
import {
Dimensions,
StyleSheet,
Text,
TouchableOpacity,
View,
} from "react-native";
import MasonryList from "@react-native-seoul/masonry-list";
import ProductCard from "../../components/profile/my-favorite/ProductCard";
import ShopCard from "../../components/profile/my-favorite/ShopCard";
import { favorite } from "../../constants/favorites";
import Checkbox from "expo-checkbox";
// import { products } from "../../constants/product";
const Tab = createMaterialTopTabNavigator();
import Modal from "react-native-modal";
import DeleteConfirmationModal from "../../components/DeleteConfirmationModal";
import AsyncStorage from "@react-native-async-storage/async-storage";
import {
get_customer,
update_customer,
} from "../../services/api/controllers/customers";
function Products({ route }) {
const { products } = route.params;
const [prodLike, setprodLike] = useState([]);
const [all, setall] = useState(false);
const [product, setproduct] = useState(products ?? []);
const isFocused = useIsFocused();
console.log(products + "ey");
// console.log(prodLike);
const [isModalVisible, setModalVisible] = useState(false);
const [user, setuser] = useState([]);
const [error, seterror] = useState([]);
const [liked, setliked] = useState([]);
const [load, setload] = useState(false);
// useEffect(() => {
// // setrefresh(isrefresh);
// AsyncStorage.getItem("userData")
// .then((pass) => {
// // console.log("mm "+pass._id);
// const userDataArray = JSON.parse(pass);
// setuser(userDataArray);
// get_customer({ id: userDataArray[0]?._id })
// .then((result) => {
// // console.log(result.data);
// if (result.error) {
// seterror(result.error);
// } else {
// // const exists = result?.data?.favorites?.some((prod) => prod._id === product?._id);
// // console.log( exists)
// // if (exists) {
// // console.log( "heyyyy")
// // setisLiked(true);
// // }
// setliked(result?.data?.favorites);
// setproduct(result?.data?.favorites.products);
// setload(true);
// }
// })
// .catch((error) => {
// // setError(error.message);
// console.log(error.message);
// })
// .finally(() => {
// // setprodIsLoading(false); // Set loading to false when done loading
// });
// })
// .catch((error) => {
// console.log(error + "weeewwww");
// });
// // console.log("get cutomer add :" + user[0]?.login_id);
// }, []);
useEffect(() => {
// setrefresh(isrefresh);
AsyncStorage.getItem("userData")
.then((pass) => {
// console.log("mm "+pass._id);
const userDataArray = JSON.parse(pass);
setuser(userDataArray);
get_customer({ id: userDataArray[0]?._id })
.then((result) => {
// console.log(result.data);
if (result.error) {
seterror(result.error);
} else {
// const exists = result?.data?.favorites?.some((prod) => prod._id === product?._id);
// console.log( exists)
// if (exists) {
// console.log( "heyyyy")
// setisLiked(true);
// }
setliked(result?.data?.favorites);
setproduct(result?.data?.favorites.products?.reverse());
setload(true);
}
})
.catch((error) => {
// setError(error.message);
console.log(error.message);
})
.finally(() => {
// setprodIsLoading(false); // Set loading to false when done loading
});
})
.catch((error) => {
console.log(error + "weeewwww");
});
// console.log("get cutomer add :" + user[0]?.login_id);
}, [isFocused]);
const toggleModal = () => {
setModalVisible(!isModalVisible);
};
const likeClick = (e) => {
setprodLike((prevLikes) => {
// Check if e is already included in prodLike
if (prevLikes.includes(e) && e != "all") {
// If e is already in the array, remove it
return prevLikes.filter((item) => item !== e);
} else {
// If e is not in the array, add it to the beginning
return [e, ...prevLikes];
}
});
};
const deleteItem = () => {
toggleModal();
if (all === true) {
setproduct([]);
// const updatedFavorites = liked.map((favorite) => {
// const updatedProduct = [];
// return { ...favorite, products: updatedProduct };
// });
update_customer({
id: user[0]._id,
body: {
favorites: {
products: [],
vendors: liked?.vendors,
},
},
})
.then((result) => {
console.log(result.data);
if (result.error) {
seterror(result.error);
} else {
setliked(result?.data?.favorites);
}
})
.catch((error) => {
// setError(error.message);
console.log(error.message);
})
.finally(() => {
// setprodIsLoading(false); // Set loading to false when done loading
});
setall(false);
} else {
// const updatedFavorites = liked.map((favorite) => {
const updatedProduct = liked.products.filter(
(item, index) => !prodLike.includes(index)
);
// return { ...favorite, products: updatedProduct };
// });
update_customer({
id: user[0]._id,
body: {
favorites: {
products: updatedProduct,
vendors: liked.vendors,
},
},
})
.then((result) => {
console.log(result.data);
if (result.error) {
seterror(result.error);
} else {
setliked(result?.data?.favorites);
}
})
.catch((error) => {
// setError(error.message);
console.log(error.message);
})
.finally(() => {
// setprodIsLoading(false); // Set loading to false when done loading
});
setproduct((prevProduct) => {
// Filter the 'prevProduct' array to exclude items with indices in 'prodLike'
const updatedProduct = prevProduct.filter(
(item, index) => !prodLike.includes(index)
);
return updatedProduct;
});
setprodLike([]);
}
};
return (
setall((prev) => !prev)} />
{
toggleModal();
}}
>
{product ? (
item.id}
style={styles.list}
numColumns={2}
showsVerticalScrollIndicator={false}
renderItem={({ item, i }) => (
)}
containerStyle={styles.container1}
contentContainerStyle={styles.content}
onEndReachedThreshold={0.1}
/>
) : null}
);
}
function Vendors({ route }) {
const { shops, prods } = route.params;
const [prodLike, setprodLike] = useState([]);
const [all, setall] = useState(false);
const [shopProd, setshopProd] = useState([]);
const isFocused = useIsFocused();
const [product, setproduct] = useState(shops ?? []);
const [isModalVisible, setModalVisible] = useState(false);
const [user, setuser] = useState([]);
const [error, seterror] = useState([]);
const [liked, setliked] = useState([]);
const [load, setload] = useState(false);
const toggleModal = () => {
setModalVisible(!isModalVisible);
};
console.log(prodLike);
// useEffect(() => {
// // setrefresh(isrefresh);
// AsyncStorage.getItem("userData")
// .then((pass) => {
// // console.log("mm "+pass._id);
// const userDataArray = JSON.parse(pass);
// setuser(userDataArray);
// get_customer({ id: userDataArray[0]?._id })
// .then((result) => {
// // console.log(result.data);
// if (result.error) {
// seterror(result.error);
// } else {
// setliked(result?.data?.favorites);
// setload(true);
// }
// })
// .catch((error) => {
// // setError(error.message);
// console.log(error.message);
// })
// .finally(() => {
// // setprodIsLoading(false); // Set loading to false when done loading
// });
// })
// .catch((error) => {
// console.log(error + "weeewwww");
// });
// // console.log("get cutomer add :" + user[0]?.login_id);
// }, []);
useEffect(() => {
// setrefresh(isrefresh);
AsyncStorage.getItem("userData")
.then((pass) => {
// console.log("mm "+pass._id);
const userDataArray = JSON.parse(pass);
setuser(userDataArray);
get_customer({ id: userDataArray[0]?._id })
.then((result) => {
// console.log(result.data);
if (result.error) {
seterror(result.error);
} else {
setliked(result?.data?.favorites);
setproduct(result?.data?.favorites.vendors?.reverse());
setload(true);
}
})
.catch((error) => {
// setError(error.message);
console.log(error.message);
})
.finally(() => {
// setprodIsLoading(false); // Set loading to false when done loading
});
})
.catch((error) => {
console.log(error + "weeewwww");
});
// console.log("get cutomer add :" + user[0]?.login_id);
}, [isFocused]);
const likeClick = (e) => {
setprodLike((prevLikes) => {
// Check if e is already included in prodLike
if (prevLikes.includes(e) && e != "all") {
// If e is already in the array, remove it
return prevLikes.filter((item) => item !== e);
} else {
// If e is not in the array, add it to the beginning
return [e, ...prevLikes];
}
});
};
const deleteItem = () => {
toggleModal();
if (all === true) {
setproduct([]);
// const updatedFavorites = liked.map((favorite) => {
// const updatedProduct = [];
// return { ...favorite, vendors: updatedProduct };
// });
update_customer({
id: user[0]._id,
body: {
favorites: {
products: liked.products,
vendors: [],
},
},
})
.then((result) => {
console.log(result.data);
if (result.error) {
seterror(result.error);
} else {
setliked(result?.data?.favorites);
}
})
.catch((error) => {
// setError(error.message);
console.log(error.message);
})
.finally(() => {
// setprodIsLoading(false); // Set loading to false when done loading
});
setall(false);
} else {
// const updatedFavorites = liked.map((favorite) => {
const updatedProduct = liked.vendors.filter(
(item, index) => !prodLike.includes(index)
);
// return { ...favorite, vendors: updatedProduct };
// });
update_customer({
id: user[0]._id,
body: {
favorites: {
products: liked.products,
vendors: updatedProduct,
},
},
})
.then((result) => {
console.log(result.data);
if (result.error) {
seterror(result.error);
} else {
setliked(result?.data?.favorites);
}
})
.catch((error) => {
// setError(error.message);
console.log(error.message);
})
.finally(() => {
// setprodIsLoading(false); // Set loading to false when done loading
});
setproduct((prevProduct) => {
// Filter the 'prevProduct' array to exclude items with indices in 'prodLike'
const updatedProduct = prevProduct.filter(
(item, index) => !prodLike.includes(index)
);
return updatedProduct;
});
setprodLike([]);
}
};
return (
setall((prev) => !prev)} />
{
toggleModal();
}}
>
{shops ? (
item.id}
style={styles.list}
numColumns={1}
showsVerticalScrollIndicator={false}
renderItem={({ item, i }) => (
)}
containerStyle={styles.container1}
contentContainerStyle={styles.content}
onEndReachedThreshold={0.1}
/>
) : null}
);
}
const MyFavorites = ({ prod }) => {
const navigation = useNavigation();
const [shopProd, setshopProd] = useState([]);
// const products = favorite?.find((item) => item.type === "products")?.contents;
const shops = favorite?.find((item) => item.type === "vendors")?.contents;
const [user, setuser] = useState([]);
const [error, seterror] = useState([]);
const [liked, setliked] = useState([]);
const [load, setload] = useState(false);
useEffect(() => {
// setrefresh(isrefresh);
AsyncStorage.getItem("userData")
.then((pass) => {
// console.log("mm "+pass._id);
const userDataArray = JSON.parse(pass);
// console.log(pass)
setuser(userDataArray);
get_customer({ id: userDataArray[0]?._id })
.then((result) => {
// console.log(result.data);
if (result.error) {
seterror(result.error);
} else {
// const exists = result?.data?.favorites?.some((prod) => prod._id === product?._id);
// console.log( exists)
// if (exists) {
// console.log( "heyyyy")
// setisLiked(true);
// }
setliked(result?.data?.favorites);
// console.log(result.data.favorites);
// console.log(result?.data?.favorites?.products);
setload(true);
}
})
.catch((error) => {
// setError(error.message);
console.log(error.message);
})
.finally(() => {
// setprodIsLoading(false); // Set loading to false when done loading
});
})
.catch((error) => {
console.log(error + "weeewwww");
});
// console.log("get cutomer add :" + user[0]?.login_id);
}, []);
// console.log(liked[0]?.products+"added")
const revereseProd = liked?.products?.reverse();
return (
navigation.navigate("Home")}
style={styles.backIcon}
>
My Favorite
{load ? (
) : null}
);
};
const styles = StyleSheet.create({
container: {
backgroundColor: "#ffff",
width: "100%",
height: "100%",
},
wrapper: {
height: "95%",
width: "100%",
justifyContent: "center",
// alignItems:'center'
marginBottom: 20,
},
header: {
alignItems: "center",
width: "100%",
top: 0,
paddingLeft: 15,
flexDirection: "row",
borderColor: "#ddd",
paddingBottom: 15,
borderBottomWidth: 1,
},
headerText: {
fontSize: 16,
fontWeight: "600",
marginLeft: 25,
},
tabCon: {
width: "100%",
height: "100%",
},
actions: {
flexDirection: "row",
justifyContent: "space-between",
alignItems: "center",
padding: 10,
},
list: {
width: "100%",
justifyContent: "center",
alignItems: "center",
padding: 5,
},
list: {
width: "100%",
},
content: {
width: "100%",
alignItems: "center",
justifyContent: "center",
},
buttons: {
position: "absolute",
flexDirection: "row",
bottom: 0,
},
btnCancel: {
color: "#ff0000",
padding: 10,
},
btnCancelText: {
color: "#ff0000",
padding: 10,
},
btnConfirm: {
color: "#ff0000",
padding: 10,
},
btnConfirmText: {
color: "#001aff",
padding: 10,
},
});
export default MyFavorites;