Repository navigation
Expand file tree
/
Copy pathapp.js
More file actions
59 lines (50 loc) · 1.38 KB
/
Copy pathapp.js
File metadata and controls
59 lines (50 loc) · 1.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
(function () {
function giphySearch(keyword) {
return fetch(`http://api.giphy.com/v1/gifs/search?q=${keyword}&api_key=${GIPHY_KEY}&limit=5`)
.then(response => response.json());
}
function appendImage(img) {
let $div = $('<div class="img-wrapper"></div>');
$('<div class="inner"></div>').append(img).appendTo($div);
$('#thumbs').append($div)
}
function showLoader() {
$('.loader-wrapper').addClass('shown');
}
function hideLoader() {
$('.loader-wrapper').removeClass('shown');
}
function onImgLoad(img) {
return new Promise((resolve, reject) => {
img.onload = resolve;
});
}
(function listenOnFormSubmit() {
$('#searchForm').submit(async (ev) => {
ev.preventDefault();
let $input = $('#searchInput');
main($input.val());
});
})();
async function main(keyword) {
const result = await giphySearch(keyword);
$('#thumbs').html('');
showLoader();
// let loadedImageCount = 0;
let promises = [];
result.data.forEach(gif => {
let img = new Image();
img.src = gif.images.original.url;
promises.push(onImgLoad(img));
// img.onload = () => {
// loadedImageCount++;
// if (loadedImageCount === result.data.length){
// hideLoader()
// }
// };
appendImage(img);
});
await Promise.all(promises);
hideLoader();
}
})();