@@ -57,7 +57,7 @@ const renderNetworkKey = key => {
5757function useSetKeys() {
5858 const { urbitWallet, wallet, authMnemonic } = useWallet();
5959 const { pointCursor } = usePointCursor();
60− const { syncOwnedPoint, getDetails } = usePointCache();
60+ const { syncDetails, syncRekeyDate, getDetails } = usePointCache();
6161 const { contracts } = useNetwork();
6262
6363 const _point = need.point(pointCursor);
@@ -75,26 +75,6 @@ function useSetKeys() {
7575 bind: keyfileBind,
7676 } = useKeyfileGenerator(ndNetworkSeed);
7777
78− const {
79− isDefaultState,
80− construct: _construct,
81− unconstruct,
82− broadcasting,
83− confirmed: _confirmed,
84− inputsLocked,
85− bind,
86− } = useEthereumTransaction(GAS_LIMITS.CONFIGURE_KEYS);
87−
88− // only treat the transaction as confirmed once we also have keys to download
89− const confirmed = _confirmed && keyfileAvailable;
90−
91− // sync point details after success
92− useEffect(() => {
93− if (confirmed) {
94− syncOwnedPoint(_point);
95− }
96− }, [_point, confirmed, syncOwnedPoint]);
97−
9878 const buildNetworkSeed = useCallback(
9979 async manualSeed => {
10080 if (manualSeed !== undefined) {
@@ -125,35 +105,38 @@ function useSetKeys() {
125105 [_details, authMnemonic, networkRevision, urbitWallet, wallet]
126106 );
127107
128− const construct = useCallback(
129− async (manualSeed, isDiscontinuity) => {
130− const seed = await buildNetworkSeed(manualSeed);
131− const pair = deriveNetworkKeys(seed);
132−
133− const txn = azimuth.ecliptic.configureKeys(
134− _contracts,
135− _point,
136− addHexPrefix(pair.crypt.public),
137− addHexPrefix(pair.auth.public),
138− CRYPTO_SUITE_VERSION,
139− isDiscontinuity
140− );
141−
142− _construct(txn);
143− },
144− [_construct, _contracts, _point, buildNetworkSeed]
108+ const { completed: _completed, ...rest } = useEthereumTransaction(
109+ useCallback(
110+ async (manualSeed, isDiscontinuity) => {
111+ const seed = await buildNetworkSeed(manualSeed);
112+ const pair = deriveNetworkKeys(seed);
113+
114+ return azimuth.ecliptic.configureKeys(
115+ _contracts,
116+ _point,
117+ addHexPrefix(pair.crypt.public),
118+ addHexPrefix(pair.auth.public),
119+ CRYPTO_SUITE_VERSION,
120+ isDiscontinuity
121+ );
122+ },
123+ [_contracts, _point, buildNetworkSeed]
124+ ),
125+ useCallback(
126+ () => Promise.all([syncDetails(_point), syncRekeyDate(_point)]),
127+ [_point, syncDetails, syncRekeyDate]
128+ ),
129+ GAS_LIMITS.CONFIGURE_KEYS
145130 );
146131
132+ // only treat the transaction as completed once we also have keys to download
133+ const completed = _completed && keyfileAvailable;
134+
147135 return {
148− isDefaultState,
149− construct,
150− unconstruct,
151− broadcasting,
152− confirmed,
136+ completed,
153137 ndNetworkSeed,
154− inputsLocked,
155− bind,
156138 keyfileBind,
139+ ...rest,
157140 };
158141}
159142
@@ -175,7 +158,7 @@ export default function AdminNetworkingKeys() {
175158 construct,
176159 unconstruct,
177160 broadcasting,
178− confirmed,
161+ completed,
179162 inputsLocked,
180163 bind,
181164 keyfileBind,
@@ -237,7 +220,7 @@ export default function AdminNetworkingKeys() {
237220 const goRelocate = useCallback(() => push(names.RELOCATE), [push, names]);
238221
239222 const renderTitle = () => {
240− if (confirmed) {
223+ if (completed) {
241224 return 'Networking keys are now set. Download your Keyfile to authenticate Arvo.';
242225 }
243226
@@ -344,7 +327,7 @@ export default function AdminNetworkingKeys() {
344327 : 'Set your networking keys to authenticate with Arvo.'}
345328 </Grid.Item>
346329
347− {confirmed && (
330+ {completed && (
348331 <>
349332 <Grid.Item full as={NoticeBox} className="mb3">
350333 You need this keyfile to authenticate with Arvo.
@@ -353,7 +336,7 @@ export default function AdminNetworkingKeys() {
353336 </>
354337 )}
355338
356− {!confirmed && (
339+ {!completed && (
357340 <>
358341 <Grid.Item full as={ToggleInput} {...showNetworkSeedInput} />
359342 {showNetworkSeed && (
@@ -361,7 +344,7 @@ export default function AdminNetworkingKeys() {
361344 <Grid.Item full as={NoticeBox} className="mb2">
362345 When using a custom network seed, you'll need to download your
363346 Arvo keyfile immediately after this transaction is
364− confirmed—Multipass does not store your seed.
347+ completed—Multipass does not store your seed.
365348 </Grid.Item>
366349 <Grid.Item full as={Input} {...networkSeedInput} />
367350 </>
@@ -380,7 +363,7 @@ export default function AdminNetworkingKeys() {
380363
381364 {isDefaultState && renderDetails()}
382365
383− {confirmed && (
366+ {completed && (
384367 <>
385368 <Grid.Item full as={BootArvoButton} disabled />
386369 <Grid.Divider />