diff --git a/app/Http/Controllers/MediaController.php b/app/Http/Controllers/MediaController.php index 39d2889..ef457b1 100644 --- a/app/Http/Controllers/MediaController.php +++ b/app/Http/Controllers/MediaController.php @@ -239,12 +239,20 @@ public function destroy($id) } // SAVE media - public function saveMedia($id) - { - auth()->user()->savedMedia()->syncWithoutDetaching([$id]); +public function toggleSaveMedia($id) +{ + $user = auth()->user(); + if ($user->savedMedia()->where('media_id', $id)->exists()) { + // already saved → unsave + $user->savedMedia()->detach($id); + return response()->json(['message' => 'Unsaved!']); + } else { + // not saved → save + $user->savedMedia()->attach($id); return response()->json(['message' => 'Saved!']); } +} // GET saved public function saved() diff --git a/routes/api.php b/routes/api.php index 4badb6f..9d510ba 100644 --- a/routes/api.php +++ b/routes/api.php @@ -140,7 +140,7 @@ Route::post('/media/{id}', [MediaController::class, 'update']); Route::delete('/media/{id}', [MediaController::class, 'destroy']); Route::get('/media/{id}', [MediaController::class, 'show']); - Route::post('/media/{id}/save', [MediaController::class, 'saveMedia']); + Route::post('/media/{id}/save', [MediaController::class, 'toggleSaveMedia']); Route::get('/media/saved', [MediaController::class, 'saved']); Route::post('/media/{id}/note', [MediaController::class, 'storeNote']);