@@ -29,6 +29,7 @@ const LandingPage = () => {
29
29
const [ currentQuest , setCurrentQuest ] = useState < Quest | null > ( storedQuests ) ;
30
30
const [ currentOpenModal , setCurrentOpenModal ] = useState < ModalTypes > ( null ) ;
31
31
const [ spinning , setSpinning ] = useState ( false ) ;
32
+ const [ isModalLoading , setIsModalLoading ] = useState ( false ) ;
32
33
33
34
const disableButtons = currentOpenModal ? true : false ;
34
35
@@ -48,10 +49,13 @@ const LandingPage = () => {
48
49
if ( ! accessToken ) return navigate ( "/login" ) ;
49
50
50
51
try {
52
+ setIsModalLoading ( true ) ;
51
53
const randomQuestResponse = await questService . getRandomQuest ( accessToken ) ;
52
54
53
55
if ( ! randomQuestResponse ) {
54
56
toast . warning ( "No quests available, add new filters or reset your progress to see more quests." ) ;
57
+ setCurrentOpenModal ( null ) ;
58
+ setCurrentQuest ( null ) ;
55
59
return ;
56
60
}
57
61
@@ -60,24 +64,31 @@ const LandingPage = () => {
60
64
setCurrentOpenModal ( "quest" ) ;
61
65
localStorage . setItem ( 'currentQuest' , JSON . stringify ( randomQuestResponse ) ) ;
62
66
} catch ( error ) {
67
+ setCurrentOpenModal ( null ) ;
68
+ setCurrentQuest ( null ) ;
63
69
toast . error ( "Failed to get random quest" , error ) ;
70
+ } finally {
71
+ setIsModalLoading ( false ) ;
64
72
}
65
73
} ;
66
74
67
75
const handleQuestSkip = ( ) => {
68
- setCurrentQuest ( null ) ;
76
+ // setCurrentQuest(null);
69
77
localStorage . removeItem ( 'currentQuest' ) ;
78
+ handleSpinWheel ( ) ;
70
79
} ;
71
80
72
81
const handleQuestComplete = async ( ) => {
73
82
if ( ! accessToken ) return navigate ( "/login" ) ;
74
83
75
84
try {
85
+ setIsModalLoading ( true ) ;
76
86
const completeQuestResponse = await userService . completeQuest ( accessToken , currentQuest ! . id ) ;
77
87
78
- setCurrentQuest ( null ) ;
88
+ // setCurrentQuest(null);
79
89
localStorage . removeItem ( 'currentQuest' ) ;
80
90
toast . success ( completeQuestResponse ) ;
91
+ handleSpinWheel ( ) ;
81
92
} catch ( error ) {
82
93
toast . error ( "Failed to complete quest" , error ) ;
83
94
}
@@ -132,6 +143,7 @@ const LandingPage = () => {
132
143
onSkip = { handleQuestSkip }
133
144
onComplete = { handleQuestComplete }
134
145
quest = { currentQuest }
146
+ disableButtons = { isModalLoading }
135
147
/>
136
148
</ Modal >
137
149
) ;
0 commit comments