Make "Highlight As..." sticky across reloads in Diffusion and Differential
Summary: Ref T13455. Add container-level storage for persistent view state, and persist "Highlight As..." inside it. The storage generates a "PhabricatorChangesetViewState" configuration object as an output. When preferences are expressed on a diff and that diff is later attached to a revision, we attempt to copy the preferences. The internal storage tracks per-changeset settings, but currently always uses "last update wins" to apply the settings in the UI. Test Plan: - Viewed revisions, changed highlighting, reloaded. Saw highlighting stick in revision view and standalone view. - Viewed commits, changed highlighting, reloaded. Saw highlighting stick. - Created a diff, changed highlighting, turned it into a revision, saw highlighting persist. Subscribers: jmeador, PHID-OPKG-gm6ozazyms6q6i22gyam Maniphest Tasks: T13455 Differential Revision: https://secure.phabricator.com/D21137
This commit is contained in:
@@ -165,21 +165,6 @@ final class DifferentialChangesetViewController extends DifferentialController {
|
||||
list($range_s, $range_e, $mask) =
|
||||
DifferentialChangesetParser::parseRangeSpecification($spec);
|
||||
|
||||
$parser = id(new DifferentialChangesetParser())
|
||||
->setViewer($viewer)
|
||||
->setCoverage($coverage)
|
||||
->setChangeset($changeset)
|
||||
->setRenderingReference($rendering_reference)
|
||||
->setRenderCacheKey($render_cache_key)
|
||||
->setRightSideCommentMapping($right_source, $right_new)
|
||||
->setLeftSideCommentMapping($left_source, $left_new);
|
||||
|
||||
$parser->readParametersFromRequest($request);
|
||||
|
||||
if ($left && $right) {
|
||||
$parser->setOriginals($left, $right);
|
||||
}
|
||||
|
||||
$diff = $changeset->getDiff();
|
||||
$revision_id = $diff->getRevisionID();
|
||||
|
||||
@@ -197,6 +182,35 @@ final class DifferentialChangesetViewController extends DifferentialController {
|
||||
}
|
||||
}
|
||||
|
||||
if ($revision) {
|
||||
$container_phid = $revision->getPHID();
|
||||
} else {
|
||||
$container_phid = $diff->getPHID();
|
||||
}
|
||||
|
||||
$viewstate_engine = id(new PhabricatorChangesetViewStateEngine())
|
||||
->setViewer($viewer)
|
||||
->setObjectPHID($container_phid)
|
||||
->setChangeset($changeset);
|
||||
|
||||
$viewstate = $viewstate_engine->newViewStateFromRequest($request);
|
||||
|
||||
$parser = id(new DifferentialChangesetParser())
|
||||
->setViewer($viewer)
|
||||
->setViewState($viewstate)
|
||||
->setCoverage($coverage)
|
||||
->setChangeset($changeset)
|
||||
->setRenderingReference($rendering_reference)
|
||||
->setRenderCacheKey($render_cache_key)
|
||||
->setRightSideCommentMapping($right_source, $right_new)
|
||||
->setLeftSideCommentMapping($left_source, $left_new);
|
||||
|
||||
$parser->readParametersFromRequest($request);
|
||||
|
||||
if ($left && $right) {
|
||||
$parser->setOriginals($left, $right);
|
||||
}
|
||||
|
||||
// Load both left-side and right-side inline comments.
|
||||
if ($revision) {
|
||||
$query = id(new DifferentialInlineCommentQuery())
|
||||
@@ -249,7 +263,7 @@ final class DifferentialChangesetViewController extends DifferentialController {
|
||||
$engine->process();
|
||||
|
||||
$parser
|
||||
->setUser($viewer)
|
||||
->setViewer($viewer)
|
||||
->setMarkupEngine($engine)
|
||||
->setShowEditAndReplyLinks(true)
|
||||
->setCanMarkDone($can_mark)
|
||||
|
||||
Reference in New Issue
Block a user