added media status and retry loading thumbnails
This commit is contained in:
@@ -109,5 +109,8 @@ class GenerateVariants implements ShouldQueue
|
|||||||
$media->addVariant($variantName, 'image/webp', 'webp', $variantFile);
|
$media->addVariant($variantName, 'image/webp', 'webp', $variantFile);
|
||||||
}//end foreach
|
}//end foreach
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$media->status = 'ready';
|
||||||
|
$media->save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ class Media extends Model
|
|||||||
'user_id',
|
'user_id',
|
||||||
'hash',
|
'hash',
|
||||||
'password',
|
'password',
|
||||||
|
'status'
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -206,6 +207,8 @@ class Media extends Model
|
|||||||
*/
|
*/
|
||||||
public function generateVariants(bool $overwrite = true): void
|
public function generateVariants(bool $overwrite = true): void
|
||||||
{
|
{
|
||||||
|
$this->status = 'processing';
|
||||||
|
$this->save();
|
||||||
dispatch(new GenerateVariants($this, $overwrite))->onQueue('media');
|
dispatch(new GenerateVariants($this, $overwrite))->onQueue('media');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Run the migrations.
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('media', function (Blueprint $table) {
|
||||||
|
$table->string('status')->default('ready');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reverse the migrations.
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('media', function (Blueprint $table) {
|
||||||
|
$table->dropColumn('status');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
@@ -84,7 +84,17 @@ const SMMediaPicker = {
|
|||||||
Alpine.store('media').items = response.data.data;
|
Alpine.store('media').items = response.data.data;
|
||||||
|
|
||||||
Alpine.store('media').pagination = [];
|
Alpine.store('media').pagination = [];
|
||||||
console.log(response.data.links);
|
|
||||||
|
response.data.data.forEach((file) => {
|
||||||
|
console.log(file.name, file.status);
|
||||||
|
if(file.status === 'processing') {
|
||||||
|
const fileName = file.name;
|
||||||
|
setTimeout(() => {
|
||||||
|
SMMediaPicker.updateThumbnail(fileName);
|
||||||
|
}, 5000);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
Alpine.nextTick(() => {
|
Alpine.nextTick(() => {
|
||||||
Alpine.store('media').pagination = response.data.links;
|
Alpine.store('media').pagination = response.data.links;
|
||||||
}).then(r => {
|
}).then(r => {
|
||||||
@@ -258,6 +268,28 @@ const SMMediaPicker = {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
updateThumbnail: (name) => {
|
||||||
|
axios.get('/media/' + name)
|
||||||
|
.then(response => {
|
||||||
|
console.log(response.data.name, response.data.status);
|
||||||
|
const item = Alpine.store('media').items.find(i => i.name === name);
|
||||||
|
if(item) {
|
||||||
|
if(response.data.status === 'ready') {
|
||||||
|
item.thumbnail = response.data.thumbnail;
|
||||||
|
item.status = response.data.status;
|
||||||
|
item.variants = response.data.variants;
|
||||||
|
} else if(response.data.status === 'processing') {
|
||||||
|
setTimeout(() => {
|
||||||
|
SMMediaPicker.updateThumbnail(name);
|
||||||
|
}, 5000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error(error);
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
window.SMMediaPicker = SMMediaPicker;
|
window.SMMediaPicker = SMMediaPicker;
|
||||||
|
|||||||
Reference in New Issue
Block a user