on master help sign in
Ensure we generate the keyfile for latest-set keys

Rather than latest-seen. Chain might not keep up with user actions, and even if it does, if user navigates to keyfile screen straight away, it won't know about the change yet. This was only a problem for UHD-derived networking keys, since the randomly generated ones were pulled out of cache. Fixes #137.

commitbacec7e324dfd63032ab122e828c17fca025b0d4 authorFang <git@fang.io> dateThu 16 May 2019, 23:00 (7 years ago) parent1788ea6
4 files changed+13−5
src/bridge/Bridge.js+5−2 src/bridge/components/StatelessTransaction.js+3−2 src/bridge/views/GenKeyfile.js+4−1 src/bridge/views/SetKeys.js+1
src/bridge/Bridge.js+5−2
@@ -190,9 +190,10 @@ class Bridge extends React.Component {
190190 }
191191 }
192192
193− setNetworkSeedCache(networkSeed) {
193+ setNetworkSeedCache(networkSeed, revision) {
194194 this.setState({
195− networkSeedCache: networkSeed
195+ networkSeedCache: networkSeed,
196+ networkRevisionCache: revision
196197 })
197198 }
198199
@@ -263,6 +264,7 @@ class Bridge extends React.Component {
263264 urbitWallet,
264265 authMnemonic,
265266 networkSeedCache,
267+ networkRevisionCache,
266268 pointCursor,
267269 pointCache,
268270 txnHashCursor,
@@ -316,6 +318,7 @@ class Bridge extends React.Component {
316318 pointCursor={ pointCursor }
317319 pointCache={ pointCache }
318320 networkSeedCache= { networkSeedCache }
321+ networkRevisionCache={ networkRevisionCache }
319322 setNetworkSeedCache= { this.setNetworkSeedCache }
320323 // txn
321324 setTxnHashCursor={ this.setTxnHashCursor }
src/bridge/components/StatelessTransaction.js+3−2
@@ -93,8 +93,9 @@ class StatelessTransaction extends React.Component {
9393 props.setTxnHashCursor(sent)
9494 props.popRoute()
9595
96− if (props.networkSeed) {
97− props.setNetworkSeedCache(props.networkSeed)
96+ //TODO this special logic should live in a handler in SetKeys.
97+ if (props.networkSeed && props.newRevision) {
98+ props.setNetworkSeedCache(props.networkSeed, props.newRevision)
9899 props.pushRoute(ROUTE_NAMES.SENT_TRANSACTION, {promptKeyfile: true})
99100 } else {
100101 props.pushRoute(ROUTE_NAMES.SENT_TRANSACTION)
src/bridge/views/GenKeyfile.js+4−1
@@ -40,7 +40,10 @@ class GenKeyfile extends React.Component {
4040 ? pointCache[point]
4141 : (() => { throw BRIDGE_ERROR.MISSING_POINT })()
4242
43− const revision = parseInt(pointDetails.keyRevisionNumber)
43+ // in case we did SetKeys earlier this session, make sure to generate the
44+ // newer keyfile, rather than the one that will expire soon
45+ const revision = (this.props.networkRevisionCache ||
46+ parseInt(pointDetails.keyRevisionNumber));
4447
4548 return {
4649 point,
src/bridge/views/SetKeys.js+1
@@ -210,6 +210,7 @@ class SetKeys extends React.Component {
210210 canGenerate={ canGenerate }
211211 createUnsignedTxn={this.createUnsignedTxn}
212212 networkSeed={ state.networkSeed }
213+ newRevision={ (parseInt(pointDetails.keyRevisionNumber) + 1) }
213214 setNetworkSeedCache={ props.setNetworkSeedCache } />
214215
215216 </Col>