From: tobtoht Date: Sun, 16 Feb 2025 10:49:20 +0000 (+0100) Subject: MainWindow: improve tx history export error handling X-Git-Url: https://git.nutra.tk/v2?a=commitdiff_plain;h=f447b78f4a49628036e73fc5f67811e28c7c04fb;p=gamesguru%2Ffeather.git MainWindow: improve tx history export error handling --- diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 4a54c729..48a7237e 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -1711,13 +1711,26 @@ void MainWindow::onTxPoolBacklog(const QVector &backlog, quint64 origin } void MainWindow::onExportHistoryCSV() { - QString fn = QFileDialog::getSaveFileName(this, "Save CSV file", QDir::homePath(), "CSV (*.csv)"); - if (fn.isEmpty()) + QString filePath = QFileDialog::getSaveFileName(this, "Save CSV file", QDir::homePath(), "CSV (*.csv)"); + if (filePath.isEmpty()) return; - if (!fn.endsWith(".csv")) - fn += ".csv"; - m_wallet->history()->writeCSV(fn); - Utils::showInfo(this, "CSV export", QString("Transaction history exported to %1").arg(fn)); + if (!filePath.endsWith(".csv")) + filePath += ".csv"; + QFileInfo fileInfo(filePath); + QDir dir = fileInfo.absoluteDir(); + + if (!dir.exists()) { + Utils::showError(this, "Unable to export transaction history", QString("Path does not exist: %1").arg(dir.absolutePath())); + return; + } + + bool success = m_wallet->history()->writeCSV(filePath); + if (!success) { + Utils::showError(this, "Unable to export transaction history", QString("No permission to write to: %1").arg(filePath)); + return; + } + + Utils::showInfo(this, "CSV export", QString("Transaction history exported to %1").arg(filePath)); } void MainWindow::onImportHistoryDescriptionsCSV() { diff --git a/src/libwalletqt/TransactionHistory.cpp b/src/libwalletqt/TransactionHistory.cpp index 7102f3ee..3df32850 100644 --- a/src/libwalletqt/TransactionHistory.cpp +++ b/src/libwalletqt/TransactionHistory.cpp @@ -400,9 +400,6 @@ bool TransactionHistory::writeCSV(const QString &path) { data += line; } - if (data.isEmpty()) - return false; - data = QString("blockHeight,timestamp,date,accountIndex,direction,balanceDelta,amount,fee,txid,description,paymentId,fiatAmount,fiatCurrency%1").arg(data); return Utils::fileWrite(path, data); }