mirror of
https://github.com/archtechx/tenancy.git
synced 2026-02-05 23:24:03 +00:00
Move manager to correct directory
This commit is contained in:
parent
410841dfe8
commit
4b33b8620c
1 changed files with 0 additions and 0 deletions
54
src/TenancyBroadcastManager.php
Normal file
54
src/TenancyBroadcastManager.php
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Stancl\Tenancy; // todo new Overrides namespace?
|
||||
|
||||
use Illuminate\Broadcasting\Broadcasters\Broadcaster;
|
||||
use Illuminate\Broadcasting\BroadcastManager;
|
||||
use Illuminate\Contracts\Broadcasting\Broadcaster as BroadcasterContract;
|
||||
|
||||
class TenancyBroadcastManager extends BroadcastManager
|
||||
{
|
||||
/**
|
||||
* Broadcasters to always resolve from the container (even when they're
|
||||
* cached and available in the $broadcasters property).
|
||||
*/
|
||||
public static array $tenantBroadcasters = ['pusher', 'ably'];
|
||||
|
||||
/**
|
||||
* Override the get method so that the broadcasters in $tenantBroadcasters always get resolved,
|
||||
* even when they're cached and available in the $broadcasters property.
|
||||
*/
|
||||
protected function get($name)
|
||||
{
|
||||
if (in_array($name, static::$tenantBroadcasters)) {
|
||||
/** @var Broadcaster|null $cachedBroadcaster */
|
||||
$cachedBroadcaster = $this->drivers[$name] ?? null;
|
||||
|
||||
$this->app->forgetInstance(BroadcasterContract::class);
|
||||
|
||||
/** @var Broadcaster $broadcaster */
|
||||
$broadcaster = $this->resolve($name);
|
||||
|
||||
if ($cachedBroadcaster) {
|
||||
$cachedBroadcaster = invade($cachedBroadcaster);
|
||||
|
||||
foreach ($cachedBroadcaster->channels as $channel => $callback) {
|
||||
$broadcaster->channel($channel, $callback, $cachedBroadcaster->retrieveChannelOptions($channel));
|
||||
}
|
||||
}
|
||||
|
||||
return $broadcaster;
|
||||
}
|
||||
|
||||
return parent::get($name);
|
||||
}
|
||||
|
||||
public function setDriver(string $name, BroadcasterContract $broadcaster): static
|
||||
{
|
||||
$this->drivers[$name] = $broadcaster;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue