Wire up logger

Summary:
Splitting this up into the wiring and the actual usage.
This just ensures we have a logger in place for handling
deeplinks.

Reviewed By: mweststrate

Differential Revision: D31337457

fbshipit-source-id: b088a7396e38554a87502ba7d5669dbef1b398d7
This commit is contained in:
Pascal Hartig
2021-10-01 08:07:17 -07:00
committed by Facebook GitHub Bot
parent 4aa7439fbf
commit 7dd9cce9f2
5 changed files with 22 additions and 13 deletions

View File

@@ -368,7 +368,7 @@ function getTemplate(
{
label: 'Trigger deeplink...',
click() {
openDeeplinkDialog(store);
openDeeplinkDialog(store, logger);
},
},
{

View File

@@ -20,6 +20,7 @@ import {
useValue,
} from 'flipper-plugin';
import {handleDeeplink} from '../deeplink';
import {Logger} from '../fb-interfaces/Logger';
test('Triggering a deeplink will work', async () => {
const linksSeen: any[] = [];
@@ -46,7 +47,7 @@ test('Triggering a deeplink will work', async () => {
},
},
);
const {renderer, client, store} = await renderMockFlipperWithPlugin(
const {renderer, client, store, logger} = await renderMockFlipperWithPlugin(
definition,
);
@@ -54,6 +55,7 @@ test('Triggering a deeplink will work', async () => {
await handleDeeplink(
store,
logger,
`flipper://${client.query.app}/${definition.id}/universe`,
);
@@ -88,8 +90,11 @@ test('Triggering a deeplink will work', async () => {
});
test('Will throw error on invalid deeplinks', async () => {
// flipper:///support-form/?form=litho
const logger: Logger = {
track: jest.fn(),
} as any;
expect(() =>
handleDeeplink(undefined as any, `flipper://test`),
handleDeeplink(undefined as any, logger, `flipper://test`),
).rejects.toThrowErrorMatchingInlineSnapshot(`"Unknown deeplink"`);
});

View File

@@ -13,6 +13,7 @@ import {
setPastedToken,
} from './reducers/application';
import {Group, SUPPORTED_GROUPS} from './reducers/supportForm';
import {Logger} from './fb-interfaces/Logger';
import {Store} from './reducers/index';
import {importDataToStore} from './utils/exportData';
import {selectPlugin} from './reducers/connections';
@@ -26,6 +27,7 @@ const UNKNOWN = 'Unknown deeplink';
*/
export async function handleDeeplink(
store: Store,
logger: Logger,
query: string,
): Promise<void> {
const uri = new URL(query);
@@ -119,13 +121,13 @@ export const uriComponents = (url: string): Array<string> => {
return [];
};
export function openDeeplinkDialog(store: Store) {
export function openDeeplinkDialog(store: Store, logger: Logger) {
Dialog.prompt({
title: 'Open deeplink',
message: 'Enter a deeplink:',
defaultValue: 'flipper://',
onConfirm: async (deeplink) => {
await handleDeeplink(store, deeplink);
await handleDeeplink(store, logger, deeplink);
return deeplink;
},
});

View File

@@ -80,7 +80,7 @@ test('Triggering a deeplink will work', async () => {
},
},
);
const {renderer, client, store} = await renderMockFlipperWithPlugin(
const {renderer, client, store, logger} = await renderMockFlipperWithPlugin(
definition,
);
@@ -88,6 +88,7 @@ test('Triggering a deeplink will work', async () => {
await handleDeeplink(
store,
logger,
`flipper://open-plugin?plugin-id=${definition.id}&client=${client.query.app}&payload=universe`,
);
@@ -138,9 +139,8 @@ test('triggering a deeplink without applicable device can wait for a device', as
supportedDevices: [{os: 'iOS'}],
},
);
const {renderer, store, createDevice} = await renderMockFlipperWithPlugin(
definition,
);
const {renderer, store, logger, createDevice} =
await renderMockFlipperWithPlugin(definition);
store.dispatch(
selectPlugin({selectedPlugin: 'nonexisting', deepLinkPayload: null}),
@@ -153,6 +153,7 @@ test('triggering a deeplink without applicable device can wait for a device', as
const handlePromise = handleDeeplink(
store,
logger,
`flipper://open-plugin?plugin-id=${definition.id}&devices=iOS`,
);
@@ -214,7 +215,7 @@ test('triggering a deeplink without applicable client can wait for a device', as
id: 'pluggy',
},
);
const {renderer, store, createClient, device} =
const {renderer, store, createClient, device, logger} =
await renderMockFlipperWithPlugin(definition);
store.dispatch(
@@ -228,6 +229,7 @@ test('triggering a deeplink without applicable client can wait for a device', as
const handlePromise = handleDeeplink(
store,
logger,
`flipper://open-plugin?plugin-id=${definition.id}&client=clienty`,
);

View File

@@ -21,7 +21,7 @@ import {tryCatchReportPlatformFailures} from '../utils/metrics';
import {handleDeeplink} from '../deeplink';
import {Dialog} from 'flipper-plugin';
export default (store: Store, _logger: Logger) => {
export default (store: Store, logger: Logger) => {
const currentWindow = remote.getCurrentWindow();
const onFocus = () => {
setImmediate(() => {
@@ -59,7 +59,7 @@ export default (store: Store, _logger: Logger) => {
ipcRenderer.on(
'flipper-protocol-handler',
(_event: IpcRendererEvent, query: string) => {
handleDeeplink(store, query).catch((e) => {
handleDeeplink(store, logger, query).catch((e) => {
console.warn('Failed to handle deeplink', query, e);
Dialog.alert({
title: 'Failed to open deeplink',