1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-21 13:00:56 +01:00

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
This commit is contained in:
epriestley 2016-06-03 06:55:17 -07:00
parent e3f4f051fe
commit 6199e95577

View file

@ -4,13 +4,23 @@ final class PhabricatorSettingsAdjustController
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());
}