diff --git a/app/analytics/page.tsx b/app/analytics/page.tsx index d0971ec8..794fa92d 100644 --- a/app/analytics/page.tsx +++ b/app/analytics/page.tsx @@ -17,14 +17,26 @@ export default function Page() { const { address } = useAccount(); const [loading, setLoading] = useState(true); - const [quests, setQuests] = useState({} as QuestList); + const [quests, setQuests] = useState([]); const fetchQuests = useCallback(async () => { try { setLoading(true); const res = (await getQuests()) || {}; - setQuests(res); + + let allQuests: QuestDocument[] = []; + Object.keys(res).forEach((category) => { + const categoryQuests = res[category]; + if (Array.isArray(categoryQuests)) { + allQuests = allQuests.concat(categoryQuests); + } + }); + + const sortedAllQuests = allQuests.sort((a, b) => b.id - a.id); + + setQuests(sortedAllQuests); setLoading(false); + } catch (error) { console.log("Error while fetching quests", error); } @@ -33,7 +45,6 @@ export default function Page() { useEffect(() => { fetchQuests(); }, [address]); - return (
@@ -50,31 +61,21 @@ export default function Page() { {loading ? ( ) : ( - (Object.keys(quests) as (keyof typeof quests)[]).map( - (categoryName: keyof typeof quests) => { - const categoryValue = quests[categoryName]; - if (Array.isArray(categoryValue)) { - return categoryValue.map((quest: QuestDocument) => { - return ( - router.push(`/analytics/${quest.id}`)} - imgSrc={quest.img_card} - issuer={{ - name: quest.issuer, - logoFavicon: quest.logo, - }} - reward={quest.rewards_title} - id={quest.id} - expired={false} - /> - ); - }); - } - return null; - } - ) + quests.map((quest) => ( + router.push(`/analytics/${quest.id}`)} + imgSrc={quest.img_card} + issuer={{ + name: quest.issuer, + logoFavicon: quest.logo, + }} + reward={quest.rewards_title} + id={quest.id} + expired={false} + /> + )) )}