+
+
+ Some characters have been discarded
+
+
+
diff --git a/src/js/index.js b/src/js/index.js
index 9bd77b9..6a2fea6 100644
--- a/src/js/index.js
+++ b/src/js/index.js
@@ -38,6 +38,7 @@
DOM.entropyWordCount = DOM.entropyContainer.find(".word-count");
DOM.entropyBinary = DOM.entropyContainer.find(".binary");
DOM.entropyMnemonicLength = DOM.entropyContainer.find(".mnemonic-length");
+ DOM.entropyFilterWarning = DOM.entropyContainer.find(".filter-warning");
DOM.phrase = $(".phrase");
DOM.passphrase = $(".passphrase");
DOM.generateContainer = $(".generate-container");
@@ -1061,6 +1062,16 @@
DOM.entropyWordCount.text(wordCount);
DOM.entropyBinary.text(entropy.binaryStr);
DOM.entropyBitsPerEvent.text(bitsPerEvent);
+ // detect and warn of filtering
+ var rawNoSpaces = DOM.entropy.val().replace(/\s/g, "");
+ var cleanNoSpaces = entropy.cleanStr.replace(/\s/g, "");
+ var isFiltered = rawNoSpaces.length != cleanNoSpaces.length;
+ if (isFiltered) {
+ DOM.entropyFilterWarning.removeClass('hidden');
+ }
+ else {
+ DOM.entropyFilterWarning.addClass('hidden');
+ }
}
function getEntropyTypeStr(entropy) {
diff --git a/tests.js b/tests.js
index 8965f80..34eff96 100644
--- a/tests.js
+++ b/tests.js
@@ -4306,6 +4306,44 @@ page.open(url, function(status) {
});
},
+// github issue 99
+// https://github.com/iancoleman/bip39/issues/99#issuecomment-327094159
+// "warn me emphatically when they have detected invalid input" to the entropy field
+// A warning is shown when entropy is filtered and discarded
+function() {
+page.open(url, function(status) {
+ // use entropy
+ page.evaluate(function() {
+ $(".use-entropy").prop("checked", true).trigger("change");
+ $(".entropy").val("00000000 00000000 00000000 00000000").trigger("input");
+ });
+ // check the filter warning does not show
+ waitForGenerate(function() {
+ var warningIsHidden = page.evaluate(function() {
+ return $(".entropy-container .filter-warning").hasClass("hidden");
+ });
+ if (!warningIsHidden) {
+ console.log("Entropy filter warning is showing when it should not");
+ fail();
+ }
+ page.evaluate(function() {
+ $(".entropy").val("10000000 zxcvbn 00000000 00000000 00000000").trigger("input");
+ });
+ // check the filter warning shows
+ waitForEntropyFeedback(function() {
+ var warningIsHidden = page.evaluate(function() {
+ return $(".entropy-container .filter-warning").hasClass("hidden");
+ });
+ if (warningIsHidden) {
+ console.log("Entropy filter warning is not showing when it should");
+ fail();
+ }
+ next();
+ });
+ });
+});
+},
+
// If you wish to add more tests, do so here...
// Here is a blank test template