Skip to content

Commit

Permalink
enhancement: using the token selector to let users select account
Browse files Browse the repository at this point in the history
  • Loading branch information
dafuga committed Jul 22, 2023
1 parent 7865a48 commit b9f86ce
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 38 deletions.
26 changes: 16 additions & 10 deletions src/components/elements/input/token/selector.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
export let defaultToken: Token
export let onTokenSelect: (token: Token) => void
export let tokenOptions: Token[]
let selectedToken = defaultToken
let displayModal = writable<boolean>(false)
Expand All @@ -34,6 +35,9 @@
let filteredTokens: Token[] = []
$: {
if (tokenOptions) {
return filteredTokens = tokenOptions
}
filteredTokens =
($tokens &&
$tokens.filter((token) => {
Expand Down Expand Up @@ -107,16 +111,18 @@
<Icon name="x" />
</div>
<h2>Select Token</h2>
<Form>
<Input
on:changed={updateQuery}
value={query}
name="query"
focus
fluid
placeholder="Search tokens..."
/>
</Form>
{#if !tokenOptions}
<Form>
<Input
on:changed={updateQuery}
value={query}
name="query"
focus
fluid
placeholder="Search tokens..."
/>
</Form>
{/if}
<div class="table-container">
<table>
<tr>
Expand Down
3 changes: 3 additions & 0 deletions src/components/elements/input/token/selector/row.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
let balance
$: {
if (token.balance) {
formattedTokenBalance = formatBalanceString(token.balance)
}
balance = $balances && $balances.find((balance) => balance.tokenKey === token.key)
if (balance) {
Expand Down
50 changes: 22 additions & 28 deletions src/pages/evm/swap/form.svelte
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
<script lang="ts">
import {Asset as CoreAsset} from '@greymass/eosio'
import {currentAccountBalance, evmAccount, activeSession} from '~/store'
import {Token, systemToken} from '~/stores/tokens'
import Label from '~/components/elements/input/label.svelte'
import Form from '~/components/elements/form.svelte'
import Button from '~/components/elements/button.svelte'
import Select from '~/components/elements/select.svelte'
import Asset from '~/components/elements/input/asset.svelte'
import Selector from '~/components/elements/input/token/selector.svelte'
export let handleContinue: () => void
export let amount: string = '0.0001'
Expand All @@ -16,15 +17,15 @@
let evmBalance: CoreAsset | undefined
let validAmount = false
function handleFromChange(event: CustomEvent) {
from = event.detail
function handleFromChange(token: Token) {
from = token
to = undefined
amount = ''
}
function handleToChange(event: CustomEvent) {
to = event.detail
function handleToChange(token: Token) {
to = token
}
function useEntireBalance() {
Expand Down Expand Up @@ -60,25 +61,22 @@
}
$: nativeLabel = `Native (${$currentAccountBalance})`
$: evmLabel = `EVM (${evmBalance ? evmBalance : 'not connected'})`
$: fromOptions = [
{value: 'Native', label: nativeLabel},
{value: 'EVM', label: evmLabel},
]
$: evmLabel = `EVM (${evmBalance ? evmBalance : 'not connected'})`
const toOptions: {value:string, label:string}[] = []
const fromOptions: Token[] = []
const toOptions: Token[] = []
$: {
if (!$systemToken) {
return
}
fromOptions.push($systemToken, $systemToken)
if (to === 'Native') {
toOptions.push({value: 'EVM', label: evmLabel})
toOptions.push()
} else if (to === 'EVM') {
toOptions.push({value: 'Native', label: nativeLabel})
toOptions.push($systemToken)
} else {
toOptions.push(
{value: 'Native', label: nativeLabel},
{value: 'EVM', label: evmLabel},
)
toOptions.push(...fromOptions)
}
}
Expand Down Expand Up @@ -147,11 +145,9 @@
<div class="middle-section">
<div class="left-section">
<Label align="left">From</Label>
<Select
bind:value={from}
on:change={handleFromChange}
options={fromOptions}
fluid
<Selector
onTokenSelect={handleFromChange}
tokenOptions={fromOptions}
/>
<Label align="left">Amount</Label>
<Asset
Expand All @@ -165,11 +161,9 @@
</div>
<div class="right-section">
<Label align="left">To</Label>
<Select
bind:value={to}
on:change={handleToChange}
options={toOptions}
fluid
<Selector
onTokenSelect={handleToChange}
tokenOptions={toOptions}
/>
</div>
</div>
Expand Down

0 comments on commit b9f86ce

Please sign in to comment.