1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-22 14:52:41 +01:00

Conpherence - fix unread counts

Summary: we weren't updating the "latest seen transaction PHID" properly. do that and ONLY do it from the view handler so we know the user got a real good chance of actually seeing the message. also we weren't searching through the transactions correctly; fix that.

Test Plan: sent a test user some messages. noted the proper count of unread messages.

Reviewers: epriestley, chad

Reviewed By: chad

CC: aran, Korvin

Maniphest Tasks: T2399

Differential Revision: https://secure.phabricator.com/D4677
This commit is contained in:
Bob Trahan 2013-01-26 18:53:30 -08:00
parent 9437bc019d
commit 22ce74c5a8
4 changed files with 12 additions and 10 deletions

View file

@ -41,11 +41,7 @@ final class ConpherenceListController extends
} }
$this->setSelectedConpherencePHID($conpherence->getPHID()); $this->setSelectedConpherencePHID($conpherence->getPHID());
$read_status = ConpherenceParticipationStatus::UP_TO_DATE;
$participant = $conpherence->getParticipant($user->getPHID()); $participant = $conpherence->getParticipant($user->getPHID());
$write_guard = AphrontWriteGuard::beginScopedUnguardedWrites();
$participant->markUpToDate();
unset($write_guard);
$current_selection_epoch = $participant->getDateTouched(); $current_selection_epoch = $participant->getDateTouched();
} }

View file

@ -49,8 +49,10 @@ final class ConpherenceViewController extends
$this->setConpherence($conpherence); $this->setConpherence($conpherence);
$participant = $conpherence->getParticipant($user->getPHID()); $participant = $conpherence->getParticipant($user->getPHID());
$transactions = $conpherence->getTransactions();
$latest_transaction = end($transactions);
$write_guard = AphrontWriteGuard::beginScopedUnguardedWrites(); $write_guard = AphrontWriteGuard::beginScopedUnguardedWrites();
$participant->markUpToDate(); $participant->markUpToDate($latest_transaction);
unset($write_guard); unset($write_guard);
$header = $this->renderHeaderPaneContent(); $header = $this->renderHeaderPaneContent();

View file

@ -11,9 +11,10 @@ final class ConpherenceParticipant extends ConpherenceDAO {
protected $behindTransactionPHID; protected $behindTransactionPHID;
protected $dateTouched; protected $dateTouched;
public function markUpToDate() { public function markUpToDate(ConpherenceTransaction $xaction) {
if (!$this->isUpToDate()) { if (!$this->isUpToDate()) {
$this->setParticipationStatus(ConpherenceParticipationStatus::UP_TO_DATE); $this->setParticipationStatus(ConpherenceParticipationStatus::UP_TO_DATE);
$this->setBehindTransactionPHID($xaction->getPHID());
$this->save(); $this->save();
} }
return $this; return $this;

View file

@ -189,15 +189,18 @@ final class ConpherenceThread extends ConpherenceDAO
} }
// fallthrough intentionally here // fallthrough intentionally here
case ConpherenceTransactionType::TYPE_FILES: case ConpherenceTransactionType::TYPE_FILES:
default: if ($behind_transaction_phid) {
if ($behind_transaction_phid && $unread_count++;
$transaction->getPHID() != $behind_transaction_phid) { if ($transaction->getPHID() == $behind_transaction_phid) {
$unread_count++; break 2;
} }
}
if ($unread_count > $max_count) { if ($unread_count > $max_count) {
break 2; break 2;
} }
break; break;
default:
continue 2;
} }
if ($snippet && !$behind_transaction_phid) { if ($snippet && !$behind_transaction_phid) {
break; break;