diff --git a/desktop/app/src/Client.tsx b/desktop/app/src/Client.tsx
index 53a8b897f..80b34f234 100644
--- a/desktop/app/src/Client.tsx
+++ b/desktop/app/src/Client.tsx
@@ -15,7 +15,7 @@ import BaseDevice from './devices/BaseDevice';
import {Logger} from 'flipper-common';
import {Store} from './reducers/index';
import {performance} from 'perf_hooks';
-import {reportPluginFailures} from './utils/metrics';
+import {reportPluginFailures} from 'flipper-common';
import {default as isProduction} from './utils/isProduction';
import {EventEmitter} from 'events';
import invariant from 'invariant';
diff --git a/desktop/app/src/PluginContainer.tsx b/desktop/app/src/PluginContainer.tsx
index ece78c79b..e7b258453 100644
--- a/desktop/app/src/PluginContainer.tsx
+++ b/desktop/app/src/PluginContainer.tsx
@@ -46,7 +46,7 @@ import {InstalledPluginDetails} from 'flipper-plugin-lib';
import semver from 'semver';
import {loadPlugin} from './reducers/pluginManager';
import {produce} from 'immer';
-import {reportUsage} from './utils/metrics';
+import {reportUsage} from 'flipper-common';
import {PluginInfo} from './chrome/fb-stubs/PluginInfo';
import {getActiveClient, getActivePlugin} from './selectors/connections';
import {AnyAction} from 'redux';
diff --git a/desktop/app/src/chrome/ChangelogSheet.tsx b/desktop/app/src/chrome/ChangelogSheet.tsx
index e69628273..46faaca12 100644
--- a/desktop/app/src/chrome/ChangelogSheet.tsx
+++ b/desktop/app/src/chrome/ChangelogSheet.tsx
@@ -11,7 +11,7 @@ import {Markdown} from '../ui';
import {readFileSync} from 'fs';
import React, {Component} from 'react';
import path from 'path';
-import {reportUsage} from '../utils/metrics';
+import {reportUsage} from 'flipper-common';
import {getChangelogPath} from '../utils/pathUtils';
import {Modal} from 'antd';
import {theme} from 'flipper-plugin';
diff --git a/desktop/app/src/chrome/DoctorSheet.tsx b/desktop/app/src/chrome/DoctorSheet.tsx
index df3ee6834..1e9af333d 100644
--- a/desktop/app/src/chrome/DoctorSheet.tsx
+++ b/desktop/app/src/chrome/DoctorSheet.tsx
@@ -38,7 +38,7 @@ import runHealthchecks, {
HealthcheckEventsHandler,
} from '../utils/runHealthchecks';
import {getFlipperLib} from 'flipper-plugin';
-import {reportUsage} from '../utils/metrics';
+import {reportUsage} from 'flipper-common';
type StateFromProps = {
healthcheckReport: HealthcheckReport;
diff --git a/desktop/app/src/chrome/RatingButton.tsx b/desktop/app/src/chrome/RatingButton.tsx
index 0f50a6790..16173967a 100644
--- a/desktop/app/src/chrome/RatingButton.tsx
+++ b/desktop/app/src/chrome/RatingButton.tsx
@@ -32,7 +32,7 @@ import {Popover, Rate} from 'antd';
import {useStore} from '../utils/useStore';
import {isLoggedIn} from '../fb-stubs/user';
import {useValue} from 'flipper-plugin';
-import {reportPlatformFailures} from '../utils/metrics';
+import {reportPlatformFailures} from 'flipper-common';
type NextAction = 'select-rating' | 'leave-comment' | 'finished';
diff --git a/desktop/app/src/chrome/SettingsSheet.tsx b/desktop/app/src/chrome/SettingsSheet.tsx
index a9efe593e..19d51779e 100644
--- a/desktop/app/src/chrome/SettingsSheet.tsx
+++ b/desktop/app/src/chrome/SettingsSheet.tsx
@@ -25,7 +25,7 @@ import KeyboardShortcutInput from './settings/KeyboardShortcutInput';
import {isEqual, isMatch, isEmpty} from 'lodash';
import restartFlipper from '../utils/restartFlipper';
import LauncherSettingsPanel from '../fb-stubs/LauncherSettingsPanel';
-import {reportUsage} from '../utils/metrics';
+import {reportUsage} from 'flipper-common';
import {Modal, message, Button} from 'antd';
import {Layout, withTrackingScope, _NuxManagerContext} from 'flipper-plugin';
diff --git a/desktop/app/src/chrome/ShareSheetExportFile.tsx b/desktop/app/src/chrome/ShareSheetExportFile.tsx
index e640059b2..13d16807d 100644
--- a/desktop/app/src/chrome/ShareSheetExportFile.tsx
+++ b/desktop/app/src/chrome/ShareSheetExportFile.tsx
@@ -9,7 +9,7 @@
import {FlexColumn, Button, styled, Text, FlexRow, Spacer} from '../ui';
import React, {Component} from 'react';
-import {reportPlatformFailures} from '../utils/metrics';
+import {reportPlatformFailures} from 'flipper-common';
import {performance} from 'perf_hooks';
import {Logger} from 'flipper-common';
import {IdlerImpl} from '../utils/Idler';
diff --git a/desktop/app/src/chrome/ShareSheetExportUrl.tsx b/desktop/app/src/chrome/ShareSheetExportUrl.tsx
index bcd93e151..a384dd4f7 100644
--- a/desktop/app/src/chrome/ShareSheetExportUrl.tsx
+++ b/desktop/app/src/chrome/ShareSheetExportUrl.tsx
@@ -23,7 +23,7 @@ import {
displayFetchMetadataErrors,
} from '../utils/exportData';
import ShareSheetErrorList from './ShareSheetErrorList';
-import {reportPlatformFailures} from '../utils/metrics';
+import {reportPlatformFailures} from 'flipper-common';
import {performance} from 'perf_hooks';
import ShareSheetPendingDialog from './ShareSheetPendingDialog';
import {getLogger} from 'flipper-common';
diff --git a/desktop/app/src/chrome/UpdateIndicator.tsx b/desktop/app/src/chrome/UpdateIndicator.tsx
index 5750c6c83..f67c6ac34 100644
--- a/desktop/app/src/chrome/UpdateIndicator.tsx
+++ b/desktop/app/src/chrome/UpdateIndicator.tsx
@@ -9,7 +9,7 @@
import {notification, Typography} from 'antd';
import isProduction from '../utils/isProduction';
-import {reportPlatformFailures} from '../utils/metrics';
+import {reportPlatformFailures} from 'flipper-common';
import React, {useEffect, useState} from 'react';
import fbConfig from '../fb-stubs/config';
import {useStore} from '../utils/useStore';
diff --git a/desktop/app/src/chrome/plugin-manager/PluginInstaller.tsx b/desktop/app/src/chrome/plugin-manager/PluginInstaller.tsx
index 5b12870bb..0cb0aeb61 100644
--- a/desktop/app/src/chrome/plugin-manager/PluginInstaller.tsx
+++ b/desktop/app/src/chrome/plugin-manager/PluginInstaller.tsx
@@ -10,7 +10,7 @@
import {Layout, theme} from 'flipper-plugin';
import {LoadingIndicator, TableRows, ManagedTable, Glyph} from '../../ui';
import React, {useCallback, useState, useEffect} from 'react';
-import {reportPlatformFailures, reportUsage} from '../../utils/metrics';
+import {reportPlatformFailures, reportUsage} from 'flipper-common';
import reloadFlipper from '../../utils/reloadFlipper';
import {registerInstalledPlugins} from '../../reducers/plugins';
import {
diff --git a/desktop/app/src/dispatcher/application.tsx b/desktop/app/src/dispatcher/application.tsx
index 5509dc6b5..70ff82485 100644
--- a/desktop/app/src/dispatcher/application.tsx
+++ b/desktop/app/src/dispatcher/application.tsx
@@ -17,7 +17,7 @@ import {
importFileToStore,
IMPORT_FLIPPER_TRACE_EVENT,
} from '../utils/exportData';
-import {tryCatchReportPlatformFailures} from '../utils/metrics';
+import {tryCatchReportPlatformFailures} from 'flipper-common';
import {handleDeeplink} from '../deeplink';
import {Dialog} from 'flipper-plugin';
diff --git a/desktop/app/src/dispatcher/flipperServer.tsx b/desktop/app/src/dispatcher/flipperServer.tsx
index dbe773341..38b3d3571 100644
--- a/desktop/app/src/dispatcher/flipperServer.tsx
+++ b/desktop/app/src/dispatcher/flipperServer.tsx
@@ -19,7 +19,7 @@ import Client from '../Client';
import {notification} from 'antd';
import BaseDevice from '../devices/BaseDevice';
import {ClientDescription, timeout} from 'flipper-common';
-import {reportPlatformFailures} from '../utils/metrics';
+import {reportPlatformFailures} from 'flipper-common';
import {sideEffect} from '../utils/sideEffect';
export default async (store: Store, logger: Logger) => {
diff --git a/desktop/app/src/dispatcher/handleOpenPluginDeeplink.tsx b/desktop/app/src/dispatcher/handleOpenPluginDeeplink.tsx
index dbe6f7dd8..16a16e99a 100644
--- a/desktop/app/src/dispatcher/handleOpenPluginDeeplink.tsx
+++ b/desktop/app/src/dispatcher/handleOpenPluginDeeplink.tsx
@@ -14,7 +14,7 @@ import {getUser} from '../fb-stubs/user';
import {State, Store} from '../reducers/index';
import {checkForUpdate} from '../fb-stubs/checkForUpdate';
import {getAppVersion} from '../utils/info';
-import {UserNotSignedInError} from '../utils/errors';
+import {UserNotSignedInError} from 'flipper-common';
import {selectPlugin, setPluginEnabled} from '../reducers/connections';
import {getUpdateAvailableMessage} from '../chrome/UpdateIndicator';
import {Typography} from 'antd';
diff --git a/desktop/app/src/dispatcher/pluginDownloads.tsx b/desktop/app/src/dispatcher/pluginDownloads.tsx
index 6826bc471..1d5b47e89 100644
--- a/desktop/app/src/dispatcher/pluginDownloads.tsx
+++ b/desktop/app/src/dispatcher/pluginDownloads.tsx
@@ -26,7 +26,7 @@ import fs from 'fs-extra';
import path from 'path';
import tmp from 'tmp';
import {promisify} from 'util';
-import {reportPlatformFailures, reportUsage} from '../utils/metrics';
+import {reportPlatformFailures, reportUsage} from 'flipper-common';
import {loadPlugin} from '../reducers/pluginManager';
import {showErrorNotification} from '../utils/notifications';
import {pluginInstalled} from '../reducers/plugins';
diff --git a/desktop/app/src/dispatcher/plugins.tsx b/desktop/app/src/dispatcher/plugins.tsx
index f24f635c3..32932397a 100644
--- a/desktop/app/src/dispatcher/plugins.tsx
+++ b/desktop/app/src/dispatcher/plugins.tsx
@@ -37,7 +37,7 @@ import {
BundledPluginDetails,
ConcretePluginDetails,
} from 'flipper-plugin-lib';
-import {tryCatchReportPluginFailures, reportUsage} from '../utils/metrics';
+import {tryCatchReportPluginFailures, reportUsage} from 'flipper-common';
import * as FlipperPluginSDK from 'flipper-plugin';
import {_SandyPluginDefinition} from 'flipper-plugin';
import loadDynamicPlugins from '../utils/loadDynamicPlugins';
diff --git a/desktop/app/src/fb-stubs/__mocks__/Logger.tsx b/desktop/app/src/fb-stubs/__mocks__/Logger.tsx
index 00b11bd91..39fad9021 100644
--- a/desktop/app/src/fb-stubs/__mocks__/Logger.tsx
+++ b/desktop/app/src/fb-stubs/__mocks__/Logger.tsx
@@ -8,10 +8,7 @@
*/
import {Store} from '../../reducers/index';
-import {
- getErrorFromErrorLike,
- getStringFromErrorLike,
-} from '../../utils/errors';
+import {getErrorFromErrorLike, getStringFromErrorLike} from 'flipper-common';
import {LoggerArgs, Logger} from 'flipper-common';
const instance = {
diff --git a/desktop/app/src/index.tsx b/desktop/app/src/index.tsx
index 61b662bfa..800877761 100644
--- a/desktop/app/src/index.tsx
+++ b/desktop/app/src/index.tsx
@@ -26,7 +26,7 @@ export {
export {FlipperPlugin, FlipperDevicePlugin, BaseAction} from './plugin';
export {PluginClient, Props} from './plugin';
export {default as Client} from './Client';
-export {reportUsage} from './utils/metrics';
+export {reportUsage} from 'flipper-common';
export {default as promiseTimeout} from './utils/promiseTimeout';
export {clipboard, remote, OpenDialogOptions} from 'electron';
export {bufferToBlob} from './utils/screenshot';
diff --git a/desktop/app/src/init.tsx b/desktop/app/src/init.tsx
index 51f4c5d4a..cdd935628 100644
--- a/desktop/app/src/init.tsx
+++ b/desktop/app/src/init.tsx
@@ -52,7 +52,8 @@ import {PersistGate} from 'redux-persist/integration/react';
// eslint-disable-next-line flipper/no-electron-remote-imports
import {ipcRenderer, remote} from 'electron';
import {helloWorld} from 'flipper-server-core';
-import {setLoggerInstance} from 'flipper-common';
+import {setLoggerInstance, setUserSessionManagerInstance} from 'flipper-common';
+import {internGraphPOSTAPIRequest} from './fb-stubs/user';
helloWorld();
@@ -207,6 +208,10 @@ function init() {
else console.warn(msg, r.error);
}
});
+ setUserSessionManagerInstance({
+ internGraphPOSTAPIRequest,
+ });
+
ReactDOM.render(
,
document.getElementById('root'),
diff --git a/desktop/app/src/reducers/notifications.tsx b/desktop/app/src/reducers/notifications.tsx
index 8506250fa..ab52092dd 100644
--- a/desktop/app/src/reducers/notifications.tsx
+++ b/desktop/app/src/reducers/notifications.tsx
@@ -10,7 +10,7 @@
import {Notification} from 'flipper-plugin';
import {Actions} from './';
import React from 'react';
-import {getStringFromErrorLike} from '../utils/errors';
+import {getStringFromErrorLike} from 'flipper-common';
export const GLOBAL_NOTIFICATION_PLUGIN_ID = 'Flipper';
diff --git a/desktop/app/src/reducers/supportForm.tsx b/desktop/app/src/reducers/supportForm.tsx
index b34bfc3a3..0cbea179b 100644
--- a/desktop/app/src/reducers/supportForm.tsx
+++ b/desktop/app/src/reducers/supportForm.tsx
@@ -16,7 +16,7 @@ import {selectedPlugins as setSelectedPlugins} from './plugins';
import {addStatusMessage, removeStatusMessage} from './application';
import constants from '../fb-stubs/constants';
import {getLogger} from 'flipper-common';
-import {logPlatformSuccessRate} from '../utils/metrics';
+import {logPlatformSuccessRate} from 'flipper-common';
export const SUPPORT_FORM_PREFIX = 'support-form-v2';
import {getExportablePlugins} from '../selectors/connections';
import {DeviceOS} from 'flipper-plugin';
diff --git a/desktop/app/src/sandy-chrome/SetupDoctorScreen.tsx b/desktop/app/src/sandy-chrome/SetupDoctorScreen.tsx
index 28e595929..5a985ef58 100644
--- a/desktop/app/src/sandy-chrome/SetupDoctorScreen.tsx
+++ b/desktop/app/src/sandy-chrome/SetupDoctorScreen.tsx
@@ -34,7 +34,7 @@ import {
} from '../reducers/healthchecks';
import runHealthchecks from '../utils/runHealthchecks';
import {Healthchecks} from 'flipper-doctor';
-import {reportUsage} from '../utils/metrics';
+import {reportUsage} from 'flipper-common';
const {Title, Paragraph, Text} = Typography;
diff --git a/desktop/app/src/sandy-chrome/appinspect/PluginList.tsx b/desktop/app/src/sandy-chrome/appinspect/PluginList.tsx
index 53cc50928..5e8fb72eb 100644
--- a/desktop/app/src/sandy-chrome/appinspect/PluginList.tsx
+++ b/desktop/app/src/sandy-chrome/appinspect/PluginList.tsx
@@ -36,7 +36,7 @@ import {
uninstallPlugin,
} from '../../reducers/pluginManager';
import {BundledPluginDetails} from 'flipper-plugin-lib';
-import {reportUsage} from '../../utils/metrics';
+import {reportUsage} from 'flipper-common';
import ConnectivityStatus from './fb-stubs/ConnectivityStatus';
import {useSelector} from 'react-redux';
import {getPluginLists} from '../../selectors/connections';
diff --git a/desktop/app/src/server/comms/ServerController.tsx b/desktop/app/src/server/comms/ServerController.tsx
index a1738353f..6412a00d8 100644
--- a/desktop/app/src/server/comms/ServerController.tsx
+++ b/desktop/app/src/server/comms/ServerController.tsx
@@ -13,7 +13,7 @@ import {ClientDescription, ClientQuery, isTest} from 'flipper-common';
import CertificateProvider from '../utils/CertificateProvider';
import {ClientConnection, ConnectionStatus} from './ClientConnection';
import {UninitializedClient} from 'flipper-common';
-import {reportPlatformFailures} from '../../utils/metrics';
+import {reportPlatformFailures} from 'flipper-common';
import {EventEmitter} from 'events';
import invariant from 'invariant';
import GK from '../../fb-stubs/GK';
diff --git a/desktop/app/src/server/devices/android/adbClient.tsx b/desktop/app/src/server/devices/android/adbClient.tsx
index 60dfa0772..67ca1bd32 100644
--- a/desktop/app/src/server/devices/android/adbClient.tsx
+++ b/desktop/app/src/server/devices/android/adbClient.tsx
@@ -7,7 +7,7 @@
* @format
*/
-import {reportPlatformFailures} from '../../../utils/metrics';
+import {reportPlatformFailures} from 'flipper-common';
import {execFile} from 'promisify-child-process';
import adbConfig from './adbConfig';
import adbkit, {Client} from 'adbkit';
diff --git a/desktop/app/src/server/devices/android/androidContainerUtility.tsx b/desktop/app/src/server/devices/android/androidContainerUtility.tsx
index 6c9db3440..28b859e52 100644
--- a/desktop/app/src/server/devices/android/androidContainerUtility.tsx
+++ b/desktop/app/src/server/devices/android/androidContainerUtility.tsx
@@ -7,7 +7,7 @@
* @format
*/
-import {UnsupportedError} from '../../../utils/metrics';
+import {UnsupportedError} from 'flipper-common';
import adbkit, {Client} from 'adbkit';
const allowedAppNameRegex = /^[\w.-]+$/;
diff --git a/desktop/app/src/server/devices/ios/iOSContainerUtility.tsx b/desktop/app/src/server/devices/ios/iOSContainerUtility.tsx
index 6f5f43fd7..d8e209b0b 100644
--- a/desktop/app/src/server/devices/ios/iOSContainerUtility.tsx
+++ b/desktop/app/src/server/devices/ios/iOSContainerUtility.tsx
@@ -10,7 +10,7 @@
import React from 'react';
import {Mutex} from 'async-mutex';
import {exec as unsafeExec, Output} from 'promisify-child-process';
-import {reportPlatformFailures} from '../../../utils/metrics';
+import {reportPlatformFailures} from 'flipper-common';
import {promises, constants} from 'fs';
import memoize from 'lodash.memoize';
import {notNull} from '../../utils/typeUtils';
diff --git a/desktop/app/src/server/utils/CertificateProvider.tsx b/desktop/app/src/server/utils/CertificateProvider.tsx
index ade555c7f..6116939b9 100644
--- a/desktop/app/src/server/utils/CertificateProvider.tsx
+++ b/desktop/app/src/server/utils/CertificateProvider.tsx
@@ -8,7 +8,7 @@
*/
import {Logger} from 'flipper-common';
-import {internGraphPOSTAPIRequest} from '../../fb-stubs/user';
+import {internGraphPOSTAPIRequest} from 'flipper-common';
import ServerController from '../comms/ServerController';
import {promisify} from 'util';
import fs from 'fs-extra';
@@ -20,7 +20,7 @@ import {
import path from 'path';
import tmp, {DirOptions, FileOptions} from 'tmp';
import iosUtil from '../devices/ios/iOSContainerUtility';
-import {reportPlatformFailures} from '../../utils/metrics';
+import {reportPlatformFailures} from 'flipper-common';
import {getAdbClient} from '../devices/android/adbClient';
import * as androidUtil from '../devices/android/androidContainerUtility';
import os from 'os';
@@ -113,7 +113,7 @@ export default class CertificateProvider {
this.logger = logger;
// TODO: refactor this code to create promise lazily
this._adb = config.enableAndroid
- ? (getAdbClient(config).catch((e) => {
+ ? (getAdbClient(config).catch((_e) => {
// make sure initialization failure is already logged
const msg =
'Failed to initialize ADB. Please disable Android support in settings, or configure a correct path';
diff --git a/desktop/app/src/utils/Idler.tsx b/desktop/app/src/utils/Idler.tsx
index aea5abcaf..9d32bd4a6 100644
--- a/desktop/app/src/utils/Idler.tsx
+++ b/desktop/app/src/utils/Idler.tsx
@@ -7,7 +7,7 @@
* @format
*/
-import {CancelledPromiseError} from './errors';
+import {CancelledPromiseError} from 'flipper-common';
import {Idler, sleep} from 'flipper-plugin';
export class IdlerImpl implements Idler {
diff --git a/desktop/app/src/utils/exportData.tsx b/desktop/app/src/utils/exportData.tsx
index 0d7fb0fed..ca6d81ddf 100644
--- a/desktop/app/src/utils/exportData.tsx
+++ b/desktop/app/src/utils/exportData.tsx
@@ -26,7 +26,7 @@ import fs from 'fs';
import {v4 as uuidv4} from 'uuid';
import {remote, OpenDialogOptions} from 'electron';
import {readCurrentRevision} from './packageMetadata';
-import {tryCatchReportPlatformFailures} from './metrics';
+import {tryCatchReportPlatformFailures} from 'flipper-common';
import {promisify} from 'util';
import {TestIdler} from './Idler';
import {setStaticView} from '../reducers/connections';
diff --git a/desktop/app/src/utils/runHealthchecks.tsx b/desktop/app/src/utils/runHealthchecks.tsx
index 0d49044c3..d568c343f 100644
--- a/desktop/app/src/utils/runHealthchecks.tsx
+++ b/desktop/app/src/utils/runHealthchecks.tsx
@@ -9,7 +9,7 @@
import {HealthcheckResult} from '../reducers/healthchecks';
import {getHealthchecks, getEnvInfo, Healthchecks} from 'flipper-doctor';
-import {logPlatformSuccessRate, reportPlatformFailures} from '../utils/metrics';
+import {logPlatformSuccessRate, reportPlatformFailures} from 'flipper-common';
let healthcheckIsRunning: boolean;
let runningHealthcheck: Promise;
diff --git a/desktop/app/src/utils/screenshot.tsx b/desktop/app/src/utils/screenshot.tsx
index 0b07b8297..c3588d08c 100644
--- a/desktop/app/src/utils/screenshot.tsx
+++ b/desktop/app/src/utils/screenshot.tsx
@@ -10,7 +10,7 @@
import fs from 'fs';
import path from 'path';
import BaseDevice from '../devices/BaseDevice';
-import {reportPlatformFailures} from './metrics';
+import {reportPlatformFailures} from 'flipper-common';
import expandTilde from 'expand-tilde';
import {remote} from 'electron';
import config from '../utils/processConfig';
diff --git a/desktop/flipper-common/src/index.tsx b/desktop/flipper-common/src/index.tsx
index 600569c15..e0631b9c2 100644
--- a/desktop/flipper-common/src/index.tsx
+++ b/desktop/flipper-common/src/index.tsx
@@ -20,3 +20,24 @@ export * from './server-types';
export {sleep} from './utils/sleep';
export {timeout} from './utils/timeout';
export {isTest} from './utils/isTest';
+export {
+ logPlatformSuccessRate,
+ reportPlatformFailures,
+ reportUsage,
+ reportPluginFailures,
+ tryCatchReportPlatformFailures,
+ tryCatchReportPluginFailures,
+ UnsupportedError,
+} from './utils/metrics';
+export {
+ ConnectivityError,
+ CancelledPromiseError,
+ UserUnauthorizedError,
+ UserNotSignedInError,
+ isConnectivityOrAuthError,
+ isError,
+ isAuthError,
+ getStringFromErrorLike,
+ getErrorFromErrorLike,
+} from './utils/errors';
+export * from './user-session';
diff --git a/desktop/flipper-common/src/user-session.tsx b/desktop/flipper-common/src/user-session.tsx
new file mode 100644
index 000000000..31aab511f
--- /dev/null
+++ b/desktop/flipper-common/src/user-session.tsx
@@ -0,0 +1,41 @@
+/**
+ * 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
+ */
+
+/**
+ * APIs need to integration with Facebook services.
+ */
+
+export type UserSessionManager = {
+ internGraphPOSTAPIRequest: typeof internGraphPOSTAPIRequest;
+};
+
+let instance: UserSessionManager | undefined = undefined;
+
+function getInstance(): UserSessionManager {
+ if (!instance) {
+ throw new Error('UserSessionManager not available or implemented');
+ }
+ return instance;
+}
+
+export function setUserSessionManagerInstance(i: UserSessionManager) {
+ instance = i;
+}
+
+export async function internGraphPOSTAPIRequest(
+ _endpoint: string,
+ _formFields: {
+ [key: string]: any;
+ } = {},
+ _internGraphUrl?: string,
+ _timeout?: number,
+): Promise {
+ // eslint-disable-next-line
+ return getInstance().internGraphPOSTAPIRequest.apply(null, arguments as any);
+}
diff --git a/desktop/app/src/utils/errors.tsx b/desktop/flipper-common/src/utils/errors.tsx
similarity index 96%
rename from desktop/app/src/utils/errors.tsx
rename to desktop/flipper-common/src/utils/errors.tsx
index dd3e95090..ace31c22f 100644
--- a/desktop/app/src/utils/errors.tsx
+++ b/desktop/flipper-common/src/utils/errors.tsx
@@ -7,8 +7,6 @@
* @format
*/
-import {InteractionReport} from 'flipper-plugin';
-
export function isAuthError(
err: any,
): err is UserNotSignedInError | UserUnauthorizedError {
@@ -61,7 +59,7 @@ export class UserNotSignedInError extends Error {
declare global {
interface Error {
- interaction?: InteractionReport;
+ interaction?: unknown;
}
}
diff --git a/desktop/app/src/utils/metrics.tsx b/desktop/flipper-common/src/utils/metrics.tsx
similarity index 99%
rename from desktop/app/src/utils/metrics.tsx
rename to desktop/flipper-common/src/utils/metrics.tsx
index 86cce2588..31f87e0ab 100644
--- a/desktop/app/src/utils/metrics.tsx
+++ b/desktop/flipper-common/src/utils/metrics.tsx
@@ -7,8 +7,8 @@
* @format
*/
-import {getLogger} from 'flipper-common';
import {CancelledPromiseError, isError} from './errors';
+import {getLogger} from './Logger';
type Result =
| {kind: 'success'}