Skip to content

Commit 5da29eb

Browse files
committed
wip
1 parent 90c9f87 commit 5da29eb

File tree

1 file changed

+72
-10
lines changed

1 file changed

+72
-10
lines changed

packages/mobile-app/app/(tabs)/index.tsx

Lines changed: 72 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { StatusBar } from "expo-status-bar";
22
import {
33
ActivityIndicator,
44
Button,
5+
Pressable,
56
ScrollView,
67
StyleSheet,
78
Text,
@@ -10,12 +11,18 @@ import {
1011
import { useFacade } from "../../data/facades";
1112
import { useEffect, useState } from "react";
1213
import { LinkButton } from "../../components/LinkButton";
14+
import { useQueries } from "@tanstack/react-query";
15+
import { Asset } from "../../data/facades/chain/types";
1316

1417
export default function Balances() {
1518
const facade = useFacade();
1619

1720
const [account, setAccount] = useState<string>("");
1821

22+
const [visibleView, setVisibleView] = useState<"transactions" | "assets">(
23+
"transactions",
24+
);
25+
1926
const getTransactionsResult = facade.getTransactions.useQuery(
2027
{ accountName: account },
2128
{
@@ -30,6 +37,23 @@ export default function Balances() {
3037
},
3138
);
3239

40+
const getCustomAssets = useQueries({
41+
queries:
42+
getAccountResult.data?.balances.custom.map((b) => {
43+
return {
44+
refetchInterval: 1000,
45+
queryFn: () => facade.getAsset.resolver({ assetId: b.assetId }),
46+
queryKey: facade.getAsset.buildQueryKey({ assetId: b.assetId }),
47+
};
48+
}) ?? [],
49+
});
50+
const assetMap = new Map<string, Asset>();
51+
for (const asset of getCustomAssets) {
52+
if (asset.data) {
53+
assetMap.set(asset.data.id, asset.data);
54+
}
55+
}
56+
3357
const getIronAsset = facade.getAsset.useQuery(
3458
{
3559
assetId: getAccountResult.data?.balances.iron.assetId ?? "",
@@ -125,18 +149,56 @@ export default function Balances() {
125149
<LinkButton href="/send/" title="Send" />
126150
<LinkButton href="/address/" title="Receive" />
127151
</View>
128-
<Text style={{ fontWeight: 700, fontSize: 24 }}>Transactions</Text>
152+
<View style={{ display: "flex", flexDirection: "row", gap: 16 }}>
153+
<Pressable onPress={() => setVisibleView("transactions")}>
154+
<Text style={{ fontWeight: 700, fontSize: 24 }}>Transactions</Text>
155+
</Pressable>
156+
<Pressable onPress={() => setVisibleView("assets")}>
157+
<Text style={{ fontWeight: 700, fontSize: 24 }}>Assets</Text>
158+
</Pressable>
159+
</View>
129160
<ScrollView>
130-
{getTransactionsResult.data?.map((transaction) => (
131-
<View key={transaction.hash} style={{ marginBottom: 8 }}>
132-
<Text style={{ fontSize: 14 }}>{transaction.hash}</Text>
133-
<Text>Block Sequence: {transaction.blockSequence}</Text>
134-
<Text>Timestamp: {transaction.timestamp.toString()}</Text>
135-
<Text>
136-
{`Notes (${transaction.notes.length}): ${transaction.notes.map((n) => n.value).join(", ")}`}
137-
</Text>
161+
{visibleView === "transactions" &&
162+
getTransactionsResult.data?.map((transaction) => (
163+
<View key={transaction.hash} style={{ marginBottom: 8 }}>
164+
<Text style={{ fontSize: 14 }}>{transaction.hash}</Text>
165+
<Text>Block Sequence: {transaction.blockSequence}</Text>
166+
<Text>Timestamp: {transaction.timestamp.toString()}</Text>
167+
<Text>
168+
{`Notes (${transaction.notes.length}): ${transaction.notes.map((n) => n.value).join(", ")}`}
169+
</Text>
170+
</View>
171+
))}
172+
{visibleView === "assets" && getAccountResult.data && (
173+
<View>
174+
<View>
175+
<Text>
176+
{getIronAsset.data
177+
? getIronAsset.data.verification.status === "verified"
178+
? `${getIronAsset.data.verification.symbol} (Verified)`
179+
: `${getIronAsset.data.name} (Unverified)`
180+
: getAccountResult.data.balances.iron.assetId}
181+
</Text>
182+
<Text>{getAccountResult.data.balances.iron.confirmed}</Text>
183+
</View>
184+
{getAccountResult.data.balances.custom.map((balance) => {
185+
const asset = assetMap.get(balance.assetId);
186+
187+
return (
188+
<View key={balance.assetId}>
189+
<Text>
190+
{asset
191+
? asset.verification.status === "verified"
192+
? `${asset.verification.symbol} (Verified)`
193+
: `${asset.name} (Unverified)`
194+
: balance.assetId}
195+
</Text>
196+
<Text>{balance.confirmed}</Text>
197+
</View>
198+
);
199+
})}
138200
</View>
139-
))}
201+
)}
140202
</ScrollView>
141203
<StatusBar style="auto" />
142204
</View>

0 commit comments

Comments
 (0)