microsoft/vscode-react-native

Public

mirrored from https://github.com/microsoft/vscode-react-nativeAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
dev/v-zhenyuan/update-parameters

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

src/extension/networkInspector/views/inspectorViewFactory.ts

35lines · modecode

1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT license. See LICENSE file in the project root for details.
3
4import { OutputChannelLogger } from "../../log/OutputChannelLogger";
5import { NETWORK_INSPECTOR_LOG_CHANNEL_NAME } from "../networkInspectorServer";
6import { InspectorConsoleView } from "./inspectorConsoleView";
7import { InspectorViewType, InspectorView } from "./inspectorView";
8
9export class InspectorViewFactory {
10 private static cachedInspectorViews = new Map<InspectorViewType, InspectorView>();
11
12 public static getInspectorView(inspectorViewType: InspectorViewType): InspectorView {
13 if (!InspectorViewFactory.cachedInspectorViews.has(inspectorViewType)) {
14 if (inspectorViewType === InspectorViewType.console) {
15 InspectorViewFactory.cachedInspectorViews.set(
16 InspectorViewType.console,
17 new InspectorConsoleView(
18 OutputChannelLogger.getChannel(NETWORK_INSPECTOR_LOG_CHANNEL_NAME),
19 ),
20 );
21 } else {
22 // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
23 throw new Error(`Unsupported inspector view type: ${inspectorViewType}`);
24 }
25 }
26 return InspectorViewFactory.cachedInspectorViews.get(inspectorViewType) as InspectorView;
27 }
28
29 public static clearCache(): void {
30 InspectorViewFactory.cachedInspectorViews.forEach(inspectorView => {
31 inspectorView.dispose();
32 });
33 InspectorViewFactory.cachedInspectorViews.clear();
34 }
35}
36