on master help sign in
keys: derive from management mnemonic if possible
cc9183bFang
src/lib/keys.js+17
@@ -160,10 +160,15 @@ export const deriveNetworkSeedFromAuthToken = (point, authToken, revision) => {
160};
160};
161
161
162/**
162/**
163+ * Derives from either a full Urbit Wallet, a current management mnemonic,
164+ * or an auth token, in that order of preference.
163 * @return {Promise<Maybe<string>>}
165 * @return {Promise<Maybe<string>>}
164 */
166 */
165export const attemptNetworkSeedDerivation = async ({
167export const attemptNetworkSeedDerivation = async ({
166 urbitWallet,
168 urbitWallet,
169+ wallet,
170+ authMnemonic,
171+ details,
167 point,
172 point,
168 authToken,
173 authToken,
169 revision,
174 revision,
@@ -172,6 +177,18 @@ export const attemptNetworkSeedDerivation = async ({
172 return await deriveNetworkSeedFromUrbitWallet(urbitWallet.value, revision);
177 return await deriveNetworkSeedFromUrbitWallet(urbitWallet.value, revision);
173 }
178 }
174
179
180+ if (Just.hasInstance(wallet) && Just.hasInstance(authMnemonic)) {
181+ const managementSeed = await deriveNetworkSeedFromManagementMnemonic(
182+ wallet.value,
183+ authMnemonic.value,
184+ details,
185+ revision
186+ );
187+ if (Just.hasInstance(managementSeed)) {
188+ return managementSeed;
189+ }
190+ }
191+
175 if (Just.hasInstance(authToken)) {
192 if (Just.hasInstance(authToken)) {
176 return deriveNetworkSeedFromAuthToken(point, authToken.value, revision);
193 return deriveNetworkSeedFromAuthToken(point, authToken.value, revision);
177 }
194 }
src/lib/useKeyfileGenerator.js+5
@@ -60,6 +60,9 @@ export default function useKeyfileGenerator(manualNetworkSeed) {
60 ? Just(manualNetworkSeed)
60 ? Just(manualNetworkSeed)
61 : await attemptNetworkSeedDerivation({
61 : await attemptNetworkSeedDerivation({
62 urbitWallet,
62 urbitWallet,
63+ wallet,
64+ authMnemonic,
65+ details: _details,
63 authToken,
66 authToken,
64 point: _point,
67 point: _point,
65 revision: networkRevision,
68 revision: networkRevision,
@@ -94,6 +97,8 @@ export default function useKeyfileGenerator(manualNetworkSeed) {
94 hasNetworkingKeys,
97 hasNetworkingKeys,
95 manualNetworkSeed,
98 manualNetworkSeed,
96 urbitWallet,
99 urbitWallet,
100+ wallet,
101+ authMnemonic,
97 setCode,
102 setCode,
98 details,
103 details,
99 _point,
104 _point,
src/views/UrbitOS/NetworkingKeys.js+13−1
@@ -68,6 +68,9 @@ function useSetKeys(manualNetworkSeed, setManualNetworkSeed) {
68
68
69 const networkSeed = await attemptNetworkSeedDerivation({
69 const networkSeed = await attemptNetworkSeedDerivation({
70 urbitWallet,
70 urbitWallet,
71+ wallet,
72+ authMnemonic,
73+ details: _details,
71 point: _point,
74 point: _point,
72 authToken,
75 authToken,
73 revision: newNetworkRevision,
76 revision: newNetworkRevision,
@@ -83,7 +86,16 @@ function useSetKeys(manualNetworkSeed, setManualNetworkSeed) {
83 return randomSeed.current;
86 return randomSeed.current;
84 }
87 }
85 },
88 },
89+ [
90+ _details,
91+ authMnemonic,
86− [setManualNetworkSeed, networkRevision, urbitWallet, _point, authToken]
92+ setManualNetworkSeed,
93+ networkRevision,
94+ urbitWallet,
95+ wallet,
96+ _point,
97+ authToken,
98+ ]
87 );
99 );
88
100
89 const { completed: _completed, ...rest } = useEthereumTransaction(
101 const { completed: _completed, ...rest } = useEthereumTransaction(