Untitled

 avatar
unknown
javascript
2 years ago
1.9 kB
7
Indexable
const SkillPicker = ({
  // feed,
  skillsTitle,
  learningSkills,
  tabs,
  type,
  callbackText,
  trendingSkills,
  callback
}) => {
  const [activeSkill, setActiveSkill] = useState(null);
  const [activeSkillId, setActiveSkillId] = useState(null);
  const [activeTab, setActiveTab] = useState(null);
  const [feed, setFeed] = useState([]);
  const [loading, setLoading] = useState(false);

  // update active skill when props changes
  useEffect(() => {
    if (learningSkills && learningSkills.length > 0) {
      setActiveSkill(learningSkills[0].skill);
      setActiveSkillId(learningSkills[0].skill.id);
    } else if (trendingSkills && trendingSkills.length > 0) {
      const skill = {
        id: trendingSkills[0].id,
        name: trendingSkills[0].name,
        category: trendingSkills[0].category
      };
      setActiveSkill(skill);
      setActiveSkillId(trendingSkills[0].id);
    }
  }, [learningSkills, trendingSkills]);

  // update active tab when props changes
  useEffect(() => {
    if (tabs) {
      setActiveTab(tabs[0]);
    }
  }, [tabs]);

  // fetch dashboard data
  const fetchDashboardData = async skill_id => {
    setLoading(true);
    const feed_data = await fetch(`/api/core/dashboard_data/${skill_id}`, {
      method: "GET"
    }).then(res => res.json());

    if (feed_data) {
      setFeed(feed_data.results);
      setLoading(false);
    }
  };

  // change skill
  const changeTrendSkill = skill => {
    const trendSkill = {
      id: skill?.id,
      name: skill?.name,
      category: skill?.category
    };
    setActiveSkill(trendSkill);
    setActiveSkillId(skill?.id);
  };
  const changeSkill = skill => {
    setActiveSkill(skill?.skill);
    setActiveSkillId(skill?.skill.id);
  };

  useEffect(() => {
    if (activeSkillId) {
      fetchDashboardData(activeSkillId);
    } else {
      fetchDashboardData(1);
    }
  }, [activeSkillId]);
Editor is loading...