Feat: check and fix FLO data when sending FLO

This commit is contained in:
sairaj mote 2021-02-24 18:35:19 +05:30
parent f9f276533c
commit ecd003ce56
6 changed files with 97 additions and 12 deletions

View File

@ -22,7 +22,7 @@ body {
--background-color: #efefef; --background-color: #efefef;
--error-color: red; --error-color: red;
color: rgba(var(--text-color), 1); color: rgba(var(--text-color), 1);
background: url(lighthouse.svg) no-repeat; background: url(lighthouse.svg) no-repeat center;
background-size: cover; background-size: cover;
} }
@ -378,7 +378,12 @@ sm-textarea {
} }
.contact-card__more { .contact-card__more {
padding: 0.2rem; padding: 0.4rem;
}
.more-icon {
height: 1.2rem;
width: 1.2rem;
} }
#add_contact_button { #add_contact_button {

2
css/main.min.css vendored

File diff suppressed because one or more lines are too long

View File

@ -20,7 +20,7 @@ body{
--background-color: #efefef; --background-color: #efefef;
--error-color: red; --error-color: red;
color: rgba(var(--text-color), 1); color: rgba(var(--text-color), 1);
background: url(lighthouse.svg) no-repeat; background: url(lighthouse.svg) no-repeat center;
background-size: cover; background-size: cover;
} }
body[data-theme='dark']{ body[data-theme='dark']{
@ -333,7 +333,11 @@ sm-textarea{
grid-template-columns: 1fr auto; grid-template-columns: 1fr auto;
} }
.contact-card__more{ .contact-card__more{
padding: 0.2rem; padding: 0.4rem;
}
.more-icon{
height: 1.2rem;
width: 1.2rem;
} }
#add_contact_button{ #add_contact_button{

View File

@ -81,10 +81,27 @@
border: 1px transparent solid; border: 1px transparent solid;
} }
.flex{
display: flex;
}
.grid{
display: grid;
}
.column-grid{
grid-auto-flow: column;
}
.align-center{
align-items: center;
}
.gap-1{
gap: 1rem;
}
.primaryButton { .primaryButton {
background: var(--accent-color) !important; background: var(--accent-color) !important;
color: white !important; color: white !important;
border: 1px solid var(--accent-color); border: 1px solid var(--accent-color);
width: 100%;
} }
.primaryButton:hover { .primaryButton:hover {
@ -205,6 +222,11 @@
margin: 0.4rem 0.8rem; margin: 0.4rem 0.8rem;
} }
#flo_data_status:not(:empty){
color: red;
padding: 0.5rem 0;
}
#overlay { #overlay {
opacity: 0; opacity: 0;
pointer-events: none; pointer-events: none;
@ -542,6 +564,9 @@
opacity: 0; opacity: 0;
pointer-events: none; pointer-events: none;
} }
.hide-completely{
display: none;
}
#menu { #menu {
display: none; display: none;
@ -1989,6 +2014,11 @@
<label>FLO data</label> <label>FLO data</label>
<div id="show_character_count">1040/1040</div> <div id="show_character_count">1040/1040</div>
</div> </div>
<p id="flo_data_status"></p>
<div id="flo_data_options" class="grid column-grid gap-1 hide-completely">
<button class="primaryButton" id="remove_invalid_button" onclick="removeInvalid()">Fix</button>
<button class="primaryButton" id="check_flo_data_button" onclick="checkFloData()">Check FLO data</button>
</div>
<button class="primaryButton" id="sendBtn" onclick="showPrivKeyPage()" disabled>Send</button> <button class="primaryButton" id="sendBtn" onclick="showPrivKeyPage()" disabled>Send</button>
</div> </div>
</div> </div>
@ -2146,7 +2176,6 @@
mode = setInterval(() => { mode = setInterval(() => {
let d = new Date(), let d = new Date(),
t = d.getHours(); t = d.getHours();
console.log(t);
if (t > 6 && t < 18) { if (t > 6 && t < 18) {
daylight(); daylight();
} else { } else {
@ -2761,6 +2790,7 @@
floWebWallet.sendTransaction(sender, receiver, amount, floData, privKey).then((transactionid) => { floWebWallet.sendTransaction(sender, receiver, amount, floData, privKey).then((transactionid) => {
document.getElementById('transactionId').textContent = `transaction ID : ${transactionid}`; document.getElementById('transactionId').textContent = `transaction ID : ${transactionid}`;
showInnerPage('transaction-complete'); showInnerPage('transaction-complete');
document.getElementById('sdright').querySelectorAll('input, textarea').forEach(field => field.value = '')
}).catch((error) => { }).catch((error) => {
alert(error) alert(error)
}) })
@ -2796,15 +2826,58 @@
} }
let showCharacterCount = document.getElementById('show_character_count') let showCharacterCount = document.getElementById('show_character_count')
document.getElementById('flotextdata').addEventListener('input', function(e){ let isFloDataChanged = false
const floDataOptions = document.getElementById('flo_data_options')
const checkFloDataButton = document.getElementById('check_flo_data_button')
const sendFloDataButton = document.getElementById('sendBtn')
const sentFloData = document.getElementById('flotextdata')
const floDataStaus = document.getElementById('flo_data_status')
sentFloData.addEventListener('keydown', function(e){
if(this.value.length > 1040) if(this.value.length > 1040)
e.preventDefault() e.preventDefault()
})
sentFloData.addEventListener('input', function(e){
isFloDataChanged = true
if(this.value.trim() !== ''){
sendFloDataButton.classList.add('hide-completely')
floDataOptions.classList.remove('hide-completely')
}
else{
sendFloDataButton.classList.remove('hide-completely')
floDataOptions.classList.add('hide-completely')
}
if(1040 - this.value.length){ if(1040 - this.value.length){
showCharacterCount.textContent = `${1040 - this.value.length}/1040` showCharacterCount.textContent = `${1040 - this.value.length}/1040`
} }
else else
showCharacterCount.textContent = `You can only add FLO data upto 1040 characters.` showCharacterCount.textContent = `You can only add FLO data upto 1040 characters.`
}) })
function checkFloData(){
isFloDataChanged = false
const floDataText = sentFloData.value.trim()
let isValid = true
for(char of floDataText){
// if(/^[a-z0-9\s!"#$%&'()*+,.\/:;<=>?@\[\]^_`{|}~-]*$/i.test(char)){
if(!/^[\x20-\x7E\s]+/.test(char)){
isValid = false
break;
}
}
if(isValid){
sendFloDataButton.classList.remove('hide-completely')
floDataOptions.classList.add('hide-completely')
floDataStaus.textContent = ''
}
else{
floDataStaus.textContent = 'FLO data contains invalid characters. Use "Fix" to remove invalid characters.'
}
}
function removeInvalid(){
const floDataText = sentFloData.value.trim()
sentFloData.value = floDataText.replace(/[^\x20-\x7E]*/gm, '')
checkFloData()
}
</script> </script>
<script> <script>

View File

@ -152,7 +152,7 @@
<div class="grid contact__grid align-center"> <div class="grid contact__grid align-center">
<h4 class="contact-card__name">Sairaj</h4> <h4 class="contact-card__name">Sairaj</h4>
<button class="contact-card__more"> <button class="contact-card__more">
<svg class="icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 3c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 14c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-7c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/></svg> <svg class="icon more-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 3c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 14c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-7c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"/></svg>
</button> </button>
</div> </div>
</li> </li>

View File

@ -866,7 +866,7 @@ smCheckbox.innerHTML = `
pointer-events: none; pointer-events: none;
} }
</style> </style>
<label class="checkbox"> <label class="checkbox" tabindex="0">
<input type="checkbox"> <input type="checkbox">
<svg class="icon" viewBox="0 0 64 64"> <svg class="icon" viewBox="0 0 64 64">
<title>checkbox</title> <title>checkbox</title>
@ -4085,12 +4085,15 @@ customElements.define('pin-input',
} }
handleKeydown = (e) => { handleKeydown = (e) => {
const activeInput = e.target.closest('input') const activeInput = e.target.closest('input')
if (/[0-9]/.test(e.key)) { if (/[0-9]/.test(e.key)) {
if (activeInput.value.trim().length > 2) { if (activeInput.value.trim().length > 2) {
e.preventDefault(); e.preventDefault();
} }
else { else {
if (activeInput.value.trim().length === 1) {
activeInput.value = e.key
}
if (activeInput.nextElementSibling) { if (activeInput.nextElementSibling) {
setTimeout(() => { setTimeout(() => {
activeInput.nextElementSibling.focus(); activeInput.nextElementSibling.focus();