Привет всем, я рад сообщить, что я достиг 100-го дня моего челленджа #100DaysOfCode! 🎉 Это было невероятное путешествие, и я готов приступить к своему следующему вызову, #365DaysOfCode. Приготовьтесь к новым приключениям в области кодирования!

Прежде всего, я хочу выразить благодарность всем, кто поддерживал меня на протяжении всего этого испытания. Ваша поддержка и позитивная энергия поддерживали меня мотивацией, даже когда дела шли плохо. Это путешествие не всегда было легким, но я выстоял и вырос как программист и как личность (да, я знаю, это звучит банально).

По мере продвижения вперед я решил больше сосредоточиться на достижении важных вех, прежде чем делиться новостями о моем текущем проекте. Это означает более глубокое погружение в процесс разработки, оттачивание навыков и получение высококачественных результатов. Хотя строительство на публике было отличным внешним мотиватором, я обнаружил, что больше руководствуюсь внутренними мотивами. Поэтому вместо ежедневных обновлений я буду делиться своим прогрессом, когда произойдут значительные прорывы.

Говоря о проектах, тот, над которым я работал, мое первое серьезное начинание, все еще в процессе. Я начал его с основной целью отточить свои навыки программирования, и я полон решимости довести его до конца. Попутно я продолжу заниматься другими интересными проектами, каждый из которых подталкивает меня к обучению и росту. Будьте уверены, я продолжу делиться своим путешествием и проектами со всеми вами, моя замечательная аудитория.

Еще раз спасибо, что присоединились ко мне в этом приключении #100DaysOfCode. Для меня было честью иметь тебя рядом со мной.

Сегодня я работал над кнопками «Нравится», «Не нравится» и «Отменить». Вот часть кода, который я написал сегодня:

  // dislike button clicked

  useEffect(() => {
    if (dislikeClicked) {
      async function handleDislike() {
        try {
          if (!activeSwipe) return;

          const likedFreelancerIds =
            filteredNotLikedFreelancers[currentIndex]?.user_id;
          setLastDirection('down');
          updateCurrentIndex(currentIndex - 1);
          setSwipedCards((prevSwipedCards) =>[
            ...prevSwipedCards, 
            { index: currentIndex, freelancerId: likedFreelancerIds }
          ])
        } catch (error) {
          console.log(error);
        }
      }
      handleDislike();
      setDislikeClicked(false);
    }
  }, [dislikeClicked]);

  // like button clicked

  useEffect(() =>{
    if(likeClicked) {
      async function handleLike() {
        try {
          if (!activeSwipe) return;

          const likedFreelancerIds = filteredNotLikedFreelancers[currentIndex]?.user_id;
          await functionLikeFreelancer(likedFreelancerIds);
          setLastDirection('up');
          updateCurrentIndex(currentIndex - 1);
          setSwipedCards((prevSwipedCards) => [
            ...prevSwipedCards, 
            { index: currentIndex, freelancerId: likedFreelancerIds }
          ])

        } catch(error) {
          console.log(error)
        }
      }

      handleLike();
      setLikeClicked(false);
    }
  }, [likeClicked])


  // the undo button is clicked

  useEffect(() => {
    if (undoClicked) {
      async function undo() {
        try {
          if (!activeUndo || swipedCards.length === 0) return;

          const lastSwipedCard = swipedCards[swipedCards.length - 1];
          setSwipedCards(swipedCards.slice(0, -1));
          updateCurrentIndex(lastSwipedCard.index);

          const response = await axios.patch("/removeLikedFreelancers", {
            userId,
            freelancerId: lastSwipedCard.freelancerId,
          });
          const updatedUserConnects = response.data.client_connects;
          setUpdatedConnects(updatedUserConnects);
          window.location.reload();
        } catch (err) {
          console.log("err", err);
        }
      }
      undo();
      setUndoClicked(false);
    }
  }, [undoClicked, swipedCards]);