diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 32a2dd0..3c52838 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -2,7 +2,7 @@ includes: - phpstan-baseline.neon parameters: - level: 8 + level: 9 paths: - src - config @@ -11,4 +11,5 @@ parameters: checkOctaneCompatibility: true checkModelProperties: true checkMissingIterableValueType: false + checkGenericClassInNonGenericObjectType: false diff --git a/src/Listeners/AttachSendUuidListener.php b/src/Listeners/AttachSendUuidListener.php index 422ada2..500054f 100644 --- a/src/Listeners/AttachSendUuidListener.php +++ b/src/Listeners/AttachSendUuidListener.php @@ -11,10 +11,13 @@ class AttachSendUuidListener { public function handle(MessageSending $event): void { - if ($event->message->getHeaders()->has(config('sends.headers.send_uuid'))) { + /** @var string $sendUuidHeader */ + $sendUuidHeader = config('sends.headers.send_uuid'); + + if ($event->message->getHeaders()->has($sendUuidHeader)) { return; } - $event->message->getHeaders()->addTextHeader(config('sends.headers.send_uuid'), Str::uuid()->toString()); + $event->message->getHeaders()->addTextHeader($sendUuidHeader, Str::uuid()->toString()); } } diff --git a/src/Listeners/StoreOutgoingMailListener.php b/src/Listeners/StoreOutgoingMailListener.php index ff2a6f7..d05ff5e 100644 --- a/src/Listeners/StoreOutgoingMailListener.php +++ b/src/Listeners/StoreOutgoingMailListener.php @@ -26,7 +26,10 @@ public function handle(MessageSent $event): void protected function createSendModel(MessageSent $event): Send { - return config('sends.send_model')::forceCreate( + /** @var Send $modelClass */ + $modelClass = config('sends.send_model'); + + return $modelClass::forceCreate( $this->getSendAttributes($event, $this->getDefaultSendAttributes($event)) ); } @@ -55,15 +58,18 @@ protected function getDefaultSendAttributes(MessageSent $event): array protected function getSendUuid(MessageSent $event): ?string { - if (config('sends.headers.send_uuid') === 'Message-ID') { + /** @var string $sendUuidHeader */ + $sendUuidHeader = config('sends.headers.send_uuid'); + + if ($sendUuidHeader === 'Message-ID') { return $event->sent->getMessageId(); } - if (! $event->message->getHeaders()->has(config('sends.headers.send_uuid'))) { + if (! $event->message->getHeaders()->has($sendUuidHeader)) { return null; } - $headerValue = $event->message->getHeaders()->get(config('sends.headers.send_uuid')); + $headerValue = $event->message->getHeaders()->get($sendUuidHeader); if (is_null($headerValue)) { return null; @@ -74,16 +80,20 @@ protected function getSendUuid(MessageSent $event): ?string protected function getMailClassHeaderValue(MessageSent $event): ?string { - if (! $event->message->getHeaders()->has(config('sends.headers.mail_class'))) { + /** @var string $mailClassHeader */ + $mailClassHeader = config('sends.headers.mail_class'); + + if (! $event->message->getHeaders()->has($mailClassHeader)) { return null; } - $headerValue = $event->message->getHeaders()->get(config('sends.headers.mail_class')); + $headerValue = $event->message->getHeaders()->get($mailClassHeader); if (is_null($headerValue)) { return null; } + /** @phpstan-var string */ return decrypt($headerValue->getBodyAsString()); } @@ -93,6 +103,7 @@ protected function getMailClassHeaderValue(MessageSent $event): ?string protected function attachModelsToSendModel(MessageSent $event, Send $send): void { $this->getModels($event) + /** @phpstan-ignore-next-line */ ->each(fn (HasSends $model) => $model->sends()->attach($send)); } @@ -101,16 +112,20 @@ protected function attachModelsToSendModel(MessageSent $event, Send $send): void */ protected function getModels(MessageSent $event): Collection { - if (! $event->message->getHeaders()->has(config('sends.headers.models'))) { + /** @var string $modelsHeader */ + $modelsHeader = config('sends.headers.models'); + + if (! $event->message->getHeaders()->has($modelsHeader)) { return collect([]); } - $headerValue = $event->message->getHeaders()->get(config('sends.headers.models')); + $headerValue = $event->message->getHeaders()->get($modelsHeader); if (is_null($headerValue)) { return collect([]); } + /** @var string $models */ $models = decrypt($headerValue->getBodyAsString()); /** @var array> $modelsArray */ @@ -118,9 +133,11 @@ protected function getModels(MessageSent $event): Collection return collect($modelsArray) ->map(function (array $tuple): Model { + /** @var Model $model */ $model = $tuple['model']; $id = $tuple['id']; + /** @phpstan-ignore-next-line */ return $model::find($id); }) ->filter(fn (Model $model) => (new ReflectionClass($model))->implementsInterface(HasSends::class)); @@ -132,6 +149,7 @@ protected function getContent(MessageSent $event): ?string return null; } + /** @phpstan-ignore-next-line */ return $event->message->getHtmlBody(); }