blob: d67a587e572de04642e2f2ae93c2bad388dc8fae [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import type * as Common from '../core/common/common.js';
import * as SDK from '../core/sdk/sdk.js';
import * as UI from '../ui/legacy/legacy.js';
import {IssuesPane} from './IssuesPane.js';
let issueRevealerInstance: IssueRevealer;
export class IssueRevealer implements Common.Revealer.Revealer {
static instance(opts: {forceNew: boolean|null} = {forceNew: null}): IssueRevealer {
const {forceNew} = opts;
if (!issueRevealerInstance || forceNew) {
issueRevealerInstance = new IssueRevealer();
}
return issueRevealerInstance;
}
async reveal(issue: Object): Promise<void> {
if (!(issue instanceof SDK.Issue.Issue)) {
throw new Error('Internal error: not a issue');
}
await UI.ViewManager.ViewManager.instance().showView('issues-pane');
const view = UI.ViewManager.ViewManager.instance().view('issues-pane');
if (view) {
const issuesPane = await view.widget();
if (issuesPane instanceof IssuesPane) {
issuesPane.revealByCode(issue.code());
} else {
throw new Error('Expected issues pane to be an instance of IssuesPane');
}
}
}
}