You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1021 B

1 year ago
1 year ago
1 year ago
  1. import { useRef } from "react";
  2. import { set_like } from "~/api";
  3. import store from "~/store";
  4. import { MarketNFTData } from "~/types/store";
  5. const useLike = () => {
  6. const throttle = useRef(false)
  7. /**
  8. * @description NFT
  9. * @param id nftid
  10. * 1. 2.
  11. */
  12. const setLike = async (id: number) => {
  13. if (!store.state.token) return store.setVisibleUnLogin(true);
  14. if(throttle.current)return
  15. throttle.current = true
  16. let item = store.state.likeNft.find((v) => v.id === id);
  17. let status = item ? 2 : 1;
  18. let res: any = await set_like(id, status);
  19. throttle.current = false
  20. if (res && res.code === 0) {
  21. store.getMyNft("likeNft");
  22. }
  23. };
  24. /**
  25. * NFt
  26. */
  27. const isLike = (id: number, likeNft: MarketNFTData[]) => {
  28. const item = likeNft.find((v) => v.id === id);
  29. if (item) return true;
  30. return false;
  31. };
  32. return {
  33. setLike,
  34. isLike,
  35. };
  36. };
  37. export default useLike;