@@ -2,6 +2,7 @@ const API = "41357241";
2
2
const button = document . querySelector ( "button" ) ;
3
3
const searchIcon = document . querySelector ( "#searchIcon" ) ;
4
4
const toggle = document . querySelector ( "#toggle" ) ;
5
+ const search = document . querySelector ( "#search" ) ;
5
6
6
7
//1. Toggle sun moon ✅
7
8
toggle . addEventListener ( "click" , ( ) => {
@@ -24,25 +25,31 @@ document.addEventListener("keydown", (event) => {
24
25
( event . type = "click" && event . target === searchBtn )
25
26
) {
26
27
fetchMovie ( ) ;
28
+ search . value = "" ;
27
29
}
28
30
} ) ;
29
31
30
32
async function fetchMovie ( ) {
31
- const response = await fetch (
32
- `https://www.omdbapi.com/?s=${ search . value } &apikey=${ API } `
33
- ) ;
34
- const data = await response . json ( ) ;
35
- const imdbId = data . Search . map ( ( item ) => item . imdbID ) ;
36
- const arr = await Promise . all (
37
- imdbId . map ( async ( id ) => {
38
- const response = await fetch (
39
- `https://www.omdbapi.com/?i=${ id } &apikey=${ API } `
40
- ) ;
41
- return response . json ( ) ;
42
- } )
43
- ) ;
44
- console . log ( arr ) ;
45
- populateData ( arr ) ;
33
+ showShimmer ( ) ;
34
+ try {
35
+ const response = await fetch (
36
+ `https://www.omdbapi.com/?s=${ search . value } &apikey=${ API } `
37
+ ) ;
38
+ const data = await response . json ( ) ;
39
+ const imdbId = data . Search . map ( ( item ) => item . imdbID ) ;
40
+ const arr = await Promise . all (
41
+ imdbId . map ( async ( id ) => {
42
+ const response = await fetch (
43
+ `https://www.omdbapi.com/?i=${ id } &apikey=${ API } `
44
+ ) ;
45
+ return response . json ( ) ;
46
+ } )
47
+ ) ;
48
+ hideShimmer ( ) ;
49
+ populateData ( arr ) ;
50
+ } catch ( error ) {
51
+ console . error ( "Error aya" , error ) ;
52
+ }
46
53
}
47
54
48
55
// 4.after fetching data populate it to container class ✅
@@ -98,3 +105,36 @@ function popup(movie) {
98
105
document . querySelector ( ".popupContainer" ) . classList . remove ( "show" ) ;
99
106
} ) ;
100
107
}
108
+
109
+ function showShimmer ( ) {
110
+ const container = document . querySelector ( ".container" ) ;
111
+ container . innerHTML = `
112
+ <div class="shimmer-container">
113
+ <div class="shimmer-movie-detail">
114
+ <div class="shimmer-image"></div>
115
+ <div class="shimmer-rating"></div>
116
+ <div class="shimmer-title"></div>
117
+ <div class="shimmer-year"></div>
118
+ <div class="shimmer-button"></div>
119
+ </div>
120
+ <div class="shimmer-movie-detail">
121
+ <div class="shimmer-image"></div>
122
+ <div class="shimmer-rating"></div>
123
+ <div class="shimmer-title"></div>
124
+ <div class="shimmer-year"></div>
125
+ <div class="shimmer-button"></div>
126
+ </div>
127
+ <div class="shimmer-movie-detail">
128
+ <div class="shimmer-image"></div>
129
+ <div class="shimmer-rating"></div>
130
+ <div class="shimmer-title"></div>
131
+ <div class="shimmer-year"></div>
132
+ <div class="shimmer-button"></div>
133
+ </div>
134
+ </div>` ;
135
+ }
136
+
137
+ function hideShimmer ( ) {
138
+ const container = document . querySelector ( ".container" ) ;
139
+ container . innerHTML = "" ; // Clear shimmer effect
140
+ }
0 commit comments