Comparte:
Notificar al usuario al acabar un evento
Hola,
tengo una cuestión sobre Livewire y no se muy bien como podría realizarse.
Actualmente hago lo siguiente:
Al enviarse un formulario, si no hay fallos de validación, se hace un dispatch de una tarea (Job) que cuando acaba notifica que ha finalizado al usuario que realizó la petición y Livewire solo muestra una mensaje de sesión indicando que la tarea se está llevando a cabo y hasta ahí bien,
Lo que quiero conseguir:
Quiero evitar tener que enviar una notificación al usuario, y hacer que Livewire reaccione y avise cuando acabe la tarea (Job) al usuario que la solicitó.
Esto es lo que hay en el componente Livewire.
tengo una cuestión sobre Livewire y no se muy bien como podría realizarse.
Actualmente hago lo siguiente:
Al enviarse un formulario, si no hay fallos de validación, se hace un dispatch de una tarea (Job) que cuando acaba notifica que ha finalizado al usuario que realizó la petición y Livewire solo muestra una mensaje de sesión indicando que la tarea se está llevando a cabo y hasta ahí bien,
Lo que quiero conseguir:
Quiero evitar tener que enviar una notificación al usuario, y hacer que Livewire reaccione y avise cuando acabe la tarea (Job) al usuario que la solicitó.
Esto es lo que hay en el componente Livewire.
/**
* @throws AuthorizationException
*/
public function storeInvoice(string $typeInvoice)
{
$this->authorize('create', Thing::class);
$validation = Validator::make($this->data, [
....
]);
$validatedData = $validation->validate();
if (!$validation->fails()) {
GenerateThing::dispatch(auth()->user(), $validatedData);
$this->reset('data');
session()->flash('status', __('The task is in process.'));
}
}
Y esto es lo que hay en el handle del Job.
/**
* Execute the job.
*
* @return void
*/
public function handle(): void
{
$this->startProcess();
$this->user->notify(new ThingProcessCompleted([
'title' => __('Process concluded'),
'message' => __('The creation of the thing has been processed..'),
'link' => ''
]));
}
Entonces mi duda es, ¿de que forma se podría hacer para que Livewire detecte que el Job ha finalizado y que reaccione mostrando una notificación visual al usuario para que sepa que acabó?
Gracias de antemano por la ayuda que me prestéis.
es con estos metodos, que por lo general lo debes ejecutar desde un service Provider
te dejo el link con la documentacion de laravel
https://laravel.com/docs/9.x/queues#job-events
Estudiaré el tema para aplicarlo y ver si consigo mi objetivo.
Un saludo.