Feature and UI upadate
-- added option to directly deposit rupee to RanchiMall exchange -- moved saved FLO IDs from home page to new separate contacts page -- Layout changes
This commit is contained in:
parent
79a387fb7c
commit
e0d955e1c1
52
css/main.css
52
css/main.css
@ -375,7 +375,7 @@ ul {
|
|||||||
justify-self: end;
|
justify-self: end;
|
||||||
}
|
}
|
||||||
|
|
||||||
.direction-column {
|
.flex-direction-column {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -722,18 +722,16 @@ ul {
|
|||||||
#home {
|
#home {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
padding: 0;
|
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
#home .scrolling-wrapper > * {
|
#home > * {
|
||||||
margin: 0 1.5rem;
|
|
||||||
margin-bottom: 2rem;
|
margin-bottom: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
#user,
|
#user,
|
||||||
#cashier {
|
#cashier {
|
||||||
position: relative;
|
position: relative;
|
||||||
padding-bottom: 4rem;
|
padding-bottom: 1rem;
|
||||||
align-content: flex-start;
|
align-content: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -790,27 +788,43 @@ ul {
|
|||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
#wallet_actions_wrapper {
|
.actions-wrapper {
|
||||||
display: grid;
|
display: grid;
|
||||||
gap: 0.5rem;
|
gap: 0.5rem;
|
||||||
grid-template-columns: repeat(auto-fill, minmax(4rem, 1fr));
|
grid-template-columns: repeat(auto-fill, minmax(4rem, 1fr));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.wallet-action .icon:first-of-type,
|
||||||
|
.integrated-action-button .icon:first-of-type {
|
||||||
|
height: 2.5rem;
|
||||||
|
width: 2.5rem;
|
||||||
|
padding: 0.6rem;
|
||||||
|
fill: rgba(var(--foreground-color), 1);
|
||||||
|
background-color: var(--accent-color);
|
||||||
|
border-radius: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
.wallet-action {
|
.wallet-action {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
|
white-space: initial;
|
||||||
}
|
}
|
||||||
.wallet-action .icon {
|
.wallet-action .icon {
|
||||||
height: 2.5rem;
|
|
||||||
width: 2.5rem;
|
|
||||||
padding: 0.6rem;
|
|
||||||
margin-bottom: 0.8rem;
|
margin-bottom: 0.8rem;
|
||||||
fill: rgba(var(--foreground-color), 1);
|
}
|
||||||
background-color: var(--accent-color);
|
|
||||||
border-radius: 2rem;
|
.integrated-action-button {
|
||||||
|
padding: 0.8rem 0;
|
||||||
|
justify-content: initial;
|
||||||
|
}
|
||||||
|
.integrated-action-button .icon:first-of-type {
|
||||||
|
margin-right: 1rem;
|
||||||
|
}
|
||||||
|
.integrated-action-button .icon:last-of-type {
|
||||||
|
margin-left: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cashier-status {
|
.cashier-status {
|
||||||
@ -848,10 +862,18 @@ ul {
|
|||||||
fill: rgba(0, 0, 0, 0.8);
|
fill: rgba(0, 0, 0, 0.8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#contacts {
|
||||||
|
position: relative;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
#contacts .scrolling-wrapper {
|
||||||
|
padding: 0 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
#saved_ids_list {
|
#saved_ids_list {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: minmax(0, 1fr);
|
grid-template-columns: minmax(0, 1fr);
|
||||||
margin-top: 1rem;
|
padding-bottom: 5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.saved-id {
|
.saved-id {
|
||||||
@ -1367,6 +1389,10 @@ ul {
|
|||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.integrated-action-button .icon:last-of-type {
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@media screen and (min-width: 40rem) {
|
@media screen and (min-width: 40rem) {
|
||||||
sm-popup {
|
sm-popup {
|
||||||
|
|||||||
2
css/main.min.css
vendored
2
css/main.min.css
vendored
File diff suppressed because one or more lines are too long
@ -342,7 +342,7 @@ ul {
|
|||||||
justify-self: end;
|
justify-self: end;
|
||||||
}
|
}
|
||||||
|
|
||||||
.direction-column {
|
.flex-direction-column {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -677,19 +677,15 @@ ul {
|
|||||||
#home {
|
#home {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
padding: 0;
|
|
||||||
position: relative;
|
position: relative;
|
||||||
.scrolling-wrapper {
|
& > * {
|
||||||
& > * {
|
margin-bottom: 2rem;
|
||||||
margin: 0 1.5rem;
|
|
||||||
margin-bottom: 2rem;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#user,
|
#user,
|
||||||
#cashier {
|
#cashier {
|
||||||
position: relative;
|
position: relative;
|
||||||
padding-bottom: 4rem;
|
padding-bottom: 1rem;
|
||||||
align-content: flex-start;
|
align-content: flex-start;
|
||||||
}
|
}
|
||||||
#wallet_cards_wrapper {
|
#wallet_cards_wrapper {
|
||||||
@ -742,25 +738,41 @@ ul {
|
|||||||
font-size: 1rem;
|
font-size: 1rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#wallet_actions_wrapper {
|
.actions-wrapper {
|
||||||
display: grid;
|
display: grid;
|
||||||
gap: 0.5rem;
|
gap: 0.5rem;
|
||||||
grid-template-columns: repeat(auto-fill, minmax(4rem, 1fr));
|
grid-template-columns: repeat(auto-fill, minmax(4rem, 1fr));
|
||||||
}
|
}
|
||||||
|
.wallet-action,
|
||||||
|
.integrated-action-button {
|
||||||
|
.icon:first-of-type {
|
||||||
|
height: 2.5rem;
|
||||||
|
width: 2.5rem;
|
||||||
|
padding: 0.6rem;
|
||||||
|
fill: rgba(var(--foreground-color), 1);
|
||||||
|
background-color: var(--accent-color);
|
||||||
|
border-radius: 2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
.wallet-action {
|
.wallet-action {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
font-size: 0.8rem;
|
font-size: 0.8rem;
|
||||||
|
white-space: initial;
|
||||||
.icon {
|
.icon {
|
||||||
height: 2.5rem;
|
|
||||||
width: 2.5rem;
|
|
||||||
padding: 0.6rem;
|
|
||||||
margin-bottom: 0.8rem;
|
margin-bottom: 0.8rem;
|
||||||
fill: rgba(var(--foreground-color), 1);
|
}
|
||||||
background-color: var(--accent-color);
|
}
|
||||||
border-radius: 2rem;
|
.integrated-action-button {
|
||||||
|
padding: 0.8rem 0;
|
||||||
|
justify-content: initial;
|
||||||
|
.icon:first-of-type {
|
||||||
|
margin-right: 1rem;
|
||||||
|
}
|
||||||
|
.icon:last-of-type {
|
||||||
|
margin-left: 0.5rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.cashier-status {
|
.cashier-status {
|
||||||
@ -796,10 +808,17 @@ ul {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#contacts {
|
||||||
|
position: relative;
|
||||||
|
padding: 0;
|
||||||
|
.scrolling-wrapper {
|
||||||
|
padding: 0 1.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
#saved_ids_list {
|
#saved_ids_list {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: minmax(0, 1fr);
|
grid-template-columns: minmax(0, 1fr);
|
||||||
margin-top: 1rem;
|
padding-bottom: 5rem;
|
||||||
}
|
}
|
||||||
.saved-id {
|
.saved-id {
|
||||||
grid-template-columns: auto 1fr;
|
grid-template-columns: auto 1fr;
|
||||||
@ -1286,6 +1305,11 @@ ul {
|
|||||||
right: 0;
|
right: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.integrated-action-button {
|
||||||
|
.icon:last-of-type {
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@media screen and (min-width: 40rem) {
|
@media screen and (min-width: 40rem) {
|
||||||
sm-popup {
|
sm-popup {
|
||||||
|
|||||||
443
index.html
443
index.html
File diff suppressed because one or more lines are too long
1255
scripts/floExchangeAPI.js
Normal file
1255
scripts/floExchangeAPI.js
Normal file
File diff suppressed because it is too large
Load Diff
53
scripts/floTokenAPI.js
Normal file
53
scripts/floTokenAPI.js
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
/* Token Operator to send/receive tokens from blockchain using API calls*/
|
||||||
|
(function(GLOBAL) {
|
||||||
|
const floTokenAPI = GLOBAL.floTokenAPI = {
|
||||||
|
fetch_api: function(apicall) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
console.log(floGlobals.tokenURL + apicall);
|
||||||
|
fetch(floGlobals.tokenURL + apicall).then(response => {
|
||||||
|
if (response.ok)
|
||||||
|
response.json().then(data => resolve(data));
|
||||||
|
else
|
||||||
|
reject(response)
|
||||||
|
}).catch(error => reject(error))
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getBalance: function(floID, token = floGlobals.currency) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
this.fetch_api(`api/v1.0/getFloAddressBalance?token=${token}&floAddress=${floID}`)
|
||||||
|
.then(result => resolve(result.balance || 0))
|
||||||
|
.catch(error => reject(error))
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getTx: function(txID) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
this.fetch_api(`api/v1.0/getTransactionDetails/${txID}`).then(res => {
|
||||||
|
if (res.result === "error")
|
||||||
|
reject(res.description);
|
||||||
|
else if (!res.parsedFloData)
|
||||||
|
reject("Data piece (parsedFloData) missing");
|
||||||
|
else if (!res.transactionDetails)
|
||||||
|
reject("Data piece (transactionDetails) missing");
|
||||||
|
else
|
||||||
|
resolve(res);
|
||||||
|
}).catch(error => reject(error))
|
||||||
|
})
|
||||||
|
},
|
||||||
|
sendToken: function(privKey, amount, receiverID, message = "", token = floGlobals.currency) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
let senderID = floCrypto.getFloID(privKey);
|
||||||
|
if (typeof amount !== "number" || amount <= 0)
|
||||||
|
return reject("Invalid amount");
|
||||||
|
this.getBalance(senderID, token).then(bal => {
|
||||||
|
if (amount > bal)
|
||||||
|
return reject(`Insufficient ${token}# balance`);
|
||||||
|
floBlockchainAPI.writeData(senderID, `send ${amount} ${token}# ${message}`, privKey, receiverID)
|
||||||
|
.then(txid => resolve(txid))
|
||||||
|
.catch(error => reject(error))
|
||||||
|
}).catch(error => reject(error))
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})(typeof global !== "undefined" ? global : window);
|
||||||
@ -99,6 +99,27 @@ function withdrawMoneyFromWallet() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function transferToExchange() {
|
||||||
|
const amount = parseFloat(getRef('exchange_transfer__amount').value.trim());
|
||||||
|
buttonLoader('exchange_transfer__button', true);
|
||||||
|
floExchangeAPI.depositToken('rupee', amount, myFloID, 'FRJkPqdbbsug3TtQRAWviqvTL9Qr2EMnrm', myPrivKey).then(txid => {
|
||||||
|
console.log(txid);
|
||||||
|
showProcessStage('exchange_transfer_process', 1);
|
||||||
|
getRef('exchange_transfer__success_message').textContent = `Transferred ${formatAmount(amount)} to exchange`;
|
||||||
|
}).catch(error => {
|
||||||
|
console.log(error);
|
||||||
|
if (error.code) {
|
||||||
|
error = error.message;
|
||||||
|
}
|
||||||
|
if (error === 'Insufficient rupee# balance')
|
||||||
|
error = 'Insufficient rupee token balance in your wallet, please top-up your wallet.';
|
||||||
|
getRef('exchange_transfer__failed_reason').textContent = error;
|
||||||
|
showProcessStage('exchange_transfer_process', 2);
|
||||||
|
}).finally(() => {
|
||||||
|
buttonLoader('exchange_transfer__button', false);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
async function renderSavedUpiIds() {
|
async function renderSavedUpiIds() {
|
||||||
const frag = document.createDocumentFragment();
|
const frag = document.createDocumentFragment();
|
||||||
for (const upiId in floGlobals.savedUserData.upiIds) {
|
for (const upiId in floGlobals.savedUserData.upiIds) {
|
||||||
|
|||||||
@ -132,6 +132,9 @@ document.addEventListener('popupclosed', e => {
|
|||||||
getRef('select_upi_id').parentNode.classList.add('hide')
|
getRef('select_upi_id').parentNode.classList.add('hide')
|
||||||
getRef('select_upi_id').innerHTML = ''
|
getRef('select_upi_id').innerHTML = ''
|
||||||
break;
|
break;
|
||||||
|
case 'transfer_to_exchange_popup':
|
||||||
|
showProcessStage('exchange_transfer_process', 0);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user