Skip to content

Commit 59cde28

Browse files
committed
v4 tests
1 parent d3a53ea commit 59cde28

14 files changed

+661
-540
lines changed

src/Converters/MediaConverter.php

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace Elegantly\Media\Converters;
66

7+
use Elegantly\Media\Events\MediaConverterExecutedEvent;
78
use Elegantly\Media\MediaConversionDefinition;
89
use Elegantly\Media\Models\Media;
910
use Elegantly\Media\Models\MediaConversion;
@@ -63,8 +64,11 @@ public function handle(): ?MediaConversion
6364

6465
if (str_contains($this->conversion, '.')) {
6566

67+
$parentConversion = str($this->conversion)->beforeLast('.')->value();
68+
6669
$parent = $this->media->getOrExecuteConversion(
67-
str($this->conversion)->beforeLast('.')->value()
70+
$parentConversion,
71+
withChildren: false
6872
);
6973

7074
/**
@@ -73,6 +77,7 @@ public function handle(): ?MediaConversion
7377
if ($parent === null) {
7478
return null;
7579
}
80+
7681
} else {
7782
$parent = null;
7883
}
@@ -87,7 +92,7 @@ public function handle(): ?MediaConversion
8792
return null;
8893
}
8994

90-
$value = TemporaryDirectory::callback(function ($temporaryDirectory) use ($parent) {
95+
$mediaConversion = TemporaryDirectory::callback(function ($temporaryDirectory) use ($parent) {
9196

9297
$storage = TemporaryDirectory::storage($temporaryDirectory);
9398

@@ -101,6 +106,16 @@ public function handle(): ?MediaConversion
101106
return $this->convert($this->media, $parent, $copy, $storage, $temporaryDirectory);
102107
});
103108

104-
return $value;
109+
if ($this->withChildren) {
110+
$this->media->generateConversions(
111+
parent: $mediaConversion,
112+
filter: fn ($definition) => $definition->immediate,
113+
force: false,
114+
);
115+
}
116+
117+
event(new MediaConverterExecutedEvent($this));
118+
119+
return $mediaConversion;
105120
}
106121
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Elegantly\Media\Events;
6+
7+
use Elegantly\Media\Converters\MediaConverter;
8+
use Illuminate\Foundation\Events\Dispatchable;
9+
use Illuminate\Queue\SerializesModels;
10+
11+
class MediaConverterExecutedEvent
12+
{
13+
use Dispatchable, SerializesModels;
14+
15+
/**
16+
* @return void
17+
*/
18+
public function __construct(public MediaConverter $converter)
19+
{
20+
//
21+
}
22+
}

src/Models/Media.php

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,7 @@ public function dispatchConversion(
281281
public function executeConversion(
282282
string $conversion,
283283
bool $force = true,
284+
bool $withChildren = true,
284285
): ?MediaConversion {
285286

286287
if (
@@ -290,25 +291,28 @@ public function executeConversion(
290291
return null;
291292
}
292293

293-
dump('executeConversion: '.$conversion);
294-
295294
if ($definition = $this->getConversionDefinition($conversion)) {
296295

297296
$converter = ($definition->converter)($this);
298297

299-
return $converter->conversion($conversion)->handle();
298+
return $converter
299+
->conversion($conversion)
300+
->withChildren($withChildren)
301+
->handle();
300302
}
301303

302304
return null;
303305
}
304306

305-
public function getOrExecuteConversion(string $name): ?MediaConversion
306-
{
307+
public function getOrExecuteConversion(
308+
string $name,
309+
bool $withChildren = true,
310+
): ?MediaConversion {
307311
if ($conversion = $this->getConversion($name)) {
308312
return $conversion;
309313
}
310314

311-
return $this->executeConversion($name);
315+
return $this->executeConversion($name, withChildren: $withChildren);
312316
}
313317

314318
/**
@@ -362,13 +366,8 @@ public function getChildrenConversions(string $name): EloquentCollection
362366
->filter(fn ($conversion) => str_starts_with($conversion->conversion_name, "{$name}."));
363367
}
364368

365-
/**
366-
* Save a conversion and dispatch children conversions
367-
*/
368-
public function replaceConversion(
369-
MediaConversion $conversion,
370-
bool $regenerateChildren = true
371-
): MediaConversion {
369+
public function replaceConversion(MediaConversion $conversion): MediaConversion
370+
{
372371

373372
$existingConversion = $this->getConversion($conversion->conversion_name);
374373

@@ -390,12 +389,6 @@ public function replaceConversion(
390389
);
391390
}
392391

393-
$this->generateConversions(
394-
parent: $conversion,
395-
filter: fn ($definition) => $definition->immediate,
396-
force: $regenerateChildren,
397-
);
398-
399392
return $conversion;
400393
}
401394

@@ -420,8 +413,6 @@ public function addConversion(
420413
$conversionName = "{$parent->conversion_name}.{$conversionName}";
421414
}
422415

423-
dump('addConversion: '.$conversionName);
424-
425416
/**
426417
* If the conversion already exists, we are going to overwrite it
427418
*/
@@ -470,12 +461,6 @@ public function addConversion(
470461
$this->conversions->push($conversion);
471462
}
472463

473-
$this->generateConversions(
474-
parent: $conversion,
475-
filter: fn ($definition) => $definition->immediate,
476-
force: $regenerateChildren,
477-
);
478-
479464
$definition = $this->getConversionDefinition($conversionName);
480465

481466
if ($onCompleted = $definition?->onCompleted) {
@@ -500,7 +485,6 @@ public function generateConversions(
500485
?bool $queued = null,
501486
bool $force = false,
502487
): static {
503-
dump('generateConversions');
504488

505489
if ($parent) {
506490
$definitions = $this->getChildrenConversionsDefinitions($parent->conversion_name);

0 commit comments

Comments
 (0)