Skip to content

Commit

Permalink
Merge pull request #7 from claudebarde/staging
Browse files Browse the repository at this point in the history
Update with token convertor and in-app token transfers
  • Loading branch information
claudebarde authored Jun 29, 2021
2 parents 82f5537 + afa0f2e commit 3b13c96
Show file tree
Hide file tree
Showing 23 changed files with 1,198 additions and 122 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "my-tezos-defi",
"version": "1.0.0",
"version": "2.4.0",
"devDependencies": {
"@tsconfig/svelte": "^1.0.10",
"@types/node": "^14.14.33",
Expand Down
Binary file added public/images/usd.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
87 changes: 63 additions & 24 deletions src/App.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -56,19 +56,75 @@
)
];*/
const ops: Operation[] = [];
const balanceUpdateRequests: AvailableToken[] = [];
msg.data.msg.forEach(op => {
//console.log("Operation:", op);
const newOp: Operation = createNewOpEntry(op, $store.tokens);
ops.push(newOp);
if (
Object.values($store.tokens)
.map(tk => tk.address[$store.network])
.includes(op.target.address) &&
op?.parameter?.entrypoint === "transfer"
) {
// a transaction was sent to a token contract
//console.log("Transfer operation:", op);
let updatedTokensBalances = { ...$store.tokensBalances };
let token = Object.entries($store.tokens).find(
tk => tk[1].address[$store.network] === op.target.address
);
if (!token) return;
const paramValue = op.parameter.value;
let userBalance = updatedTokensBalances[token[0]];
if (Array.isArray(paramValue)) {
// FA2
paramValue.forEach(op => {
if (op.from_ === $store.userAddress) {
console.log("FA2 operation from user account:", op);
// token transfer from the user
op.txs.forEach(
tx => (userBalance -= +tx.amount / 10 ** token[1].decimals)
);
} else {
// token transfer to the user
op.txs.forEach(tx => {
if (tx.to_ === $store.userAddress) {
console.log("FA2 operation to user account:", op);
userBalance += +tx.amount / 10 ** token[1].decimals;
}
});
}
});
} else if (
paramValue.hasOwnProperty("to") &&
paramValue.hasOwnProperty("from") &&
paramValue.hasOwnProperty("value")
) {
// FA1.2
if (paramValue.from === $store.userAddress) {
console.log("FA1.2 operation from user account:", op);
// token transfer from the user
userBalance -= +paramValue.value / 10 ** token[1].decimals;
} else if (paramValue.to === $store.userAddress) {
console.log("FA1.2 operation to user account:", op);
// token transfer to the user
userBalance += +paramValue.value / 10 ** token[1].decimals;
}
}
// updates balance
updatedTokensBalances[token[0]] = userBalance;
// updates balances
store.updateTokensBalances(updatedTokensBalances);
} else if (
op.sender.address === $store.userAddress ||
op.target.address === $store.userAddress
) {
console.log("User operation:", op);
if (
//console.log("User operation:", op);
// Plenty GetReward
// Plenty stake/unstake
/*if (
op.sender.address === $store.userAddress &&
Object.keys($store.investments)
.filter(inv => inv.split("-")[0].toLowerCase() === "plenty")
Expand Down Expand Up @@ -110,31 +166,14 @@
) {
// user interacts with Quipuswap pool
console.log("Quipuswap interaction:", op);
}
}*/
}
});
store.updateLastOperations(ops);
if (balanceUpdateRequests.length > 0) {
const tokensToUpdate: { [p: string]: TokenContract } = {};
balanceUpdateRequests.forEach(token => {
if (!tokensToUpdate.hasOwnProperty(token)) {
tokensToUpdate[token] = $store.tokens[token];
}
});
const newBalances = await searchUserTokens({
Tezos: $store.Tezos,
network: $store.network,
userAddress: $store.userAddress,
tokens: tokensToUpdate,
tokensBalances: $store.tokensBalances
});
console.log("new balances:", newBalances, tokensToUpdate);
store.updateTokensBalances(newBalances);
const balance = await $store.Tezos.tz.getBalance($store.userAddress);
if (balance) {
store.updateTezBalance(balance.toNumber());
}
const balance = await $store.Tezos.tz.getBalance($store.userAddress);
if (balance) {
store.updateTezBalance(balance.toNumber());
}
}
};
Expand Down
31 changes: 22 additions & 9 deletions src/Routes/Main.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import Investments from "../lib/Investments/Investments.svelte";
import LastOperations from "../lib/LastOperations/LastOperations.svelte";
import Charts from "../lib/Charts/Charts.svelte";
import Settings from "../lib/Tools/Settings.svelte";
import Calculator from "../lib/Tools/Calculator.svelte";
import { calcTotalShareValueInTez } from "../utils";
let totalAmounts = { XTZ: undefined, TOKENS: undefined, FIAT: undefined };
Expand Down Expand Up @@ -91,7 +93,7 @@
data.info.forEach(farm => {
tempTotalInvestments += calcTotalShareValueInTez(
farm.amount,
data.shareValueInTez,
farm.shareValueInTez,
$store.tokensExchangeRates.CRUNCH.tokenToTez,
$store.tokens.CRUNCH.decimals
);
Expand Down Expand Up @@ -147,17 +149,17 @@
{:else}
N/A
{/if} - {#if totalAmounts.FIAT}
{totalAmounts.FIAT.toFixed(2)} USD
{totalAmounts.FIAT.toFixed(2)} {$store.xtzData.toFiat}
{:else}
N/A
{/if}
</div>
<div class="options">
{#if $store.userAddress}
<a href="#/profile">
<span class="material-icons"> account_circle </span>
</a>
{/if}
<a href="#/profile">
<span class="material-icons"> account_circle </span>
</a>
<Calculator />
<Settings />
</div>
</div>
<div class="stats">
Expand All @@ -168,7 +170,8 @@
{:else}
N/A
{/if} - {#if totalAmounts.FIAT}
{+(totalAmounts.TOKENS * $store.xtzData.exchangeRate).toFixed(2) / 1} USD
{+(totalAmounts.TOKENS * $store.xtzData.exchangeRate).toFixed(2) / 1}
{$store.xtzData.toFiat}
{:else}
N/A
{/if}
Expand All @@ -183,12 +186,22 @@
{#if totalInvestments.XTZ && totalInvestments.FIAT}
Investments: {+totalInvestments.XTZ.toFixed(2) / 1} XTZ - {+totalInvestments.FIAT.toFixed(
2
) / 1} USD
) / 1}
{$store.xtzData.toFiat}
{/if}
</div>
<div />
</div>
<br />
{:else}
<div class="stats">
<div />
<div class="options">
<Calculator />
<Settings />
</div>
</div>
<br />
{/if}
{#if $store.userAddress && Object.values($store.tokensBalances).some(el => el)}
<Assets {balancesInUsd} assetsType="owned" />
Expand Down
27 changes: 16 additions & 11 deletions src/Routes/TokenPage.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,12 @@
import { AvailableToken } from "../types";
import { createNewOpEntry, getKolibriOvens } from "../utils";
import KolibriOven from "../lib/Tools/KolibriOven.svelte";
import SendToken from "../lib/Tools/SendToken.svelte";
export let params;
let unsupportedToken = false;
let tokenSymbol: AvailableToken;
let tokenSymbol: AvailableToken | "XTZ";
let loading = true;
const contractCallResponseLimit = 500;
const days = 1;
Expand All @@ -23,10 +24,10 @@
onMount(async () => {
const { tokenSymbol: pTokenSymbol } = params;
tokenSymbol = pTokenSymbol;
if (Object.keys($store.tokens).includes(pTokenSymbol)) {
unsupportedToken = false;
tokenSymbol = pTokenSymbol;
// loads the contract transaction in the last 24 hours
let currentLevel = 0;
if ($store.lastOperations.length === 0) {
Expand Down Expand Up @@ -159,15 +160,17 @@

<br />
<br />
{#if unsupportedToken}
<div>
<a href="/#/">
<span class="material-icons"> arrow_back </span> Back
</a>
</div>
<br /><br />
{#if unsupportedToken && tokenSymbol !== "XTZ"}
<div>Unsupported or unknown token</div>
{:else if unsupportedToken && tokenSymbol === "XTZ"}
<div>Coming soon!</div>
{:else if !unsupportedToken && tokenSymbol}
<div>
<a href="/#/">
<span class="material-icons"> arrow_back </span> Back
</a>
</div>
<br /><br />
<div class="container">
<div class="title">General</div>
<div class="container-body">
Expand Down Expand Up @@ -247,16 +250,18 @@
).toFixed(2) / 1} XTZ
</div>
<div>
Total in USD: {+(
Total in {$store.xtzData.toFiat}: {+(
+$store.tokensBalances[tokenSymbol] *
$store.tokensExchangeRates[tokenSymbol].tokenToTez *
$store.xtzData.exchangeRate
).toFixed(2) / 1} USD
).toFixed(2) / 1}
{$store.xtzData.toFiat}
</div>
{:else}
<div>N/A</div>
{/if}
{/if}
<SendToken {tokenSymbol} />
</div>
</div>
<br />
Expand Down
9 changes: 8 additions & 1 deletion src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,5 +33,12 @@ export default {
"KT1PvEyN1xCFCgorN92QCfYjw3axS6jawCiJ",
"KT1SwH9P1Tx8a58Mm6qBExQFTcy2rwZyZiXS"
]
}
},
plentyWithdrawalFeeSchema:
// number of levels since staking: percentage
[
[12288, 10],
[8192, 12.5],
[4096, 25]
]
};
16 changes: 11 additions & 5 deletions src/lib/Assets/Box.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -189,10 +189,13 @@
<!-- if XTZ-->
{#if token === "tez" && $store.xtzData.exchangeRate}
<div>
1 XTZ = {+$store.xtzData.exchangeRate.toFixed(5) / 1} USD
1 XTZ = {+$store.xtzData.exchangeRate.toFixed(5) / 1}
{$store.xtzData.toFiat}
</div>
<div>
1 USD = {+($store.xtzData.exchangeRate / 10).toFixed(5) / 1} XTZ
1 {$store.xtzData.toFiat} = {+(
$store.xtzData.exchangeRate / 10
).toFixed(5) / 1} XTZ
</div>
{:else if token === "tez" && !$store.xtzData.exchangeRate}
<div>No data</div>
Expand Down Expand Up @@ -221,7 +224,8 @@
<div>
{balancesInUsd[token[0]]
? balancesInUsd[token[0]].toFixed(2) / 1
: ""} USD
: ""}
{$store.xtzData.toFiat}
</div>
{:else}
<div>N/A</div>
Expand All @@ -237,7 +241,8 @@
{+(
($store.xtzData.balance / 10 ** 6) *
$store.xtzData.exchangeRate
).toFixed(5) / 1} USD
).toFixed(5) / 1}
{$store.xtzData.toFiat}
</div>
{:else}
<div>N/A</div>
Expand Down Expand Up @@ -273,8 +278,9 @@
<canvas id="trendChart" width="400" height="300" />
</div>
<div slot="modal-footer" class="modal-footer">
<div />
<button
class="default"
class="button default"
on:click={() => {
trendModalOpen = false;
}}
Expand Down
Loading

0 comments on commit 3b13c96

Please sign in to comment.