Skip to content

Commit

Permalink
Update image factory to specify the file causing the exception
Browse files Browse the repository at this point in the history
  • Loading branch information
caendesilva committed Oct 28, 2023
1 parent 8be4c36 commit 4454cea
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,13 @@ class BlogPostDataFactory extends Concerns\PageDataFactory implements BlogPostSc
protected readonly ?PostAuthor $author;
protected readonly ?FeaturedImage $image;

private readonly string $filePath;

public function __construct(CoreDataObject $pageData)
{
$this->matter = $pageData->matter;
$this->markdown = $pageData->markdown;
$this->filePath = $pageData->sourcePath;

$this->description = $this->makeDescription();
$this->category = $this->makeCategory();
Expand Down Expand Up @@ -98,7 +101,7 @@ protected function makeAuthor(): ?PostAuthor
protected function makeImage(): ?FeaturedImage
{
if ($this->getMatter('image')) {
return FeaturedImageFactory::make($this->matter);
return FeaturedImageFactory::make($this->matter, $this->filePath);
}

return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ class FeaturedImageFactory extends Concerns\PageDataFactory implements FeaturedI

public function __construct(
private readonly FrontMatter $matter,
private readonly ?string $filePath = null,
) {
$this->source = $this->makeSource();
$this->altText = $this->getStringMatter('image.altText');
Expand Down Expand Up @@ -58,19 +59,17 @@ public function toArray(): array
];
}

public static function make(FrontMatter $matter): FeaturedImage
public static function make(FrontMatter $matter, ?string $filePath = null): FeaturedImage
{
return new FeaturedImage(...(new static($matter))->toArray());
return new FeaturedImage(...(new static($matter, $filePath))->toArray());
}

protected function makeSource(): string
{
$value = $this->getStringMatter('image') ?? $this->getStringMatter('image.source');

if (empty($value)) {
// Todo, we might want to add a note about which file caused the error.
// We could also check for these before calling the factory, and just ignore the image if it's not valid.
throw new RuntimeException('No featured image source was found');
throw new RuntimeException(sprintf('No featured image source was found in "%s"', $this->filePath ?? 'unknown file'));
}

if (FeaturedImage::isRemote($value)) {
Expand Down

0 comments on commit 4454cea

Please sign in to comment.