Skip to content

Commit 250c8d3

Browse files
committed
Add setting for hiding balances
1 parent a38dc9f commit 250c8d3

File tree

4 files changed

+29
-3
lines changed

4 files changed

+29
-3
lines changed

packages/mobile-app/app/account-settings/index.tsx

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@ import {
99
} from "@ui-kitten/components";
1010
import { StyleSheet } from "react-native";
1111
import { Stack, useLocalSearchParams, useRouter } from "expo-router";
12-
import { useState } from "react";
1312
import { useFacade } from "../../data/facades";
1413
import { CurrencyUtils } from "@ironfish/sdk";
14+
import { SettingsKey } from "@/data/settings/db";
15+
import { useEffect, useState, useCallback } from "react";
1516

1617
const ForwardIcon = (props: any): IconElement => (
1718
<Icon {...props} name="arrow-ios-forward" />
@@ -82,8 +83,29 @@ export default function AccountSettings() {
8283
}
8384

8485
const facade = useFacade();
86+
87+
// I tried using isPending and variables on the mutation, but it was causing toggle
88+
// re-renders that made the toggle animation jittery.
89+
const appSettings = facade.getAppSettings.useQuery();
8590
const [hideBalances, setHideBalances] = useState(false);
8691

92+
useEffect(() => {
93+
setHideBalances(appSettings.data?.hideBalances === "true");
94+
}, [appSettings.data?.hideBalances]);
95+
96+
const { mutate: setAppSetting } = facade.setAppSetting.useMutation();
97+
98+
const onToggleHideBalances = useCallback(
99+
(checked: boolean) => {
100+
setHideBalances(checked);
101+
setAppSetting({
102+
key: SettingsKey.HideBalances,
103+
value: checked ? "true" : "false",
104+
});
105+
},
106+
[setAppSetting],
107+
);
108+
87109
const getAccountResult = facade.getAccount.useQuery(
88110
{ name: accountName },
89111
{
@@ -123,8 +145,7 @@ export default function AccountSettings() {
123145
accessoryRight={() => (
124146
<Toggle
125147
checked={hideBalances}
126-
onChange={setHideBalances}
127-
style={styles.toggle}
148+
onChange={onToggleHideBalances}
128149
/>
129150
)}
130151
/>,

packages/mobile-app/data/facades/app/demoHandlers.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export const appDemoHandlers = f.facade<AppHandlers>({
1111
return {
1212
pin: undefined,
1313
network: Network.TESTNET,
14+
hideBalances: "false",
1415
};
1516
}),
1617
getExplorerUrl: f.handler.query(

packages/mobile-app/data/facades/app/walletServerHandlers.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export const appHandlers = f.facade<AppHandlers>({
1616
return {
1717
pin: undefined,
1818
network: Network.TESTNET,
19+
hideBalances: "false",
1920
};
2021
}),
2122
getExplorerUrl: f.handler.query(

packages/mobile-app/data/settings/db.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,21 @@ interface Database {
1616
export enum SettingsKey {
1717
PIN = "pin",
1818
Network = "network",
19+
HideBalances = "hideBalances",
1920
}
2021

2122
const defaults: AppSettingsType = {
2223
[SettingsKey.PIN]: undefined,
2324
[SettingsKey.Network]: Network.MAINNET,
25+
[SettingsKey.HideBalances]: "false",
2426
};
2527

2628
export type AppSettingsType = z.infer<typeof schema>;
2729

2830
const schema = z.object({
2931
[SettingsKey.PIN]: z.string().optional(),
3032
[SettingsKey.Network]: z.enum([Network.MAINNET, Network.TESTNET]),
33+
[SettingsKey.HideBalances]: z.enum(["true", "false"]),
3134
});
3235

3336
const partialSchema = schema.partial();

0 commit comments

Comments
 (0)