diff --git a/public/script.js b/public/script.js index 2b0d219..ec836f3 100644 --- a/public/script.js +++ b/public/script.js @@ -312,9 +312,40 @@ let SM = { toLocalISOString: (date) => { return date.getFullYear() + '-' + (date.getMonth() + 1).toString().padStart(2, '0') + '-' + date.getDate().toString().padStart(2, '0') + 'T' + date.getHours().toString().padStart(2, '0') + ':' + date.getMinutes().toString().padStart(2, '0'); + }, + + updateThumbnail: (name, element) => { + axios.get('/media/' + name) + .then(response => { + if(response.data.status === 'ready') { + if(element instanceof HTMLImageElement) { + element.src = response.data.thumbnail; + } else if(typeof element === 'string') { + const imgElement = document.querySelector(element); + if(imgElement instanceof HTMLImageElement) { + imgElement.src = response.data.thumbnail; + } + } + } else if(response.data.status === 'processing') { + setTimeout(() => { + SM.updateThumbnail(name, element); + }, 5000); + } + }) + .catch(error => { + console.error(error); + }); + }, + + updateAllThumbnails: () => { + const elements = document.querySelectorAll('img[data-thumbnail]'); + elements.forEach(element => { + SM.updateThumbnail(element.getAttribute('data-thumbnail'), element); + }); } }; document.addEventListener('DOMContentLoaded', () => { SM.updateBillingAddress(); + SM.updateAllThumbnails(); }); diff --git a/resources/views/admin/media/index.blade.php b/resources/views/admin/media/index.blade.php index d2f59bd..bc85b1b 100644 --- a/resources/views/admin/media/index.blade.php +++ b/resources/views/admin/media/index.blade.php @@ -26,7 +26,7 @@ @foreach ($media as $medium) - {{ $medium->title }} + {{ $medium->title }}status === 'processing' ? 'data-thumbnail=' . $medium->name : '' }} />
{{ $medium->title }}{!! $medium->password !== null ? '': '' !!}
{{ $medium->file_type }}
diff --git a/resources/views/components/ui/file.blade.php b/resources/views/components/ui/file.blade.php index 6b3d3da..810f814 100644 --- a/resources/views/components/ui/file.blade.php +++ b/resources/views/components/ui/file.blade.php @@ -36,6 +36,10 @@ document.getElementById('{{ $name }}_name').innerText = media.name; document.getElementById('{{ $name }}_size').innerText = SM.bytesToString(media.size); + if(Object.keys(media).includes('status') && media.status === 'processing') { + SM.updateThumbnail(document.getElementById('{{ $name }}_preview'), media.name); + } + if(!media.mime_type.startsWith('image/') && (!media.thumbnail || media.thumbnail.startsWith('data:'))) { const extension = media.name.split('.').pop(); document.getElementById('{{ $name }}_preview').src = '/thumbnails/' + extension + '.webp';