mirror of
https://github.com/feather-wallet/feather.git
synced 2024-12-22 11:39:25 +00:00
txinfo: warn if integrated address is missing
This commit is contained in:
parent
da0d7e7100
commit
b0a64231b9
6 changed files with 44 additions and 5 deletions
2
monero
2
monero
|
@ -1 +1 @@
|
|||
Subproject commit 16e051c8a880a63aacdd217f24c55f9f6154bb00
|
||||
Subproject commit d50ba728d79cc3a96c928f7736503268ad567cba
|
|
@ -70,10 +70,14 @@ TxInfoDialog::TxInfoDialog(Wallet *wallet, TransactionRow *txInfo, QWidget *pare
|
|||
ui->frameInputs->hide();
|
||||
// }
|
||||
|
||||
ui->frame_destinationsWarning->hide();
|
||||
|
||||
QTextCursor cursor = ui->outputs->textCursor();
|
||||
|
||||
auto transfers = txInfo->transfers();
|
||||
if (!transfers.isEmpty()) {
|
||||
bool hasIntegrated = false;
|
||||
|
||||
for (const auto& transfer : transfers) {
|
||||
auto address = transfer->address();
|
||||
auto amount = WalletManager::displayAmount(transfer->amount());
|
||||
|
@ -81,9 +85,21 @@ TxInfoDialog::TxInfoDialog(Wallet *wallet, TransactionRow *txInfo, QWidget *pare
|
|||
cursor.insertText(address, Utils::addressTextFormat(index, transfer->amount()));
|
||||
cursor.insertText(QString(" %1").arg(amount), QTextCharFormat());
|
||||
cursor.insertBlock();
|
||||
|
||||
if (WalletManager::baseAddressFromIntegratedAddress(transfer->address(), constants::networkType) != transfer->address()) {
|
||||
hasIntegrated = true;
|
||||
}
|
||||
}
|
||||
ui->label_outputs->setText(QString("Destinations (%2)").arg(QString::number(transfers.size())));
|
||||
this->adjustHeight(ui->outputs, transfers.size());
|
||||
|
||||
// Trezor saves a mangled payment ID.
|
||||
if (m_wallet->isTrezor() && !hasIntegrated && txInfo->hasPaymentId()) {
|
||||
ui->frame_destinationsWarning->setInfo(icons()->icon("warning"), "The address displayed here does not contain a payment ID. "
|
||||
"If you are making a repeat payment to a service, "
|
||||
"do not copy the address from here to prevent a loss of funds.");
|
||||
ui->frame_destinationsWarning->show();
|
||||
}
|
||||
} else {
|
||||
ui->frameOutputs->hide();
|
||||
}
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>929</width>
|
||||
<height>715</height>
|
||||
<height>723</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
|
@ -184,6 +184,16 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="InfoFrame" name="frame_destinationsWarning">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QTextEdit" name="outputs">
|
||||
<property name="sizePolicy">
|
||||
|
@ -287,6 +297,14 @@
|
|||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>InfoFrame</class>
|
||||
<extends>QFrame</extends>
|
||||
<header>components.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
|
|
@ -75,10 +75,10 @@ void TransactionHistory::refresh()
|
|||
clearRows();
|
||||
|
||||
quint64 lastTxHeight = 0;
|
||||
bool hasFakePaymentId = m_wallet->isTrezor();
|
||||
m_locked = false;
|
||||
m_minutesToUnlock = 0;
|
||||
|
||||
|
||||
uint64_t min_height = 0;
|
||||
uint64_t max_height = (uint64_t)-1;
|
||||
uint64_t wallet_height = m_wallet->blockChainHeight();
|
||||
|
@ -176,7 +176,7 @@ void TransactionHistory::refresh()
|
|||
// single output transaction might contain multiple transfers
|
||||
for (auto const &d: pd.m_dests)
|
||||
{
|
||||
Transfer *transfer = new Transfer(d.amount, QString::fromStdString(d.address(m_wallet2->nettype(), pd.m_payment_id)), this);
|
||||
Transfer *transfer = new Transfer(d.amount, QString::fromStdString(d.address(m_wallet2->nettype(), pd.m_payment_id, !hasFakePaymentId)), this);
|
||||
t->m_transfers.append(transfer);
|
||||
}
|
||||
for (auto const &r: pd.m_rings)
|
||||
|
@ -229,7 +229,7 @@ void TransactionHistory::refresh()
|
|||
|
||||
for (auto const &d: pd.m_dests)
|
||||
{
|
||||
Transfer *transfer = new Transfer(d.amount, QString::fromStdString(d.address(m_wallet2->nettype(), pd.m_payment_id)), this);
|
||||
Transfer *transfer = new Transfer(d.amount, QString::fromStdString(d.address(m_wallet2->nettype(), pd.m_payment_id, !hasFakePaymentId)), this);
|
||||
t->m_transfers.append(transfer);
|
||||
}
|
||||
for (auto const &r: pd.m_rings)
|
||||
|
|
|
@ -167,6 +167,10 @@ QString TransactionRow::rings_formatted() const
|
|||
return rings;
|
||||
}
|
||||
|
||||
bool TransactionRow::hasPaymentId() const {
|
||||
return m_paymentId != "0000000000000000";
|
||||
}
|
||||
|
||||
TransactionRow::~TransactionRow()
|
||||
{
|
||||
qDeleteAll(m_transfers);
|
||||
|
|
|
@ -52,6 +52,7 @@ public:
|
|||
QList<QString> destinations() const;
|
||||
QList<Transfer*> transfers() const;
|
||||
QString rings_formatted() const;
|
||||
bool hasPaymentId() const;
|
||||
|
||||
private:
|
||||
explicit TransactionRow(QObject *parent);
|
||||
|
|
Loading…
Reference in a new issue