|  |  |  | @ -10,7 +10,7 @@ import { UserUtil } from '../../util'; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | /* | 
		
	
		
			
				|  |  |  |  |   The reason we're exporing a class here instead of just exporting the functions directly is for the sake of testing. | 
		
	
		
			
				|  |  |  |  |   We might want to stub out specific functions inside the multi device protocol itself but when export functions directly then it's not possible without weird hacks. | 
		
	
		
			
				|  |  |  |  |   We might want to stub out specific functions inside the multi device protocol itself but when exporting functions directly then it's not possible without weird hacks. | 
		
	
		
			
				|  |  |  |  | */ | 
		
	
		
			
				|  |  |  |  | // tslint:disable-next-line: no-unnecessary-class
 | 
		
	
		
			
				|  |  |  |  | export class MultiDeviceProtocol { | 
		
	
	
		
			
				
					|  |  |  | @ -18,14 +18,13 @@ export class MultiDeviceProtocol { | 
		
	
		
			
				|  |  |  |  |   private static lastFetch: { [device: string]: number } = {}; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   /** | 
		
	
		
			
				|  |  |  |  |    * Fetch pairing authorisations from the file server if needed. | 
		
	
		
			
				|  |  |  |  |    * This shouldn't be called outside of the MultiDeviceProtocol file, it is public so it can be stubbed in tests. | 
		
	
		
			
				|  |  |  |  |    * Fetch pairing authorisations from the file server if needed and store it in the database. | 
		
	
		
			
				|  |  |  |  |    * | 
		
	
		
			
				|  |  |  |  |    * This will fetch authorisations if: | 
		
	
		
			
				|  |  |  |  |    *  - It is not one of our device | 
		
	
		
			
				|  |  |  |  |    *  - The time since last fetch is more than refresh delay | 
		
	
		
			
				|  |  |  |  |    */ | 
		
	
		
			
				|  |  |  |  |   public static async _fetchPairingAuthorisationsIfNeeded( | 
		
	
		
			
				|  |  |  |  |   public static async fetchPairingAuthorisationsIfNeeded( | 
		
	
		
			
				|  |  |  |  |     device: PubKey | 
		
	
		
			
				|  |  |  |  |   ): Promise<void> { | 
		
	
		
			
				|  |  |  |  |     // This return here stops an infinite loop when we get all our other devices
 | 
		
	
	
		
			
				
					|  |  |  | @ -59,9 +58,11 @@ export class MultiDeviceProtocol { | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   /** | 
		
	
		
			
				|  |  |  |  |    * This function shouldn't be called outside of tests!! | 
		
	
		
			
				|  |  |  |  |    * Reset the pairing fetched cache. | 
		
	
		
			
				|  |  |  |  |    * | 
		
	
		
			
				|  |  |  |  |    * This will make it so the next call to `fetchPairingAuthorisationsIfNeeded` will fetch mappings from the server. | 
		
	
		
			
				|  |  |  |  |    */ | 
		
	
		
			
				|  |  |  |  |   public static _resetFetchCache() { | 
		
	
		
			
				|  |  |  |  |   public static resetFetchCache() { | 
		
	
		
			
				|  |  |  |  |     this.lastFetch = {}; | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -116,7 +117,7 @@ export class MultiDeviceProtocol { | 
		
	
		
			
				|  |  |  |  |     device: PubKey | string | 
		
	
		
			
				|  |  |  |  |   ): Promise<Array<PairingAuthorisation>> { | 
		
	
		
			
				|  |  |  |  |     const pubKey = typeof device === 'string' ? new PubKey(device) : device; | 
		
	
		
			
				|  |  |  |  |     await this._fetchPairingAuthorisationsIfNeeded(pubKey); | 
		
	
		
			
				|  |  |  |  |     await this.fetchPairingAuthorisationsIfNeeded(pubKey); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     return getPairingAuthorisationsFor(pubKey.key); | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
	
		
			
				
					|  |  |  | 
 |