@@ -9,9 +9,10 @@ import {
9
9
} from "@ui-kitten/components" ;
10
10
import { StyleSheet } from "react-native" ;
11
11
import { Stack , useLocalSearchParams , useRouter } from "expo-router" ;
12
- import { useState } from "react" ;
13
12
import { useFacade } from "../../data/facades" ;
14
13
import { CurrencyUtils } from "@ironfish/sdk" ;
14
+ import { SettingsKey } from "@/data/settings/db" ;
15
+ import { useEffect , useState , useCallback } from "react" ;
15
16
16
17
const ForwardIcon = ( props : any ) : IconElement => (
17
18
< Icon { ...props } name = "arrow-ios-forward" />
@@ -82,8 +83,29 @@ export default function AccountSettings() {
82
83
}
83
84
84
85
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 ( ) ;
85
90
const [ hideBalances , setHideBalances ] = useState ( false ) ;
86
91
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
+
87
109
const getAccountResult = facade . getAccount . useQuery (
88
110
{ name : accountName } ,
89
111
{
@@ -123,8 +145,7 @@ export default function AccountSettings() {
123
145
accessoryRight = { ( ) => (
124
146
< Toggle
125
147
checked = { hideBalances }
126
- onChange = { setHideBalances }
127
- style = { styles . toggle }
148
+ onChange = { onToggleHideBalances }
128
149
/>
129
150
) }
130
151
/> ,
0 commit comments