Skip to content

Commit 73ae1c9

Browse files
committed
Make sure to nuke the old asset if overwriting
1 parent 29b4b4c commit 73ae1c9

2 files changed

Lines changed: 10 additions & 0 deletions

File tree

src/Actions/MoveAsset.php

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

55
use Statamic\Contracts\Assets\Asset;
66
use Statamic\Exceptions\AssetConflictException;
7+
use Statamic\Facades\Asset as AssetRepository;
78
use Statamic\Facades\AssetContainer;
89
use Statamic\Facades\Blink;
910
use Statamic\Facades\Glide;
@@ -68,6 +69,13 @@ public function run($assets, $values)
6869
if ($strategy === 'overwrite') {
6970
$assetForGlideCacheClear = $existingAsset ?? $asset->container()->makeAsset($destinationPath);
7071
Glide::clearAsset($assetForGlideCacheClear);
72+
73+
// Remove the pre-existing destination record before moving the source
74+
// so we never leave behind stale repository entries for this path.
75+
if ($existingAsset) {
76+
AssetRepository::delete($existingAsset);
77+
}
78+
7179
$oldId = $asset->id();
7280
$newId = $asset->move($folder)->id();
7381
$completedMoves[$oldId] = $newId;

tests/Actions/MoveAssetTest.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,8 @@ public function it_can_overwrite_conflicting_move_when_strategy_is_overwrite():
189189
Storage::disk('test')->assertMissing('source/logo.svg');
190190
Storage::disk('test')->assertExists('target/logo.svg');
191191
$this->assertEquals('new', Storage::disk('test')->get('target/logo.svg'));
192+
$this->assertCount(1, $this->container->assets('/', true));
193+
$this->assertSame(['test_container::target/logo.svg'], $this->container->assets('/', true)->pluck('id')->values()->all());
192194
}
193195

194196
#[Test]

0 commit comments

Comments
 (0)