Pass ciphers to index and indexed ciphers to search service (#318)
This commit is contained in:
parent
f4f00b1eb2
commit
bc7bd5bd3f
|
@ -4,7 +4,7 @@ import { SendView } from '../models/view/sendView';
|
|||
export abstract class SearchService {
|
||||
clearIndex: () => void;
|
||||
isSearchable: (query: string) => boolean;
|
||||
indexCiphers: () => Promise<void>;
|
||||
indexCiphers: (ciphersToIndex?: CipherView[]) => Promise<void>;
|
||||
searchCiphers: (query: string,
|
||||
filter?: ((cipher: CipherView) => boolean) | (((cipher: CipherView) => boolean)[]),
|
||||
ciphers?: CipherView[]) => Promise<CipherView[]>;
|
||||
|
|
|
@ -77,20 +77,20 @@ export class CiphersComponent {
|
|||
await this.search(null);
|
||||
}
|
||||
|
||||
async search(timeout: number = null) {
|
||||
async search(timeout: number = null, indexedCiphers?: CipherView[]) {
|
||||
this.searchPending = false;
|
||||
if (this.searchTimeout != null) {
|
||||
clearTimeout(this.searchTimeout);
|
||||
}
|
||||
const deletedFilter: (cipher: CipherView) => boolean = c => c.isDeleted === this.deleted;
|
||||
if (timeout == null) {
|
||||
this.ciphers = await this.searchService.searchCiphers(this.searchText, [this.filter, deletedFilter], null);
|
||||
this.ciphers = await this.searchService.searchCiphers(this.searchText, [this.filter, deletedFilter], indexedCiphers);
|
||||
await this.resetPaging();
|
||||
return;
|
||||
}
|
||||
this.searchPending = true;
|
||||
this.searchTimeout = setTimeout(async () => {
|
||||
this.ciphers = await this.searchService.searchCiphers(this.searchText, [this.filter, deletedFilter], null);
|
||||
this.ciphers = await this.searchService.searchCiphers(this.searchText, [this.filter, deletedFilter], indexedCiphers);
|
||||
await this.resetPaging();
|
||||
this.searchPending = false;
|
||||
}, timeout);
|
||||
|
|
|
@ -28,7 +28,7 @@ export class SearchService implements SearchServiceAbstraction {
|
|||
return !notSearchable;
|
||||
}
|
||||
|
||||
async indexCiphers(): Promise<void> {
|
||||
async indexCiphers(ciphers?: CipherView[]): Promise<void> {
|
||||
if (this.indexing) {
|
||||
return;
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ export class SearchService implements SearchServiceAbstraction {
|
|||
builder.field('attachments_joined',
|
||||
{ extractor: (c: CipherView) => this.attachmentExtractor(c, true) });
|
||||
builder.field('organizationid', { extractor: (c: CipherView) => c.organizationId });
|
||||
const ciphers = await this.cipherService.getAllDecrypted();
|
||||
ciphers = ciphers || await this.cipherService.getAllDecrypted();
|
||||
ciphers.forEach(c => builder.add(c));
|
||||
this.index = builder.build();
|
||||
this.indexing = false;
|
||||
|
|
Loading…
Reference in New Issue