Add flag for determining whether to add account to top or bottom of cache.
This commit is contained in:
		
							parent
							
								
									935999cabf
								
							
						
					
					
						commit
						19fdea084b
					
				@ -209,7 +209,7 @@ export class UserService {
 | 
			
		||||
                );
 | 
			
		||||
              }
 | 
			
		||||
            });
 | 
			
		||||
            this.addAccount(data, limit);
 | 
			
		||||
            this.addAccount(data, limit, false);
 | 
			
		||||
          }
 | 
			
		||||
        };
 | 
			
		||||
        worker.postMessage({
 | 
			
		||||
@ -222,7 +222,7 @@ export class UserService {
 | 
			
		||||
          'Web workers are not supported in this environment'
 | 
			
		||||
        );
 | 
			
		||||
        for (const accountAddress of accountAddresses.slice(offset, offset + limit)) {
 | 
			
		||||
          await this.getAccountByAddress(accountAddress, limit);
 | 
			
		||||
          await this.getAccountByAddress(accountAddress, limit, false, false);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    } catch (error) {
 | 
			
		||||
@ -234,7 +234,8 @@ export class UserService {
 | 
			
		||||
  async getAccountByAddress(
 | 
			
		||||
    accountAddress: string,
 | 
			
		||||
    limit: number = 100,
 | 
			
		||||
    history: boolean = false
 | 
			
		||||
    history: boolean = false,
 | 
			
		||||
    top: boolean = true
 | 
			
		||||
  ): Promise<Observable<AccountDetails>> {
 | 
			
		||||
    const accountSubject: Subject<any> = new Subject<any>();
 | 
			
		||||
    this.getAccountDetailsFromMeta(await User.toKey(add0x(accountAddress)))
 | 
			
		||||
@ -260,7 +261,7 @@ export class UserService {
 | 
			
		||||
        });
 | 
			
		||||
        accountInfo.vcard = vCard.parse(atob(accountInfo.vcard));
 | 
			
		||||
        await vcardValidation(accountInfo.vcard);
 | 
			
		||||
        this.addAccount(accountInfo, limit);
 | 
			
		||||
        this.addAccount(accountInfo, limit, top);
 | 
			
		||||
        accountSubject.next(accountInfo);
 | 
			
		||||
      });
 | 
			
		||||
    return accountSubject.asObservable();
 | 
			
		||||
@ -321,21 +322,34 @@ export class UserService {
 | 
			
		||||
    return this.httpClient.get(`${environment.cicMetaUrl}/genders`);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  addAccount(account: AccountDetails, cacheSize: number): void {
 | 
			
		||||
  addAccount(account: AccountDetails, cacheSize: number, top: boolean = true): void {
 | 
			
		||||
    const savedIndex = this.accounts.findIndex(
 | 
			
		||||
      (acc) =>
 | 
			
		||||
        acc.identities.evm[`bloxberg:${environment.bloxbergChainId}`][0] ===
 | 
			
		||||
        account.identities.evm[`bloxberg:${environment.bloxbergChainId}`][0]
 | 
			
		||||
    );
 | 
			
		||||
    if (savedIndex === 0) {
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
    if (savedIndex > 0) {
 | 
			
		||||
      this.accounts.splice(savedIndex, 1);
 | 
			
		||||
    }
 | 
			
		||||
    this.accounts.unshift(account);
 | 
			
		||||
    if (this.accounts.length > cacheSize) {
 | 
			
		||||
      this.accounts.length = Math.min(this.accounts.length, cacheSize);
 | 
			
		||||
    if (top) {
 | 
			
		||||
      if (savedIndex === 0) {
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
      if (savedIndex > 0) {
 | 
			
		||||
        this.accounts.splice(savedIndex, 1);
 | 
			
		||||
      }
 | 
			
		||||
      this.accounts.unshift(account);
 | 
			
		||||
      if (this.accounts.length > cacheSize) {
 | 
			
		||||
        this.accounts.length = Math.min(this.accounts.length, cacheSize);
 | 
			
		||||
      }
 | 
			
		||||
    } else {
 | 
			
		||||
      if (
 | 
			
		||||
        this.accounts.length >= cacheSize ||
 | 
			
		||||
        (savedIndex !== -1 && savedIndex === this.accounts.length - 1)
 | 
			
		||||
      ) {
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
      if (savedIndex !== -1 && savedIndex < this.accounts.length - 1) {
 | 
			
		||||
        this.accounts.splice(savedIndex, 1);
 | 
			
		||||
      }
 | 
			
		||||
      this.accounts.push(account);
 | 
			
		||||
    }
 | 
			
		||||
    this.accountsList.next(this.accounts);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user