Dynamically load all balances from Safe
This commit is contained in:
@@ -1,22 +1,22 @@
|
||||
import Service from '@ember/service';
|
||||
import { tracked } from '@glimmer/tracking';
|
||||
import { A } from '@ember/array';
|
||||
import { timeout } from 'ember-concurrency';
|
||||
import { task } from 'ember-concurrency-decorators';
|
||||
import config from 'kredits-web/config/environment';
|
||||
|
||||
const txServiceBaseUrl = `${config.gnosisSafe.txServiceHost}/api/v1/safes/${config.gnosisSafe.address}`;
|
||||
|
||||
export default class CommunityFundsService extends Service {
|
||||
@tracked balanceETH = { balance: 0, balanceUsd: 0, usdConversion: 0 };
|
||||
@tracked balanceWBTC = { balance: 0, balanceUsd: 0, usdConversion: 0 };
|
||||
@tracked balancesLoaded = false;
|
||||
@tracked balances = A([]);
|
||||
|
||||
@task
|
||||
*fetchBalances () {
|
||||
const uri = `${txServiceBaseUrl}/balances/usd/`;
|
||||
|
||||
yield fetch(uri).then(res => res.json())
|
||||
.then(res => {
|
||||
this.processBalances(res);
|
||||
})
|
||||
.then(res => this.processBalances(res))
|
||||
.catch(err => {
|
||||
console.log(`[community-funds] Fetching balances failed:`);
|
||||
console.error(err);
|
||||
@@ -24,9 +24,19 @@ export default class CommunityFundsService extends Service {
|
||||
}
|
||||
|
||||
processBalances (res) {
|
||||
// TODO proper selection/find
|
||||
const { balance, balanceUsd, usdConversion } = res[0];
|
||||
this.balanceETH = { balance, balanceUsd, usdConversion };
|
||||
this.balanceWBTC = res[1];
|
||||
for (const balance of res) {
|
||||
if (balance.token) {
|
||||
// ERC20 token, has all meta data
|
||||
this.balances.pushObject(balance);
|
||||
} else {
|
||||
// ETH, missing meta data
|
||||
this.balances.pushObject({
|
||||
...balance,
|
||||
...{ token: { name: 'Ether', symbol: 'ETH'} }
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
this.balancesLoaded = true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user