Skip to content

Commit 0afb652

Browse files
authored
Merge pull request #16 from tv2regionerne/feature/assets-cache
Asure updated asset data is returned with POST/PATCH
2 parents 603eb89 + 443c4e7 commit 0afb652

2 files changed

Lines changed: 36 additions & 3 deletions

File tree

routes/api.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
->group(function () {
3434
Route::get('/', [Controllers\AssetsController::class, 'index'])->name('index');
3535
Route::get('{id}', [Controllers\AssetsController::class, 'show'])->name('show');
36+
Route::patch('{id}', [Controllers\AssetsController::class, 'update'])->name('update');
3637
Route::delete('{id}', [Controllers\AssetsController::class, 'destroy'])->name('destroy');
3738
Route::post('/', [Controllers\AssetsController::class, 'store'])->name('store');
3839
});

src/Http/Controllers/AssetsController.php

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
use Illuminate\Validation\ValidationException;
1010
use Statamic\Contracts\Assets\Asset as AssetContract;
1111
use Statamic\Facades;
12+
use Statamic\Facades\Asset;
13+
use Statamic\Facades\Blink;
1214
use Statamic\Http\Controllers\API\ApiController;
1315
use Statamic\Http\Controllers\CP\Assets\AssetsController as CpController;
1416
use Tv2regionerne\StatamicPrivateApi\Http\Resources\AssetResource;
@@ -62,20 +64,50 @@ public function store(Request $request, $container)
6264
}
6365

6466
try {
67+
6568
$response = (new CpController($request))->store($request);
69+
$asset = $response->resource;
70+
$fields = $asset->blueprint()->fields()->addValues($request->all());
71+
72+
$fields->validate();
6673

67-
if (! $id = $response->id()) {
68-
abort(403);
74+
$values = $fields->process()->values()->merge([
75+
'focus' => $request->focus,
76+
]);
77+
78+
foreach ($values as $key => $value) {
79+
$asset->set($key, $value);
6980
}
7081

71-
$asset = Facades\Asset::find($id);
82+
$asset->save();
83+
Blink::forget("eloquent-asset-{$asset->id()}");
84+
Blink::forget("asset-meta-{$asset->id()}");
85+
$asset = Asset::findById($asset->id());
7286

7387
return AssetResource::make($asset);
88+
7489
} catch (ValidationException $e) {
7590
return $this->returnValidationErrors($e);
7691
}
7792
}
7893

94+
public function update(Request $request, $container, $asset)
95+
{
96+
$request->merge([
97+
'container' => $container,
98+
]);
99+
100+
$response = (new CpController($request))->update($request, $asset);
101+
$assetId = $response['asset']['id'];
102+
103+
Blink::forget("eloquent-asset-{$assetId}");
104+
Blink::forget("asset-meta-{$assetId}");
105+
106+
$asset = Asset::findById($assetId);
107+
108+
return AssetResource::make($asset);
109+
}
110+
79111
public function destroy(Request $request, $container, $id)
80112
{
81113
$container = $this->containerFromHandle($container);

0 commit comments

Comments
 (0)