[PM-7710] Avoid re-indexing ciphers on current tab component and re-setting null storage values for popup components (#8908)

* [PM-7710] Avoid re-indexing ciphers on current tab component and re-setting null storage values for popup components

* [PM-7710] Avoid re-indexing ciphers on current tab component and re-setting null storage values for popup components
This commit is contained in:
Cesar Gonzalez 2024-04-25 16:47:20 -05:00 committed by GitHub
parent 2ff3fa92fb
commit c3d4c7aa3d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 22 additions and 6 deletions

View File

@ -46,7 +46,9 @@ export class BrowserSendStateService {
* the send component on the browser
*/
async setBrowserSendComponentState(value: BrowserSendComponentState): Promise<void> {
await this.activeUserBrowserSendComponentState.update(() => value);
await this.activeUserBrowserSendComponentState.update(() => value, {
shouldUpdate: (current) => !(current == null && value == null),
});
}
/** Get the active user's browser component state
@ -60,6 +62,8 @@ export class BrowserSendStateService {
* @param { BrowserComponentState } value set the scroll position and search text for the send component on the browser
*/
async setBrowserSendTypeComponentState(value: BrowserComponentState): Promise<void> {
await this.activeUserBrowserSendTypeComponentState.update(() => value);
await this.activeUserBrowserSendTypeComponentState.update(() => value, {
shouldUpdate: (current) => !(current == null && value == null),
});
}
}

View File

@ -292,6 +292,8 @@ export class CurrentTabComponent implements OnInit, OnDestroy {
const ciphers = await this.cipherService.getAllDecryptedForUrl(
this.url,
otherTypes.length > 0 ? otherTypes : null,
null,
false,
);
this.loginCiphers = [];

View File

@ -52,7 +52,9 @@ export class VaultBrowserStateService {
}
async setBrowserGroupingsComponentState(value: BrowserGroupingsComponentState): Promise<void> {
await this.activeUserVaultBrowserGroupingsComponentState.update(() => value);
await this.activeUserVaultBrowserGroupingsComponentState.update(() => value, {
shouldUpdate: (current) => !(current == null && value == null),
});
}
async getBrowserVaultItemsComponentState(): Promise<BrowserComponentState> {
@ -60,6 +62,8 @@ export class VaultBrowserStateService {
}
async setBrowserVaultItemsComponentState(value: BrowserComponentState): Promise<void> {
await this.activeUserVaultBrowserComponentState.update(() => value);
await this.activeUserVaultBrowserComponentState.update(() => value, {
shouldUpdate: (current) => !(current == null && value == null),
});
}
}

View File

@ -33,6 +33,7 @@ export abstract class CipherService {
url: string,
includeOtherTypes?: CipherType[],
defaultMatch?: UriMatchStrategySetting,
reindexCiphers?: boolean,
) => Promise<CipherView[]>;
getAllFromApiForOrganization: (organizationId: string) => Promise<CipherView[]>;
/**

View File

@ -441,6 +441,7 @@ export class CipherService implements CipherServiceAbstraction {
url: string,
includeOtherTypes?: CipherType[],
defaultMatch: UriMatchStrategySetting = null,
reindexCiphers = true,
): Promise<CipherView[]> {
if (url == null && includeOtherTypes == null) {
return Promise.resolve([]);
@ -449,7 +450,9 @@ export class CipherService implements CipherServiceAbstraction {
const equivalentDomains = await firstValueFrom(
this.domainSettingsService.getUrlEquivalentDomains(url),
);
const ciphers = await this.getAllDecrypted();
const ciphers = reindexCiphers
? await this.getAllDecrypted()
: await this.getDecryptedCiphers();
defaultMatch ??= await firstValueFrom(this.domainSettingsService.defaultUriMatchStrategy$);
return ciphers.filter((cipher) => {
@ -1135,7 +1138,9 @@ export class CipherService implements CipherServiceAbstraction {
}
async setAddEditCipherInfo(value: AddEditCipherInfo) {
await this.addEditCipherInfoState.update(() => value);
await this.addEditCipherInfoState.update(() => value, {
shouldUpdate: (current) => !(current == null && value == null),
});
}
// Helpers