mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-07-21 06:11:46 -04:00
add preference to clear sensitive data after days (#1859)
This commit is contained in:
parent
ca1dde03f5
commit
922fb6df24
24 changed files with 132 additions and 18 deletions
|
@ -189,7 +189,6 @@ class CoreTradesService {
|
|||
verifyTradeIsNotClosed(tradeId);
|
||||
var trade = getOpenTrade(tradeId).orElseThrow(() ->
|
||||
new IllegalArgumentException(format("trade with id '%s' not found", tradeId)));
|
||||
log.info("Keeping funds received from trade {}", tradeId);
|
||||
tradeManager.onTradeCompleted(trade);
|
||||
}
|
||||
|
||||
|
|
|
@ -392,7 +392,7 @@ public final class Dispute implements NetworkPayload, PersistablePayload {
|
|||
change += "chat messages;";
|
||||
}
|
||||
if (change.length() > 0) {
|
||||
log.info("cleared sensitive data from {} of dispute for trade {}", change, Utilities.getShortId(getTradeId()));
|
||||
log.info("Cleared sensitive data from {} of dispute for trade {}", change, Utilities.getShortId(getTradeId()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -261,18 +261,12 @@ public final class Contract implements NetworkPayload {
|
|||
}
|
||||
|
||||
public boolean maybeClearSensitiveData() {
|
||||
return false; // TODO: anything to clear?
|
||||
return false; // nothing to clear
|
||||
}
|
||||
|
||||
// edits a contract json string
|
||||
public static String sanitizeContractAsJson(String contractAsJson) {
|
||||
return contractAsJson
|
||||
.replaceAll(
|
||||
"\"takerPaymentAccountPayload\": \\{[^}]*}",
|
||||
"\"takerPaymentAccountPayload\": null")
|
||||
.replaceAll(
|
||||
"\"makerPaymentAccountPayload\": \\{[^}]*}",
|
||||
"\"makerPaymentAccountPayload\": null");
|
||||
return contractAsJson; // nothing to sanitize because the contract does not contain the payment account payloads
|
||||
}
|
||||
|
||||
public void printDiff(@Nullable String peersContractAsJson) {
|
||||
|
|
|
@ -1586,11 +1586,24 @@ public abstract class Trade extends XmrWalletBase implements Tradable, Model {
|
|||
|
||||
public void maybeClearSensitiveData() {
|
||||
String change = "";
|
||||
if (contract != null && contract.maybeClearSensitiveData()) {
|
||||
change += "contract;";
|
||||
}
|
||||
if (processModel != null && processModel.maybeClearSensitiveData()) {
|
||||
change += "processModel;";
|
||||
}
|
||||
if (contractAsJson != null) {
|
||||
String edited = Contract.sanitizeContractAsJson(contractAsJson);
|
||||
if (!edited.equals(contractAsJson)) {
|
||||
contractAsJson = edited;
|
||||
change += "contractAsJson;";
|
||||
}
|
||||
}
|
||||
if (removeAllChatMessages()) {
|
||||
change += "chat messages;";
|
||||
}
|
||||
if (change.length() > 0) {
|
||||
log.info("cleared sensitive data from {} of trade {}", change, getShortId());
|
||||
log.info("Cleared sensitive data from {} of {} {}", change, getClass().getSimpleName(), getShortId());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -326,6 +326,17 @@ public class ProcessModel implements Model, PersistablePayload {
|
|||
getAccountAgeWitnessService().getAccountAgeWitnessUtils().witnessDebugLog(trade, null);
|
||||
}
|
||||
|
||||
public boolean maybeClearSensitiveData() {
|
||||
boolean changed = false;
|
||||
for (TradePeer tradingPeer : getTradePeers()) {
|
||||
if (tradingPeer.getPaymentAccountPayload() != null || tradingPeer.getContractAsJson() != null) {
|
||||
tradingPeer.setPaymentAccountPayload(null);
|
||||
tradingPeer.setContractAsJson(null);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
return changed;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Delegates
|
||||
|
|
|
@ -109,8 +109,8 @@ public final class Preferences implements PersistedDataHost, BridgeAddressProvid
|
|||
));
|
||||
|
||||
public static final boolean USE_SYMMETRIC_SECURITY_DEPOSIT = true;
|
||||
public static final int CLEAR_DATA_AFTER_DAYS_INITIAL = 99999; // feature effectively disabled until user agrees to settings notification
|
||||
public static final int CLEAR_DATA_AFTER_DAYS_DEFAULT = 60; // used when user has agreed to settings notification
|
||||
public static final int CLEAR_DATA_AFTER_DAYS_DEFAULT = 60; // used with new instance or when existing user has agreed to settings notification
|
||||
public static final int CLEAR_DATA_AFTER_DAYS_DISABLED = 99999; // feature effectively disabled until existing user agrees to settings notification
|
||||
|
||||
|
||||
// payload is initialized so the default values are available for Property initialization.
|
||||
|
@ -309,6 +309,10 @@ public final class Preferences implements PersistedDataHost, BridgeAddressProvid
|
|||
setIgnoreDustThreshold(600);
|
||||
}
|
||||
|
||||
if (prefPayload.getClearDataAfterDays() < 1) {
|
||||
setClearDataAfterDays(Preferences.CLEAR_DATA_AFTER_DAYS_DISABLED);
|
||||
}
|
||||
|
||||
// For users from old versions the 4 flags a false but we want to have it true by default
|
||||
// PhoneKeyAndToken is also null so we can use that to enable the flags
|
||||
if (prefPayload.getPhoneKeyAndToken() == null) {
|
||||
|
|
|
@ -122,7 +122,7 @@ public final class PreferencesPayload implements PersistableEnvelope {
|
|||
private String takeOfferSelectedPaymentAccountId;
|
||||
private double securityDepositAsPercent = getDefaultSecurityDepositAsPercent();
|
||||
private int ignoreDustThreshold = 600;
|
||||
private int clearDataAfterDays = Preferences.CLEAR_DATA_AFTER_DAYS_INITIAL;
|
||||
private int clearDataAfterDays = Preferences.CLEAR_DATA_AFTER_DAYS_DEFAULT;
|
||||
private double securityDepositAsPercentForCrypto = getDefaultSecurityDepositAsPercent();
|
||||
private int blockNotifyPort;
|
||||
private boolean tacAcceptedV120;
|
||||
|
|
|
@ -1337,6 +1337,7 @@ setting.preferences.notifyOnPreRelease=Receive pre-release notifications
|
|||
setting.preferences.resetAllFlags=Reset all \"Don't show again\" flags
|
||||
settings.preferences.languageChange=To apply the language change to all screens requires a restart.
|
||||
settings.preferences.supportLanguageWarning=In case of a dispute, please note that arbitration is handled in {0}.
|
||||
setting.preferences.clearDataAfterDays=Clear sensitive data after (days)
|
||||
settings.preferences.editCustomExplorer.headline=Explorer Settings
|
||||
settings.preferences.editCustomExplorer.description=Choose a system defined explorer from the list on the left, and/or \
|
||||
customize to suit your own preferences.
|
||||
|
@ -1346,6 +1347,15 @@ settings.preferences.editCustomExplorer.name=Name
|
|||
settings.preferences.editCustomExplorer.txUrl=Transaction URL
|
||||
settings.preferences.editCustomExplorer.addressUrl=Address URL
|
||||
|
||||
setting.info.headline=New data-privacy feature
|
||||
settings.preferences.sensitiveDataRemoval.msg=To protect the privacy of yourself and other traders, Haveno intends to \
|
||||
remove sensitive data from old trades. This is particularly important for fiat trades which may include bank \
|
||||
account details.\n\n\
|
||||
The threshold for data removal can be configured on this screen via the field "Clear sensitive data after (days)". \
|
||||
It is recommended to set it as low as possible, for example 60 days. That means trades from more than 60 \
|
||||
days ago will have sensitive data cleared, as long as they are completed. Completed trades are found in the \
|
||||
Portfolio / History tab.
|
||||
|
||||
settings.net.xmrHeader=Monero network
|
||||
settings.net.p2pHeader=Haveno network
|
||||
settings.net.onionAddressLabel=My onion address
|
||||
|
|
|
@ -1309,6 +1309,9 @@ settings.preferences.editCustomExplorer.name=Jméno
|
|||
settings.preferences.editCustomExplorer.txUrl=Transakční URL
|
||||
settings.preferences.editCustomExplorer.addressUrl=Adresa URL
|
||||
|
||||
setting.info.headline=Nová funkce ochrany osobních údajů
|
||||
settings.preferences.sensitiveDataRemoval.msg=Aby byla chráněna vaše soukromí i soukromí ostatních obchodníků, Haveno zamýšlí odstranit citlivá data ze starých obchodů.\n\nDoporučuje se nastavit tento limit co nejníže, například na 60 dní. To znamená, že obchody starší než 60 dní budou mít citlivá data odstraněna, pokud jsou dokončené. Dokončené obchody najdete na záložce Portfolio / Historie.
|
||||
|
||||
settings.net.xmrHeader=Síť Monero
|
||||
settings.net.p2pHeader=Síť Haveno
|
||||
settings.net.onionAddressLabel=Moje onion adresa
|
||||
|
|
|
@ -1044,6 +1044,9 @@ settings.preferences.editCustomExplorer.name=Name
|
|||
settings.preferences.editCustomExplorer.txUrl=Transaktions-URL
|
||||
settings.preferences.editCustomExplorer.addressUrl=Adress-URL
|
||||
|
||||
setting.info.headline=Neue Datenschutzfunktion
|
||||
settings.preferences.sensitiveDataRemoval.msg=Zum Schutz der Privatsphäre von Ihnen und anderen Händlern beabsichtigt Haveno, sensible Daten aus alten Trades zu entfernen. Dies ist besonders wichtig bei Fiat-Trades, die Bankkontodaten enthalten können.\n\nEs wird empfohlen, den Wert so niedrig wie möglich zu setzen, zum Beispiel 60 Tage. Das bedeutet, dass Trades, die älter als 60 Tage sind, sensible Daten gelöscht bekommen, sofern sie abgeschlossen sind. Abgeschlossene Trades finden Sie im Portfolio- / Verlauf-Reiter.
|
||||
|
||||
settings.net.xmrHeader=Monero-Netzwerk
|
||||
settings.net.p2pHeader=Haveno-Netzwerk
|
||||
settings.net.onionAddressLabel=Meine Onion-Adresse
|
||||
|
|
|
@ -1045,6 +1045,9 @@ settings.preferences.editCustomExplorer.name=Nombre
|
|||
settings.preferences.editCustomExplorer.txUrl=URL de transacción
|
||||
settings.preferences.editCustomExplorer.addressUrl=URL de la dirección
|
||||
|
||||
setting.info.headline=Nueva función de privacidad de datos
|
||||
settings.preferences.sensitiveDataRemoval.msg=Para proteger la privacidad de usted y otros traders, Haveno pretende eliminar datos sensibles de las operaciones antiguas. Esto es especialmente importante para las operaciones con fiat que pueden incluir detalles de cuentas bancarias.\n\nSe recomienda configurarlo lo más bajo posible, por ejemplo, 60 días. Esto significa que las operaciones de hace más de 60 días tendrán los datos sensibles eliminados, siempre que estén completadas. Las operaciones completadas se encuentran en la pestaña Portafolio / Historial.
|
||||
|
||||
settings.net.xmrHeader=Red Monero
|
||||
settings.net.p2pHeader=Red Haveno
|
||||
settings.net.onionAddressLabel=Mi dirección onion
|
||||
|
|
|
@ -1041,6 +1041,9 @@ settings.preferences.editCustomExplorer.name=نام
|
|||
settings.preferences.editCustomExplorer.txUrl=Transaction URL
|
||||
settings.preferences.editCustomExplorer.addressUrl=Address URL
|
||||
|
||||
setting.info.headline=ویژگی جدید حفظ حریم خصوصی دادهها
|
||||
settings.preferences.sensitiveDataRemoval.msg=برای محافظت از حریم خصوصی شما و سایر معاملهگران، Haveno قصد دارد دادههای حساس مربوط به معاملات قدیمی را حذف کند. این موضوع به ویژه برای معاملات فیات که ممکن است شامل جزئیات حساب بانکی باشند اهمیت دارد.\n\nتوصیه میشود این مقدار را تا حد امکان پایین تنظیم کنید، مثلاً ۶۰ روز. این بدان معناست که معاملاتی که بیش از ۶۰ روز از آنها گذشته و تکمیل شدهاند، دادههای حساس آنها پاک خواهد شد. معاملات تکمیل شده در تب «پرتفوی / تاریخچه» یافت میشوند.
|
||||
|
||||
settings.net.xmrHeader=شبکه بیتکوین
|
||||
settings.net.p2pHeader=Haveno network
|
||||
settings.net.onionAddressLabel=آدرس onion من
|
||||
|
|
|
@ -1046,6 +1046,9 @@ settings.preferences.editCustomExplorer.name=Nom
|
|||
settings.preferences.editCustomExplorer.txUrl=URL de la transaction
|
||||
settings.preferences.editCustomExplorer.addressUrl=Addresse URL
|
||||
|
||||
setting.info.headline=Nouvelle fonctionnalité de confidentialité des données
|
||||
settings.preferences.sensitiveDataRemoval.msg=Pour protéger la vie privée de vous-même et des autres traders, Haveno a l'intention de supprimer les données sensibles des anciennes transactions. Cela est particulièrement important pour les transactions en fiat qui peuvent inclure des informations bancaires.\n\nIl est recommandé de régler ce délai aussi bas que possible, par exemple 60 jours. Cela signifie que les transactions datant de plus de 60 jours verront leurs données sensibles supprimées, tant qu'elles sont terminées. Les transactions terminées se trouvent dans l'onglet Portefeuille / Historique.
|
||||
|
||||
settings.net.xmrHeader=Réseau Monero
|
||||
settings.net.p2pHeader=Le réseau Haveno
|
||||
settings.net.onionAddressLabel=Mon adresse onion
|
||||
|
|
|
@ -1043,6 +1043,9 @@ settings.preferences.editCustomExplorer.name=Nome
|
|||
settings.preferences.editCustomExplorer.txUrl=Transaction URL
|
||||
settings.preferences.editCustomExplorer.addressUrl=Address URL
|
||||
|
||||
setting.info.headline=Nuova funzione per la privacy dei dati
|
||||
settings.preferences.sensitiveDataRemoval.msg=Per proteggere la privacy tua e degli altri trader, Haveno intende rimuovere i dati sensibili dalle vecchie transazioni. Questo è particolarmente importante per le transazioni in valuta fiat che possono includere dettagli del conto bancario.\n\nSi consiglia di impostare questo valore il più basso possibile, ad esempio 60 giorni. Questo significa che le transazioni completate da più di 60 giorni avranno i dati sensibili cancellati. Le transazioni completate si trovano nella scheda Portafoglio / Cronologia.
|
||||
|
||||
settings.net.xmrHeader=Network Monero
|
||||
settings.net.p2pHeader=Rete Haveno
|
||||
settings.net.onionAddressLabel=Il mio indirizzo onion
|
||||
|
|
|
@ -1044,6 +1044,9 @@ settings.preferences.editCustomExplorer.name=名義
|
|||
settings.preferences.editCustomExplorer.txUrl=トランザクションURL
|
||||
settings.preferences.editCustomExplorer.addressUrl=アドレスURL
|
||||
|
||||
setting.info.headline=新しいデータプライバシー機能
|
||||
settings.preferences.sensitiveDataRemoval.msg=ご自身および他のトレーダーのプライバシーを保護するため、Havenoは過去の取引から機密データを削除する予定です。これは銀行口座情報を含む可能性のある法定通貨の取引で特に重要です。\n\n可能な限り低く設定することをお勧めします。例えば60日です。これは、60日以上前の完了した取引の機密データが削除されることを意味します。完了した取引はポートフォリオ/履歴タブで確認できます。
|
||||
|
||||
settings.net.xmrHeader=ビットコインのネットワーク
|
||||
settings.net.p2pHeader=Havenoネットワーク
|
||||
settings.net.onionAddressLabel=私のonionアドレス
|
||||
|
|
|
@ -1045,6 +1045,9 @@ settings.preferences.editCustomExplorer.name=Nome
|
|||
settings.preferences.editCustomExplorer.txUrl=Transaction URL
|
||||
settings.preferences.editCustomExplorer.addressUrl=Address URL
|
||||
|
||||
setting.info.headline=Nova funcionalidade de privacidade de dados
|
||||
settings.preferences.sensitiveDataRemoval.msg=Para proteger a privacidade sua e de outros traders, o Haveno pretende remover dados sensíveis de negociações antigas. Isso é particularmente importante para negociações com moedas fiduciárias que podem incluir detalhes de conta bancária.\n\nÉ recomendado definir o menor valor possível, por exemplo, 60 dias. Isso significa que negociações com mais de 60 dias terão os dados sensíveis removidos, desde que estejam concluídas. Negociações concluídas podem ser encontradas na aba Portfólio / Histórico.
|
||||
|
||||
settings.net.xmrHeader=Rede Monero
|
||||
settings.net.p2pHeader=Rede Haveno
|
||||
settings.net.onionAddressLabel=Meu endereço onion
|
||||
|
|
|
@ -1042,6 +1042,9 @@ settings.preferences.editCustomExplorer.name=Nome
|
|||
settings.preferences.editCustomExplorer.txUrl=Transaction URL
|
||||
settings.preferences.editCustomExplorer.addressUrl=Address URL
|
||||
|
||||
setting.info.headline=Nova funcionalidade de privacidade de dados
|
||||
settings.preferences.sensitiveDataRemoval.msg=Para proteger a privacidade sua e de outros negociadores, o Haveno pretende remover dados sensíveis de negociações antigas. Isso é particularmente importante para negociações com moedas fiduciárias que podem incluir detalhes de conta bancária.\n\nRecomenda-se definir o prazo o mais baixo possível, por exemplo, 60 dias. Isso significa que negociações com mais de 60 dias terão os dados sensíveis removidos, desde que estejam concluídas. Negociações concluídas podem ser encontradas na aba Portfólio / Histórico.
|
||||
|
||||
settings.net.xmrHeader=Rede Monero
|
||||
settings.net.p2pHeader=Rede do Haveno
|
||||
settings.net.onionAddressLabel=O meu endereço onion
|
||||
|
|
|
@ -1041,6 +1041,9 @@ settings.preferences.editCustomExplorer.name=Имя
|
|||
settings.preferences.editCustomExplorer.txUrl=Transaction URL
|
||||
settings.preferences.editCustomExplorer.addressUrl=Address URL
|
||||
|
||||
setting.info.headline=Новая функция защиты данных
|
||||
settings.preferences.sensitiveDataRemoval.msg=Для защиты вашей и других трейдеров конфиденциальности Haveno намерен удалять конфиденциальные данные из старых сделок. Это особенно важно для сделок с фиатной валютой, которые могут включать данные банковских счетов.\n\nРекомендуется установить минимальный срок, например, 60 дней. Это означает, что сделки старше 60 дней будут очищены от конфиденциальных данных, при условии, что они завершены. Завершённые сделки находятся во вкладке «Портфель / История».
|
||||
|
||||
settings.net.xmrHeader=Сеть Биткойн
|
||||
settings.net.p2pHeader=Haveno network
|
||||
settings.net.onionAddressLabel=Мой onion-адрес
|
||||
|
|
|
@ -1041,6 +1041,9 @@ settings.preferences.editCustomExplorer.name=ชื่อ
|
|||
settings.preferences.editCustomExplorer.txUrl=Transaction URL
|
||||
settings.preferences.editCustomExplorer.addressUrl=Address URL
|
||||
|
||||
setting.info.headline=คุณสมบัติความเป็นส่วนตัวข้อมูลใหม่
|
||||
settings.preferences.sensitiveDataRemoval.msg=เพื่อปกป้องความเป็นส่วนตัวของคุณและผู้ซื้อขายอื่นๆ Haveno ตั้งใจที่จะลบข้อมูลที่ละเอียดอ่อนจากการซื้อขายเก่า ซึ่งมีความสำคัญอย่างยิ่งสำหรับการซื้อขายฟิอาทที่อาจมีรายละเอียดบัญชีธนาคาร\n\nแนะนำให้ตั้งค่านี้ให้ต่ำที่สุดเท่าที่จะเป็นไปได้ เช่น 60 วัน ซึ่งหมายความว่าการซื้อขายที่เกิน 60 วันจะถูกลบข้อมูลที่ละเอียดอ่อน ตราบใดที่การซื้อขายนั้นเสร็จสมบูรณ์ การซื้อขายที่เสร็จสมบูรณ์สามารถดูได้ในแท็บพอร์ตโฟลิโอ / ประวัติ
|
||||
|
||||
settings.net.xmrHeader=เครือข่าย Monero
|
||||
settings.net.p2pHeader=Haveno network
|
||||
settings.net.onionAddressLabel=ที่อยู่ onion ของฉัน
|
||||
|
|
|
@ -1305,6 +1305,9 @@ settings.preferences.editCustomExplorer.name=İsim
|
|||
settings.preferences.editCustomExplorer.txUrl=İşlem URL'si
|
||||
settings.preferences.editCustomExplorer.addressUrl=Adres URL'si
|
||||
|
||||
setting.info.headline=Yeni veri gizliliği özelliği
|
||||
settings.preferences.sensitiveDataRemoval.msg=Kendinizin ve diğer tacirlerin gizliliğini korumak için Haveno, eski işlemlerden hassas verileri kaldırmayı planlamaktadır. Bu, banka hesap bilgilerini içerebilecek fiat işlemleri için özellikle önemlidir.\n\nVeri silme eşiğinin mümkün olduğunca düşük, örneğin 60 gün olarak ayarlanması önerilir. Bu, 60 günden eski ve tamamlanmış işlemlerde hassas verilerin temizleneceği anlamına gelir. Tamamlanmış işlemler Portföy / Geçmiş sekmesinde bulunabilir.
|
||||
|
||||
settings.net.xmrHeader=Monero ağı
|
||||
settings.net.p2pHeader=Haveno ağı
|
||||
settings.net.onionAddressLabel=Onion adresim
|
||||
|
|
|
@ -1043,6 +1043,9 @@ settings.preferences.editCustomExplorer.name=Tên
|
|||
settings.preferences.editCustomExplorer.txUrl=Transaction URL
|
||||
settings.preferences.editCustomExplorer.addressUrl=Address URL
|
||||
|
||||
setting.info.headline=Tính năng bảo mật dữ liệu mới
|
||||
settings.preferences.sensitiveDataRemoval.msg=Để bảo vệ quyền riêng tư của bạn và các nhà giao dịch khác, Haveno dự định sẽ xóa dữ liệu nhạy cảm khỏi các giao dịch cũ. Điều này đặc biệt quan trọng đối với các giao dịch tiền pháp định có thể bao gồm thông tin tài khoản ngân hàng.\n\nBạn nên đặt giá trị này càng thấp càng tốt, ví dụ 60 ngày. Điều đó có nghĩa là các giao dịch đã hoàn thành từ hơn 60 ngày trước sẽ bị xóa dữ liệu nhạy cảm. Các giao dịch đã hoàn thành có thể được tìm thấy trong tab Danh mục đầu tư / Lịch sử.
|
||||
|
||||
settings.net.xmrHeader=Mạng Monero
|
||||
settings.net.p2pHeader=Haveno network
|
||||
settings.net.onionAddressLabel=Địa chỉ onion của tôi
|
||||
|
|
|
@ -1044,6 +1044,9 @@ settings.preferences.editCustomExplorer.name=名称
|
|||
settings.preferences.editCustomExplorer.txUrl=交易 URL
|
||||
settings.preferences.editCustomExplorer.addressUrl=地址 URL
|
||||
|
||||
setting.info.headline=新的数据隐私功能
|
||||
settings.preferences.sensitiveDataRemoval.msg=为了保护您和其他交易者的隐私,Haveno 计划从旧交易中删除敏感数据。这对于可能包含银行账户信息的法币交易尤其重要。\n\n建议将其设置得尽可能低,例如 60 天。这意味着超过 60 天且已完成的交易将被清除敏感数据。已完成的交易可在“投资组合 / 历史”标签中找到。
|
||||
|
||||
settings.net.xmrHeader=比特币网络
|
||||
settings.net.p2pHeader=Haveno 网络
|
||||
settings.net.onionAddressLabel=我的匿名地址
|
||||
|
|
|
@ -1044,6 +1044,9 @@ settings.preferences.editCustomExplorer.name=名稱
|
|||
settings.preferences.editCustomExplorer.txUrl=交易 URL
|
||||
settings.preferences.editCustomExplorer.addressUrl=地址 URL
|
||||
|
||||
setting.info.headline=新的資料隱私功能
|
||||
settings.preferences.sensitiveDataRemoval.msg=為了保護您與其他交易者的隱私,Haveno 計劃從舊交易中移除敏感資料。這對於可能包含銀行帳戶資訊的法幣交易尤其重要。\n\n建議將此設定設為盡可能低,例如 60 天。這表示只要交易已完成且超過 60 天,敏感資料將被清除。已完成的交易可在「投資組合 / 歷史」標籤中找到。
|
||||
|
||||
settings.net.xmrHeader=比特幣網絡
|
||||
settings.net.p2pHeader=Haveno 網絡
|
||||
settings.net.onionAddressLabel=我的匿名地址
|
||||
|
|
|
@ -39,6 +39,7 @@ import haveno.core.payment.PaymentAccount;
|
|||
import haveno.core.payment.payload.PaymentMethod;
|
||||
import haveno.core.payment.validation.XmrValidator;
|
||||
import haveno.core.trade.HavenoUtils;
|
||||
import haveno.core.user.DontShowAgainLookup;
|
||||
import haveno.core.user.Preferences;
|
||||
import haveno.core.user.User;
|
||||
import haveno.core.util.FormattingUtils;
|
||||
|
@ -111,7 +112,7 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Preferenc
|
|||
private int gridRow = 0;
|
||||
private int displayCurrenciesGridRowIndex = 0;
|
||||
private InputTextField ignoreTradersListInputTextField,
|
||||
autoConfRequiredConfirmationsTf, autoConfServiceAddressTf, autoConfTradeLimitTf, /*referralIdInputTextField,*/
|
||||
autoConfRequiredConfirmationsTf, autoConfServiceAddressTf, autoConfTradeLimitTf, clearDataAfterDaysInputTextField,
|
||||
rpcUserTextField, blockNotifyPortTextField;
|
||||
private PasswordTextField rpcPwTextField;
|
||||
|
||||
|
@ -135,7 +136,7 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Preferenc
|
|||
private ObservableList<TradeCurrency> tradeCurrencies;
|
||||
private InputTextField deviationInputTextField;
|
||||
private ChangeListener<String> deviationListener, ignoreTradersListListener,
|
||||
rpcUserListener, rpcPwListener, blockNotifyPortListener,
|
||||
rpcUserListener, rpcPwListener, blockNotifyPortListener, clearDataAfterDaysListener,
|
||||
autoConfTradeLimitListener, autoConfServiceAddressListener;
|
||||
private ChangeListener<Boolean> deviationFocusedListener;
|
||||
private final boolean displayStandbyModeFeature;
|
||||
|
@ -184,6 +185,24 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Preferenc
|
|||
|
||||
@Override
|
||||
protected void activate() {
|
||||
String key = "sensitiveDataRemovalInfo";
|
||||
if (DontShowAgainLookup.showAgain(key) &&
|
||||
(preferences.getClearDataAfterDays() == 0 ||
|
||||
preferences.getClearDataAfterDays() == Preferences.CLEAR_DATA_AFTER_DAYS_DISABLED)) { // existing users must agree to new feature
|
||||
new Popup()
|
||||
.headLine(Res.get("setting.info.headline"))
|
||||
.backgroundInfo(Res.get("settings.preferences.sensitiveDataRemoval.msg"))
|
||||
.actionButtonText(Res.get("shared.iUnderstand"))
|
||||
.onAction(() -> {
|
||||
DontShowAgainLookup.dontShowAgain(key, true);
|
||||
// user has acknowledged, enable the feature with a reasonable default value
|
||||
preferences.setClearDataAfterDays(Preferences.CLEAR_DATA_AFTER_DAYS_DEFAULT);
|
||||
clearDataAfterDaysInputTextField.setText(String.valueOf(preferences.getClearDataAfterDays()));
|
||||
})
|
||||
.closeButtonText(Res.get("shared.cancel"))
|
||||
.show();
|
||||
}
|
||||
|
||||
// We want to have it updated in case an asset got removed
|
||||
allCryptoCurrencies = FXCollections.observableArrayList(CurrencyUtil.getActiveSortedCryptoCurrencies(filterManager));
|
||||
allCryptoCurrencies.removeAll(cryptoCurrencies);
|
||||
|
@ -207,7 +226,7 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Preferenc
|
|||
///////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
private void initializeGeneralOptions() {
|
||||
int titledGroupBgRowSpan = displayStandbyModeFeature ? 7 : 6;
|
||||
int titledGroupBgRowSpan = displayStandbyModeFeature ? 8 : 7;
|
||||
TitledGroupBg titledGroupBg = addTitledGroupBg(root, gridRow, titledGroupBgRowSpan, Res.get("setting.preferences.general"));
|
||||
GridPane.setColumnSpan(titledGroupBg, 1);
|
||||
|
||||
|
@ -257,6 +276,22 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Preferenc
|
|||
}
|
||||
};
|
||||
|
||||
// clearDataAfterDays
|
||||
clearDataAfterDaysInputTextField = addInputTextField(root, ++gridRow, Res.get("setting.preferences.clearDataAfterDays"));
|
||||
IntegerValidator clearDataAfterDaysValidator = new IntegerValidator();
|
||||
clearDataAfterDaysValidator.setMinValue(1);
|
||||
clearDataAfterDaysValidator.setMaxValue(Preferences.CLEAR_DATA_AFTER_DAYS_DISABLED);
|
||||
clearDataAfterDaysInputTextField.setValidator(clearDataAfterDaysValidator);
|
||||
clearDataAfterDaysListener = (observable, oldValue, newValue) -> {
|
||||
try {
|
||||
int value = Integer.parseInt(newValue);
|
||||
if (!newValue.equals(oldValue)) {
|
||||
preferences.setClearDataAfterDays(value);
|
||||
}
|
||||
} catch (Throwable ignore) {
|
||||
}
|
||||
};
|
||||
|
||||
if (displayStandbyModeFeature) {
|
||||
// AvoidStandbyModeService feature works only on OSX & Windows
|
||||
avoidStandbyMode = addSlideToggleButton(root, ++gridRow,
|
||||
|
@ -264,7 +299,7 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Preferenc
|
|||
}
|
||||
|
||||
useSoundForNotifications = addSlideToggleButton(root, ++gridRow,
|
||||
Res.get("setting.preferences.useSoundForNotifications"));
|
||||
Res.get("setting.preferences.useSoundForNotifications"), -5); // TODO: why must negative value be used to place toggle consistently?
|
||||
}
|
||||
|
||||
private void initializeSeparator() {
|
||||
|
@ -613,6 +648,7 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Preferenc
|
|||
ignoreTradersListInputTextField.setText(String.join(", ", preferences.getIgnoreTradersList()));
|
||||
/* referralIdService.getOptionalReferralId().ifPresent(referralId -> referralIdInputTextField.setText(referralId));
|
||||
referralIdInputTextField.setPromptText(Res.get("setting.preferences.refererId.prompt"));*/
|
||||
clearDataAfterDaysInputTextField.setText(String.valueOf(preferences.getClearDataAfterDays()));
|
||||
userLanguageComboBox.setItems(languageCodes);
|
||||
userLanguageComboBox.getSelectionModel().select(preferences.getUserLanguage());
|
||||
userLanguageComboBox.setConverter(new StringConverter<>() {
|
||||
|
@ -672,6 +708,7 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Preferenc
|
|||
|
||||
ignoreTradersListInputTextField.textProperty().addListener(ignoreTradersListListener);
|
||||
//referralIdInputTextField.textProperty().addListener(referralIdListener);
|
||||
clearDataAfterDaysInputTextField.textProperty().addListener(clearDataAfterDaysListener);
|
||||
}
|
||||
|
||||
private void activateDisplayCurrencies() {
|
||||
|
@ -805,6 +842,7 @@ public class PreferencesView extends ActivatableViewAndModel<GridPane, Preferenc
|
|||
deviationInputTextField.focusedProperty().removeListener(deviationFocusedListener);
|
||||
ignoreTradersListInputTextField.textProperty().removeListener(ignoreTradersListListener);
|
||||
//referralIdInputTextField.textProperty().removeListener(referralIdListener);
|
||||
clearDataAfterDaysInputTextField.textProperty().removeListener(clearDataAfterDaysListener);
|
||||
}
|
||||
|
||||
private void deactivateDisplayCurrencies() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue