#include "balance_recent_tx.h" #include "../../config/version.h" #include #include #include namespace dragonx { namespace ui { namespace { std::string truncateRecentAddress(const std::string& address, int maxLen) { if (address.length() <= static_cast(maxLen)) return address; int half = (maxLen - 3) / 2; return address.substr(0, half) + "..." + address.substr(address.length() - half); } std::string formatRecentAmount(const std::string& type, double amount) { char buffer[32]; snprintf(buffer, sizeof(buffer), "%s%.4f %s", type == "send" ? "-" : "+", std::abs(amount), DRAGONX_TICKER); return std::string(buffer); } std::string recentTimeAgo(int64_t timestamp) { if (timestamp <= 0) return ""; int64_t now = static_cast(std::time(nullptr)); int64_t diff = now - timestamp; if (diff < 0) diff = 0; if (diff < 60) return std::to_string(diff) + "s ago"; if (diff < 3600) return std::to_string(diff / 60) + "m ago"; if (diff < 86400) return std::to_string(diff / 3600) + "h ago"; return std::to_string(diff / 86400) + "d ago"; } } RecentTxDisplay buildRecentTxDisplay(const TransactionInfo& tx, int addressMaxLen) { return { tx.getTypeDisplay(), truncateRecentAddress(tx.address, addressMaxLen), formatRecentAmount(tx.type, tx.amount), recentTimeAgo(tx.timestamp) }; } } // namespace ui } // namespace dragonx