|
1 |
| -/* |
| 1 | +/** |
2 | 2 | * Copyright 2024 OpenBuild
|
3 | 3 | *
|
4 | 4 | * Licensed under the Apache License, Version 2.0 (the "License");
|
|
16 | 16 |
|
17 | 17 | import { Modal } from '@/components/Modal';
|
18 | 18 | import RankList from './RankList';
|
19 |
| -import { useEffect, useState } from 'react'; |
| 19 | +import { useState } from 'react'; |
20 | 20 | import { fetchRankList } from '#/domain/quiz/repository';
|
21 | 21 | import Loader from '@/components/Loader';
|
22 | 22 | import { ModalCloseIcon } from '@/components/Icons';
|
| 23 | +import useMounted from '@/hooks/useMounted'; |
23 | 24 |
|
24 | 25 | export function RankListModal({ quizId, shown, onClose, rank }) {
|
25 | 26 | const [data, setData] = useState(null);
|
26 | 27 | const [loading, setLoading] = useState(true);
|
27 | 28 |
|
28 |
| - useEffect(() => { |
| 29 | + useMounted(() => { |
29 | 30 | setLoading(true);
|
30 |
| - fetchRankList({ quizId }).then(res => { |
31 |
| - setData(res?.data?.list); |
32 |
| - setLoading(false); |
33 |
| - }); |
34 |
| - }, []); |
| 31 | + fetchRankList({ quizId }) |
| 32 | + .then(res => { |
| 33 | + setData(res?.data?.list?.rank); |
| 34 | + }) |
| 35 | + .finally(() => { |
| 36 | + setLoading(false); |
| 37 | + }); |
| 38 | + }); |
35 | 39 |
|
36 | 40 | return (
|
37 | 41 | <Modal isOpen={shown} closeModal={onClose} container mode="640">
|
38 |
| - <ModalCloseIcon onClick={onClose} className="absolute top-[-48px] md:top-[-32px] right-0 md:right-[-32px] cursor-pointer" /> |
39 |
| - <div className="md:h-[600px] h-[400px] flex flex-col overflow-y-auto" style={{ borderRadius: 'inherit', overflow: 'hidden' }}> |
| 42 | + <ModalCloseIcon |
| 43 | + onClick={onClose} |
| 44 | + className="absolute top-[-48px] md:top-[-32px] right-0 md:right-[-32px] cursor-pointer" |
| 45 | + /> |
| 46 | + <div className="md:h-[600px] h-[400px] flex flex-col overflow-y-auto rounded-inherit overflow-hidden"> |
40 | 47 | {loading && <Loader classname="mr-2" />}
|
41 | 48 | <RankList rank={rank} list={data} />
|
42 | 49 | </div>
|
|
0 commit comments