mirror of
https://we.phorge.it/source/phorge.git
synced 2025-01-23 13:08:18 +01:00
Conpherence - add support for users with no conpherences in durable column view
Summary: Ref T7014. This just makes it so there's almost no UI and a simple "You have no messages. <button>Send a message.</button>" UI Test Plan: hacked the code such that should_404 and conpherence were false and null respectively. verified i got the right ui in the durable column. verified send a message button worked, ending up with me in main conpherence view on the right message Reviewers: chad, epriestley Reviewed By: epriestley Subscribers: Korvin, epriestley Maniphest Tasks: T7014 Differential Revision: https://secure.phabricator.com/D12042
This commit is contained in:
parent
5ef99dba2a
commit
116f4625b6
2 changed files with 61 additions and 24 deletions
|
@ -25,6 +25,7 @@ final class ConpherenceColumnViewController extends
|
||||||
}
|
}
|
||||||
|
|
||||||
$conpherence = null;
|
$conpherence = null;
|
||||||
|
$should_404 = false;
|
||||||
if ($request->getInt('id')) {
|
if ($request->getInt('id')) {
|
||||||
$conpherence = id(new ConpherenceThreadQuery())
|
$conpherence = id(new ConpherenceThreadQuery())
|
||||||
->setViewer($user)
|
->setViewer($user)
|
||||||
|
@ -32,6 +33,7 @@ final class ConpherenceColumnViewController extends
|
||||||
->needTransactions(true)
|
->needTransactions(true)
|
||||||
->setTransactionLimit(ConpherenceThreadQuery::TRANSACTION_LIMIT)
|
->setTransactionLimit(ConpherenceThreadQuery::TRANSACTION_LIMIT)
|
||||||
->executeOne();
|
->executeOne();
|
||||||
|
$should_404 = true;
|
||||||
} else if ($latest_participant) {
|
} else if ($latest_participant) {
|
||||||
$participant = head($latest_participant);
|
$participant = head($latest_participant);
|
||||||
$conpherence = id(new ConpherenceThreadQuery())
|
$conpherence = id(new ConpherenceThreadQuery())
|
||||||
|
@ -40,31 +42,44 @@ final class ConpherenceColumnViewController extends
|
||||||
->needTransactions(true)
|
->needTransactions(true)
|
||||||
->setTransactionLimit(ConpherenceThreadQuery::TRANSACTION_LIMIT)
|
->setTransactionLimit(ConpherenceThreadQuery::TRANSACTION_LIMIT)
|
||||||
->executeOne();
|
->executeOne();
|
||||||
|
$should_404 = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$conpherence) {
|
|
||||||
return new Aphront404Response();
|
|
||||||
}
|
|
||||||
$this->setConpherence($conpherence);
|
|
||||||
|
|
||||||
$participant = $conpherence->getParticipant($user->getPHID());
|
|
||||||
$transactions = $conpherence->getTransactions();
|
|
||||||
$latest_transaction = head($transactions);
|
|
||||||
$write_guard = AphrontWriteGuard::beginScopedUnguardedWrites();
|
|
||||||
$participant->markUpToDate($conpherence, $latest_transaction);
|
|
||||||
unset($write_guard);
|
|
||||||
|
|
||||||
$durable_column = id(new ConpherenceDurableColumnView())
|
$durable_column = id(new ConpherenceDurableColumnView())
|
||||||
->setUser($user)
|
->setUser($user)
|
||||||
->setSelectedConpherence($conpherence)
|
->setVisible(true);
|
||||||
->setConpherences($latest_conpherences)
|
if (!$conpherence) {
|
||||||
->setStyle(null);
|
if ($should_404) {
|
||||||
|
return new Aphront404Response();
|
||||||
|
}
|
||||||
|
|
||||||
|
$conpherence_id = null;
|
||||||
|
$conpherence_phid = null;
|
||||||
|
$latest_transaction_id = null;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$this->setConpherence($conpherence);
|
||||||
|
|
||||||
|
$participant = $conpherence->getParticipant($user->getPHID());
|
||||||
|
$transactions = $conpherence->getTransactions();
|
||||||
|
$latest_transaction = head($transactions);
|
||||||
|
$write_guard = AphrontWriteGuard::beginScopedUnguardedWrites();
|
||||||
|
$participant->markUpToDate($conpherence, $latest_transaction);
|
||||||
|
unset($write_guard);
|
||||||
|
|
||||||
|
$durable_column
|
||||||
|
->setSelectedConpherence($conpherence)
|
||||||
|
->setConpherences($latest_conpherences);
|
||||||
|
$conpherence_id = $conpherence->getID();
|
||||||
|
$conpherence_phid = $conpherence->getPHID();
|
||||||
|
$latest_transaction_id = $latest_transaction->getID();
|
||||||
|
}
|
||||||
|
|
||||||
$response = array(
|
$response = array(
|
||||||
'content' => hsprintf('%s', $durable_column),
|
'content' => hsprintf('%s', $durable_column),
|
||||||
'threadID' => $conpherence->getID(),
|
'threadID' => $conpherence_id,
|
||||||
'threadPHID' => $conpherence->getPHID(),
|
'threadPHID' => $conpherence_phid,
|
||||||
'latestTransactionID' => $latest_transaction->getID(),);
|
'latestTransactionID' => $latest_transaction_id,);
|
||||||
|
|
||||||
return id(new AphrontAjaxResponse())->setContent($response);
|
return id(new AphrontAjaxResponse())->setContent($response);
|
||||||
}
|
}
|
||||||
|
|
|
@ -193,7 +193,7 @@ final class ConpherenceDurableColumnView extends AphrontTagView {
|
||||||
|
|
||||||
if (!$conpherence) {
|
if (!$conpherence) {
|
||||||
|
|
||||||
$title = pht('Loading...');
|
$title = null;
|
||||||
$settings_button = null;
|
$settings_button = null;
|
||||||
$settings_menu = null;
|
$settings_menu = null;
|
||||||
|
|
||||||
|
@ -306,7 +306,24 @@ final class ConpherenceDurableColumnView extends AphrontTagView {
|
||||||
private function buildTransactions() {
|
private function buildTransactions() {
|
||||||
$conpherence = $this->getSelectedConpherence();
|
$conpherence = $this->getSelectedConpherence();
|
||||||
if (!$conpherence) {
|
if (!$conpherence) {
|
||||||
return pht('Loading...');
|
if (!$this->getVisible()) {
|
||||||
|
return pht('Loading...');
|
||||||
|
}
|
||||||
|
return array(
|
||||||
|
phutil_tag(
|
||||||
|
'div',
|
||||||
|
array(
|
||||||
|
'class' => 'mmb',
|
||||||
|
),
|
||||||
|
pht('You do not have any messages yet.')),
|
||||||
|
javelin_tag(
|
||||||
|
'a',
|
||||||
|
array(
|
||||||
|
'href' => '/conpherence/new/',
|
||||||
|
'class' => 'button grey',
|
||||||
|
'sigil' => 'workflow',
|
||||||
|
),
|
||||||
|
pht('Send a Message')),);
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = ConpherenceTransactionView::renderTransactions(
|
$data = ConpherenceTransactionView::renderTransactions(
|
||||||
|
@ -322,6 +339,10 @@ final class ConpherenceDurableColumnView extends AphrontTagView {
|
||||||
|
|
||||||
private function buildTextInput() {
|
private function buildTextInput() {
|
||||||
$conpherence = $this->getSelectedConpherence();
|
$conpherence = $this->getSelectedConpherence();
|
||||||
|
if (!$conpherence) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
$textarea = javelin_tag(
|
$textarea = javelin_tag(
|
||||||
'textarea',
|
'textarea',
|
||||||
array(
|
array(
|
||||||
|
@ -330,10 +351,6 @@ final class ConpherenceDurableColumnView extends AphrontTagView {
|
||||||
'sigil' => 'conpherence-durable-column-textarea',
|
'sigil' => 'conpherence-durable-column-textarea',
|
||||||
'placeholder' => pht('Send a message...'),
|
'placeholder' => pht('Send a message...'),
|
||||||
));
|
));
|
||||||
if (!$conpherence) {
|
|
||||||
return $textarea;
|
|
||||||
}
|
|
||||||
|
|
||||||
$id = $conpherence->getID();
|
$id = $conpherence->getID();
|
||||||
return phabricator_form(
|
return phabricator_form(
|
||||||
$this->getUser(),
|
$this->getUser(),
|
||||||
|
@ -358,6 +375,11 @@ final class ConpherenceDurableColumnView extends AphrontTagView {
|
||||||
}
|
}
|
||||||
|
|
||||||
private function buildSendButton() {
|
private function buildSendButton() {
|
||||||
|
$conpherence = $this->getSelectedConpherence();
|
||||||
|
if (!$conpherence) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
return javelin_tag(
|
return javelin_tag(
|
||||||
'button',
|
'button',
|
||||||
array(
|
array(
|
||||||
|
|
Loading…
Add table
Reference in a new issue