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:
committed by
Facebook GitHub Bot
parent
4aa7439fbf
commit
7dd9cce9f2
@@ -368,7 +368,7 @@ function getTemplate(
|
||||
{
|
||||
label: 'Trigger deeplink...',
|
||||
click() {
|
||||
openDeeplinkDialog(store);
|
||||
openDeeplinkDialog(store, logger);
|
||||
},
|
||||
},
|
||||
{
|
||||
|
||||
@@ -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"`);
|
||||
});
|
||||
|
||||
@@ -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;
|
||||
},
|
||||
});
|
||||
|
||||
@@ -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`,
|
||||
);
|
||||
|
||||
|
||||
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user