]> BookStack Code Mirror - bookstack/blobdiff - app/Http/Controllers/UserPreferencesController.php
Added test to preference boolean endpoint
[bookstack] / app / Http / Controllers / UserPreferencesController.php
index e5ac69818f98ec976b5d8e18a4adc9a3eb22385a..11ff338f376a8745e97d633048a4b0dc1d789a8b 100644 (file)
@@ -41,7 +41,7 @@ class UserPreferencesController extends Controller
         setting()->putForCurrentUser('ui-shortcuts', $shortcuts->toJson());
         setting()->putForCurrentUser('ui-shortcuts-enabled', $enabled);
 
         setting()->putForCurrentUser('ui-shortcuts', $shortcuts->toJson());
         setting()->putForCurrentUser('ui-shortcuts-enabled', $enabled);
 
-        $this->showSuccessNotification('Shortcut preferences have been updated!');
+        $this->showSuccessNotification(trans('preferences.shortcuts_update_success'));
 
         return redirect('/preferences/shortcuts');
     }
 
         return redirect('/preferences/shortcuts');
     }
@@ -115,6 +115,9 @@ class UserPreferencesController extends Controller
         return response('', 204);
     }
 
         return response('', 204);
     }
 
+    /**
+     * Update the favorite status for a code language.
+     */
     public function updateCodeLanguageFavourite(Request $request)
     {
         $validated = $this->validate($request, [
     public function updateCodeLanguageFavourite(Request $request)
     {
         $validated = $this->validate($request, [
@@ -134,5 +137,27 @@ class UserPreferencesController extends Controller
         }
 
         setting()->putForCurrentUser('code-language-favourites', implode(',', $currentFavorites));
         }
 
         setting()->putForCurrentUser('code-language-favourites', implode(',', $currentFavorites));
+        return response('', 204);
+    }
+
+    /**
+     * Update a boolean user preference setting.
+     */
+    public function updateBooleanPreference(Request $request)
+    {
+        $allowedKeys = ['md-scroll-sync', 'md-show-preview'];
+        $validated = $this->validate($request, [
+            'name'  => ['required', 'string'],
+            'value' => ['required'],
+        ]);
+
+        if (!in_array($validated['name'], $allowedKeys)) {
+            return response('Invalid boolean preference', 500);
+        }
+
+        $value = $validated['value'] === 'true' ? 'true' : 'false';
+        setting()->putForCurrentUser($validated['name'], $value);
+
+        return response('', 204);
     }
 }
     }
 }