commit 8638969b382dab15e06b9a9690d268fff26414fa Author: Ole Date: Fri Oct 9 20:43:54 2020 +0200 Refactor reload 9: Extract promisification This function is very hard to follow. Making small steps to ensure careful review. Making this function a bit shorter and extracting this unrelated event promisification. Change-Id: Ib7194c36dfcdf9ca2960b25d49e48785f0d082e6 diff --git a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts index 52bd560..61db314 100644 --- a/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts +++ b/polygerrit-ui/app/elements/diff/gr-diff-host/gr-diff-host.ts @@ -357,20 +357,13 @@ export class GrDiffHost extends GestureEventListeners( this.filesWeblinks = this._getFilesWeblinks(diff); this.diff = diff; - const event = await new Promise(resolve => { - const callback = (event: CustomEvent) => { - this.removeEventListener('render', callback); - resolve(event); - }; - this.addEventListener('render', callback); - }); + const event = await this._onRenderOnce(); if (shouldReportMetric) { // We report diffViewContentDisplayed only on reload caused // by params changed - expected only on Diff Page. this.reporting.diffViewContentDisplayed(); } - const needsSyntaxHighlighting = - event.detail && event.detail.contentRendered; + const needsSyntaxHighlighting = !!event.detail?.contentRendered; if (needsSyntaxHighlighting) { this.reporting.time(TimingLabel.SYNTAX); try { @@ -396,6 +389,16 @@ export class GrDiffHost extends GestureEventListeners( return [this.$.syntaxLayer, ...this.$.jsAPI.getDiffLayers(path, changeNum)]; } + private _onRenderOnce(): Promise { + return new Promise(resolve => { + const callback = (event: CustomEvent) => { + this.removeEventListener('render', callback); + resolve(event); + }; + this.addEventListener('render', callback); + }); + } + clear() { if (this.path) this.$.jsAPI.disposeDiffLayers(this.path); this._layers = [];