Files
faveo/vendor/brozot/laravel-fcm/src/Message/Options.php
2023-01-30 14:33:06 +05:30

111 lines
2.3 KiB
PHP

<?php
namespace LaravelFCM\Message;
use Illuminate\Contracts\Support\Arrayable;
/**
* Class Options.
*/
class Options implements Arrayable
{
/**
* @internal
*
* @var null|string
*/
protected $collapseKey;
/**
* @internal
*
* @var null|string
*/
protected $priority;
/**
* @internal
*
* @var bool
*/
protected $contentAvailable;
/**
* @internal
*
* @var bool
*/
protected $isMutableContent = false;
/**
* @internal
*
* @var bool
*/
protected $delayWhileIdle;
/**
* @internal
*
* @var int|null
*/
protected $timeToLive;
/**
* @internal
*
* @var null|string
*/
protected $restrictedPackageName;
/**
* @internal
*
* @var bool
*/
protected $isDryRun = false;
/**
* Options constructor.
*
* @param OptionsBuilder $builder
*/
public function __construct(OptionsBuilder $builder)
{
$this->collapseKey = $builder->getCollapseKey();
$this->priority = $builder->getPriority();
$this->contentAvailable = $builder->isContentAvailable();
$this->isMutableContent = $builder->isMutableContent();
$this->delayWhileIdle = $builder->isDelayWhileIdle();
$this->timeToLive = $builder->getTimeToLive();
$this->restrictedPackageName = $builder->getRestrictedPackageName();
$this->isDryRun = $builder->isDryRun();
}
/**
* Transform Option to array.
*
* @return array
*/
public function toArray()
{
$contentAvailable = $this->contentAvailable ? true : null;
$mutableContent = $this->isMutableContent ? true : null;
$delayWhileIdle = $this->delayWhileIdle ? true : null;
$dryRun = $this->isDryRun ? true : null;
$options = [
'collapse_key' => $this->collapseKey,
'priority' => $this->priority,
'content_available' => $contentAvailable,
'mutable_content' => $mutableContent,
'delay_while_idle' => $delayWhileIdle,
'time_to_live' => $this->timeToLive,
'restricted_package_name' => $this->restrictedPackageName,
'dry_run' => $dryRun,
];
return array_filter($options);
}
}