@@ -57,7 +57,7 @@ export default function ResetExecute({ newWallet, setNewWallet }) {
5757 } = useWallet();
5858 const { performL2Reticket } = useRoller();
5959 const {
60− point: { isL2 },
60+ point: { isL2Spawn },
6161 } = useRollerStore();
6262 const { pointCursor } = usePointCursor();
6363 const { getDetails } = usePointCache();
@@ -74,8 +74,38 @@ export default function ResetExecute({ newWallet, setNewWallet }) {
7474
7575 useBlockWindowClose();
7676
77− // start reticketing transactions on mount
78− useEffect(() => {
77+ const goToRestart = useCallback(() => {
78+ reset();
79+ setNewWallet(Nothing());
80+ }, [reset, setNewWallet]);
81+
82+ const loginAndGoHome = useCallback(() => {
83+ // set wallet state
84+ resetWallet();
85+ setWalletType(WALLET_TYPES.TICKET);
86+ setUrbitWallet(Just(newWallet.value.wallet));
87+ // (implicit) pointCursor stays the same
88+ // redirect to point
89+ popTo(names.POINT);
90+ }, [resetWallet, setWalletType, setUrbitWallet, newWallet, popTo, names]);
91+
92+ const handleUpdate = useCallback(
93+ ({ type, state, value }) => {
94+ switch (type) {
95+ case 'progress':
96+ return setProgress(state);
97+ case 'askFunding':
98+ return setNeedFunds(value);
99+ case 'gotFunding':
100+ return setNeedFunds(false);
101+ default:
102+ console.error(`Unknown update: ${type}`);
103+ }
104+ },
105+ [setProgress, setNeedFunds]
106+ );
107+
108+ const performReticket = useCallback(async () => {
79109 (async () => {
80110 // due to react shenanigans we may need to wait for the connector
81111 if (
@@ -98,17 +128,16 @@ export default function ResetExecute({ newWallet, setNewWallet }) {
98128 walletType === WALLET_TYPES.WALLET_CONNECT ? wcSend : undefined;
99129
100130 try {
101− if (isL2) {
102− console.log(newWallet.value);
131+ if (isL2Spawn) {
103132 // FIXME: the useEffect is called twice, which is fine since the duplicate
104133 // L2 txs will be discarded
105− //
106134 await performL2Reticket({
107135 point,
108136 to: newWallet.value.wallet.ownership.keys.address,
109137 manager: newWallet.value.wallet.management.keys.address,
110138 toWallet: newWallet.value.wallet,
111139 fromWallet: need.wallet(wallet),
140+ onUpdate: handleUpdate,
112141 });
113142 } else
114143 await reticketPointBetweenWallets({
@@ -130,43 +159,33 @@ export default function ResetExecute({ newWallet, setNewWallet }) {
130159 setGeneralError(err);
131160 }
132161 })();
162+ }, [
163+ connector,
164+ contracts,
165+ getDetails,
166+ handleUpdate,
167+ isL2Spawn,
168+ networkType,
169+ newWallet.value.wallet,
170+ performL2Reticket,
171+ pointCursor,
172+ wallet,
173+ walletHdPath,
174+ walletType,
175+ wcSend,
176+ wcSign,
177+ web3,
178+ ]);
179+
180+ // start reticketing transactions on mount
181+ useEffect(() => {
182+ performReticket();
133183 //NOTE this was using useLifecycle previously (which is useEffect without
134184 // dependencies) and worked fine, but in the wc case we might need to
135185 // wait for the connector to get set due to react state shenanigans.
136186 // eslint-disable-next-line react-hooks/exhaustive-deps
137187 }, [connector]);
138188
139− const goToRestart = useCallback(() => {
140− reset();
141− setNewWallet(Nothing());
142− }, [reset, setNewWallet]);
143−
144− const loginAndGoHome = useCallback(() => {
145− // set wallet state
146− resetWallet();
147− setWalletType(WALLET_TYPES.TICKET);
148− setUrbitWallet(Just(newWallet.value.wallet));
149− // (implicit) pointCursor stays the same
150− // redirect to point
151− popTo(names.POINT);
152− }, [resetWallet, setWalletType, setUrbitWallet, newWallet, popTo, names]);
153−
154− const handleUpdate = useCallback(
155− ({ type, state, value }) => {
156− switch (type) {
157− case 'progress':
158− return setProgress(state);
159− case 'askFunding':
160− return setNeedFunds(value);
161− case 'gotFunding':
162− return setNeedFunds(false);
163− default:
164− console.error(`Unknown update: ${type}`);
165− }
166− },
167− [setProgress, setNeedFunds]
168− );
169−
170189 const renderAdditionalInfo = () => {
171190 if (generalError) {
172191 console.log(generalError);