Fix apply-edit button on user suggestions
And simplify waiting for preview-loaded.
Release-Notes: skip
Change-Id: If824375ebf7ffe686e1eb3ff15adfaeafa04ee9b
diff --git a/polygerrit-ui/app/elements/shared/gr-fix-suggestions/gr-fix-suggestions.ts b/polygerrit-ui/app/elements/shared/gr-fix-suggestions/gr-fix-suggestions.ts
index 8ff0292..a70ca07 100644
--- a/polygerrit-ui/app/elements/shared/gr-fix-suggestions/gr-fix-suggestions.ts
+++ b/polygerrit-ui/app/elements/shared/gr-fix-suggestions/gr-fix-suggestions.ts
@@ -25,7 +25,6 @@
import {storageServiceToken} from '../../../services/storage/gr-storage_impl';
import {getAppContext} from '../../../services/app-context';
import {Interaction} from '../../../constants/reporting';
-import {waitUntil} from '../../../utils/async-util';
export const COLLAPSE_SUGGESTION_STORAGE_KEY = 'collapseSuggestionStorageKey';
@@ -215,6 +214,7 @@
</div>
<gr-suggestion-diff-preview
.fixSuggestionInfo=${this.comment?.fix_suggestions?.[0]}
+ @preview-loaded=${() => (this.previewLoaded = true)}
></gr-suggestion-diff-preview>`;
}
@@ -300,17 +300,7 @@
override updated(changedProperties: PropertyValues) {
super.updated(changedProperties);
if (changedProperties.has('comment') && this.comment?.fix_suggestions) {
- this.waitForPreviewToLoad();
- }
- }
-
- private async waitForPreviewToLoad() {
- this.previewLoaded = false;
- try {
- await waitUntil(() => !!this.suggestionDiffPreview?.preview);
- this.previewLoaded = true;
- } catch (error) {
- console.error('Error waiting for preview to load:', error);
+ this.previewLoaded = false;
}
}
}
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 5dbf9b7..9d8b327 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
@@ -37,6 +37,9 @@
import {createChangeUrl} from '../../../models/views/change';
import {getFileExtension} from '../../../utils/file-util';
+export interface PreviewLoadedDetail {
+ previewLoadedFor?: string | FixSuggestionInfo;
+}
/**
* Diff preview for
* 1. code block suggestion vs commented Text
@@ -254,6 +257,10 @@
this.preview = currentPreviews[0];
this.previewLoadedFor = this.fixSuggestionInfo;
this.previewed = true;
+
+ fire(this, 'preview-loaded', {
+ previewLoadedFor: this.fixSuggestionInfo,
+ });
}
return res;
@@ -318,4 +325,7 @@
interface HTMLElementTagNameMap {
'gr-suggestion-diff-preview': GrSuggestionDiffPreview;
}
+ interface HTMLElementEventMap {
+ 'preview-loaded': CustomEvent<PreviewLoadedDetail>;
+ }
}
diff --git a/polygerrit-ui/app/elements/shared/gr-user-suggestion-fix/gr-user-suggestion-fix.ts b/polygerrit-ui/app/elements/shared/gr-user-suggestion-fix/gr-user-suggestion-fix.ts
index fef2252..3c3d52e 100644
--- a/polygerrit-ui/app/elements/shared/gr-user-suggestion-fix/gr-user-suggestion-fix.ts
+++ b/polygerrit-ui/app/elements/shared/gr-user-suggestion-fix/gr-user-suggestion-fix.ts
@@ -18,7 +18,6 @@
import {changeModelToken} from '../../../models/change/change-model';
import {Comment, PatchSetNumber} from '../../../types/common';
import {commentModelToken} from '../gr-comment-model/gr-comment-model';
-import {waitUntil} from '../../../utils/async-util';
import {createUserFixSuggestion} from '../../../utils/comment-util';
declare global {
@@ -153,11 +152,19 @@
</div>
</div>
<gr-suggestion-diff-preview
- .fixSuggestions=${fixSuggestions[0]}
+ .fixSuggestionInfo=${fixSuggestions[0]}
.codeText=${code}
+ @preview-loaded=${() => (this.previewLoaded = true)}
></gr-suggestion-diff-preview>`;
}
+ override updated(changedProperties: PropertyValues) {
+ super.updated(changedProperties);
+ if (changedProperties.has('commentedText') && this.commentedText) {
+ this.previewLoaded = false;
+ }
+ }
+
handleShowFix() {
if (!this.textContent) return;
fire(this, 'open-user-suggest-preview', {code: this.textContent});
@@ -180,23 +187,6 @@
if (!this.previewLoaded) return 'Fix is still loading ...';
return '';
}
-
- override updated(changedProperties: PropertyValues) {
- super.updated(changedProperties);
- if (changedProperties.has('textContent') && this.textContent) {
- this.waitForPreviewToLoad();
- }
- }
-
- private async waitForPreviewToLoad() {
- this.previewLoaded = false;
- try {
- await waitUntil(() => !!this.suggestionDiffPreview?.preview);
- this.previewLoaded = true;
- } catch (error) {
- console.error('Error waiting for preview to load:', error);
- }
- }
}
declare global {