From 6199e95577c9a87578c00240c7f7df36bd2d31fd Mon Sep 17 00:00:00 2001 From: epriestley Date: Fri, 03 Jun 2016 13:55:17 +0000 Subject: [PATCH] Use transactions to apply Ajax settings mutations Summary: Ref T4103. Some settings (mostly nav collapsed/expanded states) use this endpoint to make adjustments when users press keys (like `\` to toggle the durable column). All of these settings are now formal, so swap things over to transactions. Test Plan: Collapsed/expanded various navs, reloaded pages, settings stuck. Reviewers: chad Reviewed By: chad Maniphest Tasks: T4103 Differential Revision: https://secure.phabricator.com/D16035 --- src/applications/settings/controller/PhabricatorSettingsAdjustController.php | 22 ++++++++++++++++------ 1 file(s) changed, 16 insertion(s)(+), 6 deletion(s)(-) diff --git a/src/applications/settings/controller/PhabricatorSettingsAdjustController.php b/src/applications/settings/controller/PhabricatorSettingsAdjustController.php --- a/src/applications/settings/controller/PhabricatorSettingsAdjustController.php +++ b/src/applications/settings/controller/PhabricatorSettingsAdjustController.php @@ -4,13 +4,23 @@ extends PhabricatorController { public function handleRequest(AphrontRequest $request) { - $user = $request->getUser(); + $viewer = $this->getViewer(); - $prefs = $user->loadPreferences(); - $prefs->setPreference( - $request->getStr('key'), - $request->getStr('value')); - $prefs->save(); + $preferences = PhabricatorUserPreferences::loadUserPreferences($viewer); + + $editor = id(new PhabricatorUserPreferencesEditor()) + ->setActor($viewer) + ->setContentSourceFromRequest($request) + ->setContinueOnNoEffect(true) + ->setContinueOnMissingFields(true); + + $key = $request->getStr('key'); + $value = $request->getStr('value'); + + $xactions = array(); + $xactions[] = $preferences->newTransaction($key, $value); + + $editor->applyTransactions($preferences, $xactions); return id(new AphrontAjaxResponse())->setContent(array()); } -- tangled.sh