From dcd1c08dea998223134196a15d2e3bd4389f0fe7 Mon Sep 17 00:00:00 2001 From: Anton Nikolaev Date: Thu, 6 Aug 2020 04:49:39 -0700 Subject: [PATCH] Expose IDEFileResolver from 'flipper' module to properly import it from 'layout' plugin (#1442) Summary: Pull Request resolved: https://github.com/facebook/flipper/pull/1442 Layout plugin cannot be bundled as a standalone package because it imports a file from outside of its folder. This change exposes IDEFileResolver in a proper way so now it's possible to import it from 'flipper'. Reviewed By: passy Differential Revision: D22975515 fbshipit-source-id: 8af6d2ca1ceb8627a449e055c8773549dd681b7a --- desktop/app/src/fb-stubs/FileResolver.tsx | 35 ------------------ desktop/app/src/fb-stubs/IDEFileResolver.tsx | 37 ++++++++++++++++++++ desktop/app/src/index.tsx | 1 + desktop/plugins/layout/index.tsx | 29 ++++++++------- 4 files changed, 54 insertions(+), 48 deletions(-) delete mode 100644 desktop/app/src/fb-stubs/FileResolver.tsx create mode 100644 desktop/app/src/fb-stubs/IDEFileResolver.tsx diff --git a/desktop/app/src/fb-stubs/FileResolver.tsx b/desktop/app/src/fb-stubs/FileResolver.tsx deleted file mode 100644 index 3ee29a4bd..000000000 --- a/desktop/app/src/fb-stubs/FileResolver.tsx +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - * @format - */ - -export enum IDE { - 'DIFFUSION', - 'AS', - 'VSCODE', - 'XCODE', -} - -export async function resolveFullPathsFromMyles( - _fileName: string, - _dirRoot: string, -): Promise { - throw new Error('Method not implemented.'); -} - -export function openInIDE( - _filePath: string, - _ide: IDE, - _repo: string, - _lineNumber = 0, -) { - throw new Error('Method not implemented.'); -} - -export function getBestPath(_paths: string[], _className: string): string { - throw new Error('Method not implemented.'); -} diff --git a/desktop/app/src/fb-stubs/IDEFileResolver.tsx b/desktop/app/src/fb-stubs/IDEFileResolver.tsx new file mode 100644 index 000000000..5ea614803 --- /dev/null +++ b/desktop/app/src/fb-stubs/IDEFileResolver.tsx @@ -0,0 +1,37 @@ +/** + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + * + * @format + */ + +export enum IDEType { + 'DIFFUSION', + 'AS', + 'VSCODE', + 'XCODE', +} + +export abstract class IDEFileResolver { + static async resolveFullPathsFromMyles( + _fileName: string, + _dirRoot: string, + ): Promise { + throw new Error('Method not implemented.'); + } + + static openInIDE( + _filePath: string, + _ide: IDEType, + _repo: string, + _lineNumber = 0, + ) { + throw new Error('Method not implemented.'); + } + + static getBestPath(_paths: string[], _className: string): string { + throw new Error('Method not implemented.'); + } +} diff --git a/desktop/app/src/index.tsx b/desktop/app/src/index.tsx index 570215781..27af723ce 100644 --- a/desktop/app/src/index.tsx +++ b/desktop/app/src/index.tsx @@ -195,3 +195,4 @@ export {useLocalStorage} from './utils/useLocalStorage'; export {checkIdbIsInstalled} from './utils/iOSContainerUtility'; // Sidebar extensions should be last so they can import anything from here. export {default as SidebarExtensions} from './fb-stubs/LayoutInspectorSidebarExtensions'; +export {IDEFileResolver, IDEType} from './fb-stubs/IDEFileResolver'; diff --git a/desktop/plugins/layout/index.tsx b/desktop/plugins/layout/index.tsx index 15e75d0a5..1fc3cd74a 100644 --- a/desktop/plugins/layout/index.tsx +++ b/desktop/plugins/layout/index.tsx @@ -29,14 +29,12 @@ import InspectorSidebar from './InspectorSidebar'; import Search from './Search'; import ProxyArchiveClient from './ProxyArchiveClient'; import React from 'react'; -import {VisualizerPortal} from 'flipper'; -import {getFlipperMediaCDN} from 'flipper'; import { - resolveFullPathsFromMyles, - getBestPath, - IDE, - openInIDE, -} from '../../app/src/fb-stubs/FileResolver'; + VisualizerPortal, + getFlipperMediaCDN, + IDEFileResolver, + IDEType, +} from 'flipper'; type State = { init: boolean; @@ -69,7 +67,7 @@ type ClassFileParams = { dirRoot: string; repo: string; lineNumber: number; - ide: IDE; + ide: IDEType; }; export default class LayoutPlugin extends FlipperPlugin< @@ -250,16 +248,21 @@ export default class LayoutPlugin extends FlipperPlugin< } openInIDE = async (params: ClassFileParams) => { - const paths = await resolveFullPathsFromMyles( + const paths = await IDEFileResolver.resolveFullPathsFromMyles( params.fileName, params.dirRoot, ); - const selectedPath = getBestPath(paths, params.className); - let ide: IDE = Number(IDE[params.ide]); + const selectedPath = IDEFileResolver.getBestPath(paths, params.className); + let ide: IDEType = Number(IDEType[params.ide]); if (Number.isNaN(ide)) { - ide = IDE.AS; // default value + ide = IDEType.AS; // default value } - openInIDE(selectedPath, ide, params.repo, params.lineNumber); + IDEFileResolver.openInIDE( + selectedPath, + ide, + params.repo, + params.lineNumber, + ); }; onToggleTargetMode = () => {