Skip to content

Commit

Permalink
Merge pull request #180 from greymass/dev
Browse files Browse the repository at this point in the history
USDT, SEOS, BOX and USN bridges support (#178)
  • Loading branch information
aaroncox authored Dec 14, 2023
2 parents 6d9ba7f + aa07787 commit ce67e27
Show file tree
Hide file tree
Showing 24 changed files with 1,327 additions and 393 deletions.
4 changes: 3 additions & 1 deletion src/auth.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {getClient} from './api-client'
import {appId, chains} from './config'
import {activeEvmSession, activeSession, availableSessions} from './store'
import {startEvmSession} from './lib/evm'
import {fetchBalances} from './stores/balances'

const transport = new Transport({
requestStatus: false,
Expand Down Expand Up @@ -101,6 +102,7 @@ export async function activate(id: SessionLike) {

if (get(activeEvmSession)) {
activeEvmSession.set(undefined)
startEvmSession()
await startEvmSession()
fetchBalances(get(activeSession), true)
}
}
56 changes: 33 additions & 23 deletions src/components/elements/input/token/selector.svelte
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
<script>
import {writable} from 'svelte/store'
import {Asset} from 'anchor-link'
import {activeBlockchain} from '~/store'
import type {Token} from '~/stores/tokens'
import {tokens} from '~/stores/tokens'
import {tokenFromBalance, tokens} from '~/stores/tokens'
import {balances} from '~/stores/balances'
import Form from '~/components/elements/form.svelte'
Expand All @@ -13,11 +14,14 @@
import TokenSelectorRow from './selector/row.svelte'
import type {Balance} from '~/stores/balances'
export let defaultToken: Token | undefined = undefined
export let selectedToken: Token | undefined = undefined
export let tokenOptions: Token[] | undefined = undefined
export let onTokenSelect: (token: Token) => void
export let showTokensWithoutBalance: boolean = false
export let includeEvmTokens: boolean = false
$: {
if (defaultToken) {
Expand All @@ -44,32 +48,38 @@
$: {
if (tokenOptions) {
filteredTokens = tokenOptions
filteredTokens = showTokensWithoutBalance
? tokenOptions
: tokenOptions.filter((token) => hasBalance(token))
} else {
filteredTokens = showTokensWithoutBalance
? $tokens
: $balances.map((balance) => {
const token = $tokens.find((t) => t.key === balance.tokenKey)
return token || tokenFromBalance(balance)
})
filteredTokens =
($tokens &&
$tokens.filter((token) => {
const blockchainMatches = token.chainId.equals($activeBlockchain.chainId)
let balanceExists
if (!showTokensWithoutBalance) {
balanceExists = !!(
token.balance ||
$balances.find((balance) => balance.tokenKey === token.key)
)
}
const queryExists = query.length === 0
const queryMatches = String(token.name)
.toLowerCase()
.includes(query.toLowerCase())
return (
blockchainMatches &&
(queryExists || queryMatches) &&
(showTokensWithoutBalance || balanceExists)
)
})) ||
[]
filteredTokens.filter((token) => {
if (token.evm && !includeEvmTokens) return false
const blockchainMatches = token.chainId.equals($activeBlockchain.chainId)
const queryExists = query.length === 0
const queryMatches = String(token.name)
.toLowerCase()
.includes(query.toLowerCase())
return blockchainMatches && hasBalance(token) && (queryExists || queryMatches)
}) || []
}
}
function hasBalance(token: Token, balance?: Balance) {
const balanceEntry = balance || $balances.find((b) => b.tokenKey === token?.key)
return !!balanceEntry?.quantity && balanceEntry.quantity.value > 0
}
</script>
<style type="scss">
Expand Down
7 changes: 1 addition & 6 deletions src/components/elements/input/token/selector/row.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,7 @@
let balance
$: {
if (token.balance) {
balance = token.balance
} else {
balance =
$balances && $balances.find((balance) => balance.tokenKey === token.key)?.quantity
}
balance = $balances && $balances.find((balance) => balance.tokenKey === token.key)?.quantity
if (typeof balance === 'string') {
formattedTokenBalance = balance
Expand Down
2 changes: 2 additions & 0 deletions src/components/layout/account/sidebar.svelte
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<script>
import {activate} from '~/auth'
import type {SessionLike} from '~/auth'
import {activeSession} from '~/store'
import {fetchBalances} from '~/stores/balances'
import Icon from '~/components/elements/icon.svelte'
Expand Down
1 change: 1 addition & 0 deletions src/lib/balance-providers/bloks.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ export class BloksProvider implements BalanceProvider {
key,
chainId: this.chain.chainId,
account: account,
contract: Name.from(token.contract),
tokenKey: token.key,
quantity: asset,
}
Expand Down
40 changes: 23 additions & 17 deletions src/lib/balance-providers/light-api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,23 +51,29 @@ export class LightAPIProvider implements BalanceProvider {
}

parseTokenBalances(account: Name, balances: RawTokenBalance[]) {
return balances.map((balance) => {
const symbol: Asset.Symbol = Asset.Symbol.from(
`${balance.decimals},${balance.currency}`
)
const token = this.parseTokenInfo(balance)
const amount = balance.amount ? Number(balance.amount) : 0
const asset = Asset.from(amount, symbol)
const key = makeBalanceKey(token, account)
const record: Balance = {
key,
chainId: this.chain.chainId,
account: account,
tokenKey: token.key,
quantity: asset,
}
return record
})
return balances
.filter((balance) => {
return balance.amount && Number(balance.amount) !== 0
})
.map((balance) => {
const symbol: Asset.Symbol = Asset.Symbol.from(
`${balance.decimals},${balance.currency}`
)
const token = this.parseTokenInfo(balance)
const amount = balance.amount ? Number(balance.amount) : 0
const asset = Asset.from(amount, symbol)
const key = makeBalanceKey(token, account)
const record: Balance = {
key,
chainId: this.chain.chainId,
account: account,
contract: Name.from(balance.contract),
tokenKey: token.key,
quantity: asset,
}
return record
})
.filter((balance) => !!balance)
}

parseTokenInfo(balance: RawTokenBalance): Token {
Expand Down
Loading

0 comments on commit ce67e27

Please sign in to comment.