Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15434864
D19859.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Referenced Files
None
Subscribers
None
D19859.diff
View Options
diff --git a/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php b/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
--- a/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
+++ b/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
@@ -4658,9 +4658,21 @@
$new_value[$key] = $state_map[$state];
}
+ // See PHI995. Copy some information about the inlines into the transaction
+ // so we can tailor rendering behavior. In particular, we don't want to
+ // render transactions about users marking their own inlines as "Done".
+
+ $inline_details = array();
+ foreach ($inlines as $inline) {
+ $inline_details[$inline->getPHID()] = array(
+ 'authorPHID' => $inline->getAuthorPHID(),
+ );
+ }
+
return $object->getApplicationTransactionTemplate()
->setTransactionType(PhabricatorTransactions::TYPE_INLINESTATE)
->setIgnoreOnNoEffect(true)
+ ->setMetadataValue('inline.details', $inline_details)
->setOldValue($old_value)
->setNewValue($new_value);
}
diff --git a/src/applications/transactions/storage/PhabricatorApplicationTransaction.php b/src/applications/transactions/storage/PhabricatorApplicationTransaction.php
--- a/src/applications/transactions/storage/PhabricatorApplicationTransaction.php
+++ b/src/applications/transactions/storage/PhabricatorApplicationTransaction.php
@@ -664,6 +664,16 @@
break;
}
break;
+
+ case PhabricatorTransactions::TYPE_INLINESTATE:
+ list($done, $undone) = $this->getInterestingInlineStateChangeCounts();
+
+ if (!$done && !$undone) {
+ return true;
+ }
+
+ break;
+
}
return false;
@@ -1007,15 +1017,7 @@
}
case PhabricatorTransactions::TYPE_INLINESTATE:
- $done = 0;
- $undone = 0;
- foreach ($new as $phid => $state) {
- if ($state == PhabricatorInlineCommentInterface::STATE_DONE) {
- $done++;
- } else {
- $undone++;
- }
- }
+ list($done, $undone) = $this->getInterestingInlineStateChangeCounts();
if ($done && $undone) {
return pht(
'%s marked %s inline comment(s) as done and %s inline comment(s) '.
@@ -1582,6 +1584,49 @@
return $moves;
}
+ private function getInterestingInlineStateChangeCounts() {
+ // See PHI995. Newer inline state transactions have additional details
+ // which we use to tailor the rendering behavior. These details are not
+ // present on older transactions.
+ $details = $this->getMetadataValue('inline.details', array());
+
+ $new = $this->getNewValue();
+
+ $done = 0;
+ $undone = 0;
+ foreach ($new as $phid => $state) {
+ $is_done = ($state == PhabricatorInlineCommentInterface::STATE_DONE);
+
+ // See PHI995. If you're marking your own inline comments as "Done",
+ // don't count them when rendering a timeline story. In the case where
+ // you're only affecting your own comments, this will hide the
+ // "alice marked X comments as done" story entirely.
+
+ // Usually, this happens when you pre-mark inlines as "done" and submit
+ // them yourself. We'll still generate an "alice added inline comments"
+ // story (in most cases/contexts), but the state change story is largely
+ // just clutter and slightly confusing/misleading.
+
+ $inline_details = idx($details, $phid, array());
+ $inline_author_phid = idx($inline_details, 'authorPHID');
+ if ($inline_author_phid) {
+ if ($inline_author_phid == $this->getAuthorPHID()) {
+ if ($is_done) {
+ continue;
+ }
+ }
+ }
+
+ if ($is_done) {
+ $done++;
+ } else {
+ $undone++;
+ }
+ }
+
+ return array($done, $undone);
+ }
+
/* -( PhabricatorPolicyInterface Implementation )-------------------------- */
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Mar 26, 5:45 AM (2 w, 4 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7324846
Default Alt Text
D19859.diff (3 KB)
Attached To
Mode
D19859: When users mark their own inline comments as "Done", suppress the timeline/mail stories
Attached
Detach File
Event Timeline
Log In to Comment