1
0
mirror of https://github.com/bitwarden/browser.git synced 2025-02-10 00:21:27 +01:00

[PM-5189] Reworking how we handle updating the inline menu position

This commit is contained in:
Cesar Gonzalez 2024-06-18 14:56:27 -05:00
parent 5868bf4030
commit 89ad8e485a
No known key found for this signature in database
GPG Key ID: 3381A5457F8CCECF

View File

@ -66,8 +66,8 @@ export class OverlayBackground implements OverlayBackgroundInterface {
private inlineMenuPageTranslations: Record<string, string>;
private inlineMenuFadeInTimeout: number | NodeJS.Timeout;
private delayedCloseTimeout: number | NodeJS.Timeout;
private repositionInlineMenuDebounce$ = new Subject<chrome.runtime.MessageSender>();
private rebuildSubFrameOffsetsThrottle$ = new Subject<chrome.runtime.MessageSender>();
private repositionInlineMenuSubject = new Subject<chrome.runtime.MessageSender>();
private rebuildSubFrameOffsetsSubject = new Subject<chrome.runtime.MessageSender>();
private focusedFieldData: FocusedFieldData;
private isFieldCurrentlyFocused: boolean = false;
private isFieldCurrentlyFilling: boolean = false;
@ -140,13 +140,13 @@ export class OverlayBackground implements OverlayBackgroundInterface {
private platformUtilsService: PlatformUtilsService,
private themeStateService: ThemeStateService,
) {
this.repositionInlineMenuDebounce$
this.repositionInlineMenuSubject
.pipe(
debounceTime(500),
switchMap((sender) => this.repositionInlineMenu(sender)),
)
.subscribe();
this.rebuildSubFrameOffsetsThrottle$
this.rebuildSubFrameOffsetsSubject
.pipe(
throttleTime(600),
switchMap((sender) => this.rebuildSubFrameOffsets(sender)),
@ -1315,13 +1315,13 @@ export class OverlayBackground implements OverlayBackgroundInterface {
private async triggerOverlayReposition(sender: chrome.runtime.MessageSender) {
if (await this.checkShouldRepositionInlineMenu(sender)) {
await this.toggleInlineMenuHidden({ isInlineMenuHidden: true }, sender);
this.repositionInlineMenuDebounce$.next(sender);
this.repositionInlineMenuSubject.next(sender);
}
}
private async triggerSubFrameFocusInRebuild(sender: chrome.runtime.MessageSender) {
this.rebuildSubFrameOffsetsThrottle$.next(sender);
this.repositionInlineMenuDebounce$.next(sender);
this.rebuildSubFrameOffsetsSubject.next(sender);
this.repositionInlineMenuSubject.next(sender);
}
private repositionInlineMenu = async (sender: chrome.runtime.MessageSender) => {
@ -1341,7 +1341,7 @@ export class OverlayBackground implements OverlayBackgroundInterface {
}
if (this.focusedFieldData.frameId > 0 && sender.frameId !== this.focusedFieldData.frameId) {
this.rebuildSubFrameOffsetsThrottle$.next(sender);
this.rebuildSubFrameOffsetsSubject.next(sender);
}
await this.updateInlineMenuPositionAfterRepositionEvent(sender);