Browse Source

refactor search method in fido2 component to only show ciphers with matching uri when search text is empty (#6628)

pull/6633/head
Jason Ng 2 years ago committed by GitHub
parent
commit
742e6e3b95
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      apps/browser/src/vault/popup/components/fido2/fido2.component.html
  2. 45
      apps/browser/src/vault/popup/components/fido2/fido2.component.ts

2
apps/browser/src/vault/popup/components/fido2/fido2.component.html

@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
placeholder="{{ 'searchVault' | i18n }}"
id="search"
[(ngModel)]="searchText"
(input)="search(200)"
(input)="search()"
autocomplete="off"
appAutofocus
/>

45
apps/browser/src/vault/popup/components/fido2/fido2.component.ts

@ -319,46 +319,23 @@ export class Fido2Component implements OnInit, OnDestroy { @@ -319,46 +319,23 @@ export class Fido2Component implements OnInit, OnDestroy {
});
}
async loadLoginCiphers() {
this.ciphers = (await this.cipherService.getAllDecrypted()).filter(
(cipher) => cipher.type === CipherType.Login && !cipher.isDeleted
);
if (!this.hasLoadedAllCiphers) {
this.hasLoadedAllCiphers = !this.searchService.isSearchable(this.searchText);
}
await this.search(null);
}
async search(timeout: number = null) {
this.searchPending = false;
if (this.searchTimeout != null) {
clearTimeout(this.searchTimeout);
}
if (timeout == null) {
this.hasSearched = this.searchService.isSearchable(this.searchText);
protected async search() {
this.hasSearched = this.searchService.isSearchable(this.searchText);
this.searchPending = true;
if (this.hasSearched) {
this.displayedCiphers = await this.searchService.searchCiphers(
this.searchText,
null,
this.ciphers
);
return;
} else {
const equivalentDomains = this.settingsService.getEquivalentDomains(this.url);
this.displayedCiphers = this.ciphers.filter((cipher) =>
cipher.login.matchesUri(this.url, equivalentDomains)
);
}
this.searchPending = true;
this.searchTimeout = setTimeout(async () => {
this.hasSearched = this.searchService.isSearchable(this.searchText);
if (!this.hasLoadedAllCiphers && !this.hasSearched) {
await this.loadLoginCiphers();
} else {
this.displayedCiphers = await this.searchService.searchCiphers(
this.searchText,
null,
this.ciphers
);
}
this.searchPending = false;
this.selectedPasskey(this.displayedCiphers[0]);
}, timeout);
this.searchPending = false;
this.selectedPasskey(this.displayedCiphers[0]);
}
abort(fallback: boolean) {

Loading…
Cancel
Save