1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2025-02-02 09:58:24 +01:00

Index "Call Webhook" in Herald, and show calling rules on the Webhook page

Summary:
Depends on D20259. Now that we can index Herald rules to affected objects, show callers on the "Webhooks" UI.

A few other rule types could get indexes too ("Sign Legalpad Documents", "Add Reviewers", "Add Subscribers"), but I think they're less likely to be useful since those triggers are usually more obvious (the transaction timeline makes it clearer what happened/why). We could revisit this in the future now that it's a possibility.

Test Plan: {F6260106}

Reviewers: amckinley

Reviewed By: amckinley

Subscribers: PHID-OPKG-gm6ozazyms6q6i22gyam

Differential Revision: https://secure.phabricator.com/D20260
This commit is contained in:
epriestley 2019-03-07 06:30:02 -08:00
parent 9913754a2a
commit 1d4f6bd444
3 changed files with 46 additions and 0 deletions

View file

@ -496,6 +496,7 @@ final class HarbormasterPlanViewController extends HarbormasterPlanController {
->withDisabled(false) ->withDisabled(false)
->withAffectedObjectPHIDs(array($plan->getPHID())) ->withAffectedObjectPHIDs(array($plan->getPHID()))
->needValidateAuthors(true) ->needValidateAuthors(true)
->setLimit(10)
->execute(); ->execute();
$list = id(new HeraldRuleListView()) $list = id(new HeraldRuleListView())

View file

@ -63,4 +63,8 @@ final class HeraldCallWebhookAction extends HeraldAction {
return new HeraldWebhookDatasource(); return new HeraldWebhookDatasource();
} }
public function getPHIDsAffectedByAction(HeraldActionRecord $record) {
return $record->getTarget();
}
} }

View file

@ -73,12 +73,15 @@ final class HeraldWebhookViewController
->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
->setTable($requests_table); ->setTable($requests_table);
$rules_view = $this->newRulesView($hook);
$hook_view = id(new PHUITwoColumnView()) $hook_view = id(new PHUITwoColumnView())
->setHeader($header) ->setHeader($header)
->setMainColumn( ->setMainColumn(
array( array(
$warnings, $warnings,
$properties_view, $properties_view,
$rules_view,
$requests_view, $requests_view,
$timeline, $timeline,
)) ))
@ -194,4 +197,42 @@ final class HeraldWebhookViewController
->appendChild($properties); ->appendChild($properties);
} }
private function newRulesView(HeraldWebhook $hook) {
$viewer = $this->getViewer();
$rules = id(new HeraldRuleQuery())
->setViewer($viewer)
->withDisabled(false)
->withAffectedObjectPHIDs(array($hook->getPHID()))
->needValidateAuthors(true)
->setLimit(10)
->execute();
$list = id(new HeraldRuleListView())
->setViewer($viewer)
->setRules($rules)
->newObjectList();
$list->setNoDataString(pht('No active Herald rules call this webhook.'));
$more_href = new PhutilURI(
'/herald/',
array('affectedPHID' => $hook->getPHID()));
$more_link = id(new PHUIButtonView())
->setTag('a')
->setIcon('fa-list-ul')
->setText(pht('View All Rules'))
->setHref($more_href);
$header = id(new PHUIHeaderView())
->setHeader(pht('Called By Herald Rules'))
->addActionLink($more_link);
return id(new PHUIObjectBoxView())
->setHeader($header)
->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)
->appendChild($list);
}
} }