Splitting the 'OpenInIDE' API to 'resolvePath' and 'open' APIs
Summary: Detect if resolved path is properly computed and accordingly display a success or error notification within InAppErrorReporter. Reviewed By: arpitratan Differential Revision: D23425001 fbshipit-source-id: 4ca903a8b9e83dc0e11bb823537f56678dd85b76
This commit is contained in:
committed by
Facebook GitHub Bot
parent
374648975c
commit
5b4403b400
@@ -23,7 +23,9 @@ import com.facebook.flipper.core.FlipperResponder;
|
|||||||
import com.facebook.flipper.plugins.common.MainThreadFlipperReceiver;
|
import com.facebook.flipper.plugins.common.MainThreadFlipperReceiver;
|
||||||
import com.facebook.flipper.plugins.inspector.descriptors.ApplicationDescriptor;
|
import com.facebook.flipper.plugins.inspector.descriptors.ApplicationDescriptor;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
public class InspectorFlipperPlugin implements FlipperPlugin {
|
public class InspectorFlipperPlugin implements FlipperPlugin {
|
||||||
@@ -36,6 +38,7 @@ public class InspectorFlipperPlugin implements FlipperPlugin {
|
|||||||
private FlipperConnection mConnection;
|
private FlipperConnection mConnection;
|
||||||
private @Nullable List<ExtensionCommand> mExtensionCommands;
|
private @Nullable List<ExtensionCommand> mExtensionCommands;
|
||||||
private boolean mShowLithoAccessibilitySettings;
|
private boolean mShowLithoAccessibilitySettings;
|
||||||
|
private Map<String, String> resolvedPaths = new HashMap<>();
|
||||||
|
|
||||||
public enum IDE {
|
public enum IDE {
|
||||||
DIFFUSION("Diffusion"),
|
DIFFUSION("Diffusion"),
|
||||||
@@ -123,6 +126,7 @@ public class InspectorFlipperPlugin implements FlipperPlugin {
|
|||||||
connection.receive("onRequestAXFocus", mOnRequestAXFocus);
|
connection.receive("onRequestAXFocus", mOnRequestAXFocus);
|
||||||
connection.receive(
|
connection.receive(
|
||||||
"shouldShowLithoAccessibilitySettings", mShouldShowLithoAccessibilitySettings);
|
"shouldShowLithoAccessibilitySettings", mShouldShowLithoAccessibilitySettings);
|
||||||
|
connection.receive("setResolvedPath", mSetResolvedPath);
|
||||||
|
|
||||||
if (mExtensionCommands != null) {
|
if (mExtensionCommands != null) {
|
||||||
for (ExtensionCommand extensionCommand : mExtensionCommands) {
|
for (ExtensionCommand extensionCommand : mExtensionCommands) {
|
||||||
@@ -463,16 +467,40 @@ public class InspectorFlipperPlugin implements FlipperPlugin {
|
|||||||
return mConnection != null;
|
return mConnection != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void openInIDE(
|
final FlipperReceiver mSetResolvedPath =
|
||||||
String fileName, String className, String dirRoot, String repo, int lineNumber, IDE ide) {
|
new MainThreadFlipperReceiver() {
|
||||||
|
@Override
|
||||||
|
public void onReceiveOnMainThread(
|
||||||
|
final FlipperObject params, final FlipperResponder responder) throws Exception {
|
||||||
|
resolvedPaths.put(params.getString("className"), params.getString("resolvedPath"));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
public String getResolvedPath(String className) {
|
||||||
|
return resolvedPaths.get(className);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void resolvePath(String fileName, String className, String dirRoot) {
|
||||||
|
if (mConnection == null || resolvedPaths.get(className) != null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mConnection.send(
|
||||||
|
"resolvePath",
|
||||||
|
new FlipperObject.Builder()
|
||||||
|
.put("fileName", fileName)
|
||||||
|
.put("className", className)
|
||||||
|
.put("dirRoot", dirRoot)
|
||||||
|
.build());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void openInIDE(String resolvedPath, String repo, int lineNumber, IDE ide) {
|
||||||
if (mConnection == null) return;
|
if (mConnection == null) return;
|
||||||
|
|
||||||
mConnection.send(
|
mConnection.send(
|
||||||
"openInIDE",
|
"openInIDE",
|
||||||
new FlipperObject.Builder()
|
new FlipperObject.Builder()
|
||||||
.put("fileName", fileName)
|
.put("resolvedPath", resolvedPath)
|
||||||
.put("className", className)
|
|
||||||
.put("dirRoot", dirRoot)
|
|
||||||
.put("repo", repo)
|
.put("repo", repo)
|
||||||
.put("lineNumber", lineNumber)
|
.put("lineNumber", lineNumber)
|
||||||
.put("ide", ide)
|
.put("ide", ide)
|
||||||
|
|||||||
@@ -65,9 +65,13 @@ type ClassFileParams = {
|
|||||||
fileName: string;
|
fileName: string;
|
||||||
className: string;
|
className: string;
|
||||||
dirRoot: string;
|
dirRoot: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
type OpenFileParams = {
|
||||||
|
resolvedPath: string;
|
||||||
|
ide: IDEType;
|
||||||
repo: string;
|
repo: string;
|
||||||
lineNumber: number;
|
lineNumber: number;
|
||||||
ide: IDEType;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default class LayoutPlugin extends FlipperPlugin<
|
export default class LayoutPlugin extends FlipperPlugin<
|
||||||
@@ -220,7 +224,11 @@ export default class LayoutPlugin extends FlipperPlugin<
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
this.client.subscribe('openInIDE', (params: ClassFileParams) => {
|
this.client.subscribe('resolvePath', (params: ClassFileParams) => {
|
||||||
|
this.resolvePath(params);
|
||||||
|
});
|
||||||
|
|
||||||
|
this.client.subscribe('openInIDE', (params: OpenFileParams) => {
|
||||||
this.openInIDE(params);
|
this.openInIDE(params);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -256,18 +264,25 @@ export default class LayoutPlugin extends FlipperPlugin<
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
openInIDE = async (params: ClassFileParams) => {
|
resolvePath = async (params: ClassFileParams) => {
|
||||||
const paths = await IDEFileResolver.resolveFullPathsFromMyles(
|
const paths = await IDEFileResolver.resolveFullPathsFromMyles(
|
||||||
params.fileName,
|
params.fileName,
|
||||||
params.dirRoot,
|
params.dirRoot,
|
||||||
);
|
);
|
||||||
const selectedPath = IDEFileResolver.getBestPath(paths, params.className);
|
const resolvedPath = IDEFileResolver.getBestPath(paths, params.className);
|
||||||
|
this.client.send('setResolvedPath', {
|
||||||
|
className: params.className,
|
||||||
|
resolvedPath: resolvedPath,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
openInIDE = async (params: OpenFileParams) => {
|
||||||
let ide: IDEType = Number(IDEType[params.ide]);
|
let ide: IDEType = Number(IDEType[params.ide]);
|
||||||
if (Number.isNaN(ide)) {
|
if (Number.isNaN(ide)) {
|
||||||
ide = IDEType.AS; // default value
|
ide = IDEType.AS; // default value
|
||||||
}
|
}
|
||||||
IDEFileResolver.openInIDE(
|
IDEFileResolver.openInIDE(
|
||||||
selectedPath,
|
params.resolvedPath,
|
||||||
ide,
|
ide,
|
||||||
params.repo,
|
params.repo,
|
||||||
params.lineNumber,
|
params.lineNumber,
|
||||||
|
|||||||
Reference in New Issue
Block a user