Simplify and improve checking if suggestion was previewed
listening to event is better than waituntil which has 1s delay.
Google-Bug-Id: b/373890480
Release-Notes: skip
Change-Id: I4fd1b1bb1f6e87b27f2fde1c8f411fb3cd716519
diff --git a/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.ts b/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.ts
index cf5ea9d..4c3aeaf 100644
--- a/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.ts
+++ b/polygerrit-ui/app/elements/shared/gr-comment/gr-comment.ts
@@ -90,8 +90,11 @@
import {getFileExtension} from '../../../utils/file-util';
import {storageServiceToken} from '../../../services/storage/gr-storage_impl';
import {deepEqual} from '../../../utils/deep-util';
-import {GrSuggestionDiffPreview} from '../gr-suggestion-diff-preview/gr-suggestion-diff-preview';
-import {noAwait, waitUntil} from '../../../utils/async-util';
+import {
+ GrSuggestionDiffPreview,
+ PreviewLoadedDetail,
+} from '../gr-suggestion-diff-preview/gr-suggestion-diff-preview';
+import {waitUntil} from '../../../utils/async-util';
import {
AutocompleteCache,
AutocompletionContext,
@@ -1181,24 +1184,15 @@
.fixSuggestionInfo=${this.generatedFixSuggestion}
.patchSet=${this.comment?.patch_set}
.commentId=${this.comment?.id}
+ @preview-loaded=${(event: CustomEvent<PreviewLoadedDetail>) =>
+ (this.previewedGeneratedFixSuggestion =
+ event.detail.previewLoadedFor)}
></gr-suggestion-diff-preview>`;
} else {
return nothing;
}
}
- // visible for testing
- async waitPreviewForGeneratedSuggestion() {
- const generatedFixSuggestion = this.generatedFixSuggestion;
- if (!generatedFixSuggestion) return;
- await waitUntil(
- () =>
- !!this.suggestionDiffPreview?.previewed &&
- this.suggestionDiffPreview?.previewLoadedFor === generatedFixSuggestion
- );
- this.previewedGeneratedFixSuggestion = generatedFixSuggestion;
- }
-
private renderGenerateSuggestEditButton() {
if (!this.showGeneratedSuggestion()) {
return nothing;
@@ -1323,7 +1317,6 @@
return;
}
this.generatedFixSuggestion = suggestion;
- noAwait(this.waitPreviewForGeneratedSuggestion());
try {
await waitUntil(() => this.getFixSuggestions() !== undefined);
@@ -1560,9 +1553,6 @@
assert(isDraft(this.comment), 'only drafts are editable');
if (this.editing) return;
this.editing = true;
- // For quickly opening and closing the comment, the suggestion diff preview
- // might not have time to load and preview.
- noAwait(this.waitPreviewForGeneratedSuggestion());
}
// TODO: Move this out of gr-comment. gr-comment should not have a comments
diff --git a/polygerrit-ui/app/elements/shared/gr-comment/gr-comment_test.ts b/polygerrit-ui/app/elements/shared/gr-comment/gr-comment_test.ts
index 377e003..84eee96 100644
--- a/polygerrit-ui/app/elements/shared/gr-comment/gr-comment_test.ts
+++ b/polygerrit-ui/app/elements/shared/gr-comment/gr-comment_test.ts
@@ -1155,7 +1155,14 @@
suggestionDiffPreview.previewed = true;
suggestionDiffPreview.previewLoadedFor = generatedFixSuggestion;
await element.updateComplete;
- await element.waitPreviewForGeneratedSuggestion();
+ // trigger event preview-loaded on suggestionDiffPreview with detail
+ suggestionDiffPreview.dispatchEvent(
+ new CustomEvent('preview-loaded', {
+ bubbles: true,
+ detail: {previewLoadedFor: generatedFixSuggestion},
+ })
+ );
+ // await element.waitPreviewForGeneratedSuggestion();
await element.updateComplete;
element.save();
await element.updateComplete;
diff --git a/polygerrit-ui/app/elements/shared/gr-suggestion-diff-preview/gr-suggestion-diff-preview.ts b/polygerrit-ui/app/elements/shared/gr-suggestion-diff-preview/gr-suggestion-diff-preview.ts
index 136979d..93f17c8 100644
--- a/polygerrit-ui/app/elements/shared/gr-suggestion-diff-preview/gr-suggestion-diff-preview.ts
+++ b/polygerrit-ui/app/elements/shared/gr-suggestion-diff-preview/gr-suggestion-diff-preview.ts
@@ -36,7 +36,7 @@
import {getFileExtension} from '../../../utils/file-util';
export interface PreviewLoadedDetail {
- previewLoadedFor?: string | FixSuggestionInfo;
+ previewLoadedFor?: FixSuggestionInfo;
}
/**
* Diff preview for